Class: TwitterTweetBot::API::Authorization::SecureCode

Inherits:
Object
  • Object
show all
Defined in:
lib/twitter_tweet_bot/api/authorization/secure_code.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(code_verifier: nil, code_challenge_method: nil, state: nil) ⇒ SecureCode

Returns a new instance of SecureCode.



48
49
50
51
52
# File 'lib/twitter_tweet_bot/api/authorization/secure_code.rb', line 48

def initialize(code_verifier: nil, code_challenge_method: nil, state: nil)
  @code_verifier = code_verifier
  @code_challenge_method = code_challenge_method
  @state = state
end

Class Method Details

.code_challenge(verifier, challenge_method = DEFAULT_CHALLENGE_METHOD) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'lib/twitter_tweet_bot/api/authorization/secure_code.rb', line 22

def code_challenge(verifier, challenge_method = DEFAULT_CHALLENGE_METHOD)
  case challenge_method
  when 'S256'
    encode(
      Base64.urlsafe_encode64(digest_by_sha256(verifier), padding: false)
    )
  else # 'plain'
    encode(verifier)
  end
end

.code_verifier(size = DEFAULT_CHALLENGE_SIZE) ⇒ Object



14
15
16
# File 'lib/twitter_tweet_bot/api/authorization/secure_code.rb', line 14

def code_verifier(size = DEFAULT_CHALLENGE_SIZE)
  encode(random_chars(size))
end

.state(size = DEFAULT_STATE_SIZE) ⇒ Object



18
19
20
# File 'lib/twitter_tweet_bot/api/authorization/secure_code.rb', line 18

def state(size = DEFAULT_STATE_SIZE)
  encode(random_chars(size))
end

Instance Method Details

#code_challengeObject



58
59
60
61
# File 'lib/twitter_tweet_bot/api/authorization/secure_code.rb', line 58

def code_challenge
  @code_challenge ||= \
    self.class.code_challenge(code_verifier, code_challenge_method)
end

#code_challenge_methodObject



63
64
65
# File 'lib/twitter_tweet_bot/api/authorization/secure_code.rb', line 63

def code_challenge_method
  @code_challenge_method ||= DEFAULT_CHALLENGE_METHOD
end

#code_verifierObject



54
55
56
# File 'lib/twitter_tweet_bot/api/authorization/secure_code.rb', line 54

def code_verifier
  @code_verifier ||= self.class.code_verifier
end

#stateObject



67
68
69
# File 'lib/twitter_tweet_bot/api/authorization/secure_code.rb', line 67

def state
  @state ||= self.class.state
end