Class: OAuth2::AccessToken
- Inherits:
-
Object
- Object
- OAuth2::AccessToken
- Defined in:
- lib/oauth2/access_token.rb
Overview
rubocop:disable Metrics/ClassLength
Constant Summary collapse
- TOKEN_KEYS_STR =
%w[access_token id_token token accessToken idToken].freeze
- TOKEN_KEYS_SYM =
%i[access_token id_token token accessToken idToken].freeze
- TOKEN_KEY_LOOKUP =
TOKEN_KEYS_STR + TOKEN_KEYS_SYM
Instance Attribute Summary collapse
-
#client ⇒ Object
readonly
Returns the value of attribute client.
-
#expires_at ⇒ Object
readonly
Returns the value of attribute expires_at.
-
#expires_in ⇒ Object
readonly
Returns the value of attribute expires_in.
-
#expires_latency ⇒ Object
readonly
Returns the value of attribute expires_latency.
-
#options ⇒ Object
Returns the value of attribute options.
-
#params ⇒ Object
readonly
Returns the value of attribute params.
-
#refresh_token ⇒ Object
Returns the value of attribute refresh_token.
-
#response ⇒ Object
Returns the value of attribute response.
-
#token ⇒ Object
readonly
Returns the value of attribute token.
Class Method Summary collapse
-
.from_hash(client, hash) ⇒ AccessToken
Initializes an AccessToken from a Hash.
-
.from_kvform(client, kvform) ⇒ AccessToken
Initializes an AccessToken from a key/value application/x-www-form-urlencoded string.
Instance Method Summary collapse
-
#[](key) ⇒ Object
Indexer to additional params present in token response.
-
#delete(path, opts = {}, &block) ⇒ Object
Make a DELETE request with the Access Token.
-
#expired? ⇒ Boolean
Whether or not the token is expired.
-
#expires? ⇒ Boolean
Whether or not the token expires.
-
#get(path, opts = {}, &block) ⇒ Object
Make a GET request with the Access Token.
-
#headers ⇒ Object
Get the headers hash (includes Authorization token).
-
#initialize(client, token, opts = {}) ⇒ AccessToken
constructor
Initialize an AccessToken.
-
#patch(path, opts = {}, &block) ⇒ Object
Make a PATCH request with the Access Token.
-
#post(path, opts = {}, &block) ⇒ Object
Make a POST request with the Access Token.
-
#put(path, opts = {}, &block) ⇒ Object
Make a PUT request with the Access Token.
-
#refresh(params = {}, access_token_opts = {}) ⇒ AccessToken
(also: #refresh!)
Refreshes the current Access Token.
-
#request(verb, path, opts = {}, &block) ⇒ Object
Make a request with the Access Token.
-
#to_hash ⇒ Hash
Convert AccessToken to a hash which can be used to rebuild itself with AccessToken.from_hash.
Constructor Details
#initialize(client, token, opts = {}) ⇒ AccessToken
Initialize an AccessToken
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/oauth2/access_token.rb', line 62 def initialize(client, token, opts = {}) @client = client @token = token.to_s opts = opts.dup %i[refresh_token expires_in expires_at expires_latency].each do |arg| instance_variable_set("@#{arg}", opts.delete(arg) || opts.delete(arg.to_s)) end no_tokens = (@token.nil? || @token.empty?) && (@refresh_token.nil? || @refresh_token.empty?) if no_tokens if @client.[:raise_errors] error = Error.new(opts) raise(error) else warn('OAuth2::AccessToken has no token') end end # @option opts [Fixnum, String] :expires is deprecated @expires_in ||= opts.delete('expires') @expires_in &&= @expires_in.to_i @expires_at &&= convert_expires_at(@expires_at) @expires_latency &&= @expires_latency.to_i @expires_at ||= Time.now.to_i + @expires_in if @expires_in @expires_at -= @expires_latency if @expires_latency @options = {mode: opts.delete(:mode) || :header, header_format: opts.delete(:header_format) || 'Bearer %s', param_name: opts.delete(:param_name) || 'access_token'} @params = opts end |
Instance Attribute Details
#client ⇒ Object (readonly)
Returns the value of attribute client.
9 10 11 |
# File 'lib/oauth2/access_token.rb', line 9 def client @client end |
#expires_at ⇒ Object (readonly)
Returns the value of attribute expires_at.
9 10 11 |
# File 'lib/oauth2/access_token.rb', line 9 def expires_at @expires_at end |
#expires_in ⇒ Object (readonly)
Returns the value of attribute expires_in.
9 10 11 |
# File 'lib/oauth2/access_token.rb', line 9 def expires_in @expires_in end |
#expires_latency ⇒ Object (readonly)
Returns the value of attribute expires_latency.
9 10 11 |
# File 'lib/oauth2/access_token.rb', line 9 def expires_latency @expires_latency end |
#options ⇒ Object
Returns the value of attribute options.
10 11 12 |
# File 'lib/oauth2/access_token.rb', line 10 def @options end |
#params ⇒ Object (readonly)
Returns the value of attribute params.
9 10 11 |
# File 'lib/oauth2/access_token.rb', line 9 def params @params end |
#refresh_token ⇒ Object
Returns the value of attribute refresh_token.
10 11 12 |
# File 'lib/oauth2/access_token.rb', line 10 def refresh_token @refresh_token end |
#response ⇒ Object
Returns the value of attribute response.
10 11 12 |
# File 'lib/oauth2/access_token.rb', line 10 def response @response end |
#token ⇒ Object (readonly)
Returns the value of attribute token.
9 10 11 |
# File 'lib/oauth2/access_token.rb', line 9 def token @token end |
Class Method Details
.from_hash(client, hash) ⇒ AccessToken
Initializes an AccessToken from a Hash
19 20 21 22 23 24 25 26 |
# File 'lib/oauth2/access_token.rb', line 19 def from_hash(client, hash) fresh = hash.dup supported_keys = TOKEN_KEY_LOOKUP & fresh.keys key = supported_keys[0] extra_tokens_warning(supported_keys, key) token = fresh.delete(key) new(client, token, fresh) end |
.from_kvform(client, kvform) ⇒ AccessToken
Initializes an AccessToken from a key/value application/x-www-form-urlencoded string
33 34 35 |
# File 'lib/oauth2/access_token.rb', line 33 def from_kvform(client, kvform) from_hash(client, Rack::Utils.parse_query(kvform)) end |
Instance Method Details
#[](key) ⇒ Object
Indexer to additional params present in token response
95 96 97 |
# File 'lib/oauth2/access_token.rb', line 95 def [](key) @params[key] end |
#delete(path, opts = {}, &block) ⇒ Object
Make a DELETE request with the Access Token
184 185 186 |
# File 'lib/oauth2/access_token.rb', line 184 def delete(path, opts = {}, &block) request(:delete, path, opts, &block) end |
#expired? ⇒ Boolean
Whether or not the token is expired
109 110 111 |
# File 'lib/oauth2/access_token.rb', line 109 def expired? expires? && (expires_at <= Time.now.to_i) end |
#expires? ⇒ Boolean
Whether or not the token expires
102 103 104 |
# File 'lib/oauth2/access_token.rb', line 102 def expires? !!@expires_at end |
#get(path, opts = {}, &block) ⇒ Object
Make a GET request with the Access Token
156 157 158 |
# File 'lib/oauth2/access_token.rb', line 156 def get(path, opts = {}, &block) request(:get, path, opts, &block) end |
#headers ⇒ Object
Get the headers hash (includes Authorization token)
189 190 191 |
# File 'lib/oauth2/access_token.rb', line 189 def headers {'Authorization' => [:header_format] % token} end |
#patch(path, opts = {}, &block) ⇒ Object
Make a PATCH request with the Access Token
177 178 179 |
# File 'lib/oauth2/access_token.rb', line 177 def patch(path, opts = {}, &block) request(:patch, path, opts, &block) end |
#post(path, opts = {}, &block) ⇒ Object
Make a POST request with the Access Token
163 164 165 |
# File 'lib/oauth2/access_token.rb', line 163 def post(path, opts = {}, &block) request(:post, path, opts, &block) end |
#put(path, opts = {}, &block) ⇒ Object
Make a PUT request with the Access Token
170 171 172 |
# File 'lib/oauth2/access_token.rb', line 170 def put(path, opts = {}, &block) request(:put, path, opts, &block) end |
#refresh(params = {}, access_token_opts = {}) ⇒ AccessToken Also known as: refresh!
options should be carried over to the new AccessToken
Refreshes the current Access Token
117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/oauth2/access_token.rb', line 117 def refresh(params = {}, access_token_opts = {}) raise('A refresh_token is not available') unless refresh_token params[:grant_type] = 'refresh_token' params[:refresh_token] = refresh_token new_token = @client.get_token(params, access_token_opts) new_token. = if new_token.refresh_token # Keep it, if there is one else new_token.refresh_token = refresh_token end new_token end |
#request(verb, path, opts = {}, &block) ⇒ Object
Make a request with the Access Token
148 149 150 151 |
# File 'lib/oauth2/access_token.rb', line 148 def request(verb, path, opts = {}, &block) configure_authentication!(opts) @client.request(verb, path, opts, &block) end |
#to_hash ⇒ Hash
Convert AccessToken to a hash which can be used to rebuild itself with AccessToken.from_hash
138 139 140 |
# File 'lib/oauth2/access_token.rb', line 138 def to_hash params.merge(access_token: token, refresh_token: refresh_token, expires_at: expires_at) end |