Class: OAuth2::AccessToken
- Inherits:
-
Object
- Object
- OAuth2::AccessToken
- Defined in:
- lib/oauth2/access_token.rb
Overview
rubocop:disable Metrics/ClassLength
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
- .contains_token?(hash) ⇒ Boolean
-
.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
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/oauth2/access_token.rb', line 47 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 @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.
5 6 7 |
# File 'lib/oauth2/access_token.rb', line 5 def client @client end |
#expires_at ⇒ Object (readonly)
Returns the value of attribute expires_at.
5 6 7 |
# File 'lib/oauth2/access_token.rb', line 5 def expires_at @expires_at end |
#expires_in ⇒ Object (readonly)
Returns the value of attribute expires_in.
5 6 7 |
# File 'lib/oauth2/access_token.rb', line 5 def expires_in @expires_in end |
#expires_latency ⇒ Object (readonly)
Returns the value of attribute expires_latency.
5 6 7 |
# File 'lib/oauth2/access_token.rb', line 5 def expires_latency @expires_latency end |
#options ⇒ Object
Returns the value of attribute options.
6 7 8 |
# File 'lib/oauth2/access_token.rb', line 6 def @options end |
#params ⇒ Object (readonly)
Returns the value of attribute params.
5 6 7 |
# File 'lib/oauth2/access_token.rb', line 5 def params @params end |
#refresh_token ⇒ Object
Returns the value of attribute refresh_token.
6 7 8 |
# File 'lib/oauth2/access_token.rb', line 6 def refresh_token @refresh_token end |
#response ⇒ Object
Returns the value of attribute response.
6 7 8 |
# File 'lib/oauth2/access_token.rb', line 6 def response @response end |
#token ⇒ Object (readonly)
Returns the value of attribute token.
5 6 7 |
# File 'lib/oauth2/access_token.rb', line 5 def token @token end |
Class Method Details
.contains_token?(hash) ⇒ Boolean
28 29 30 |
# File 'lib/oauth2/access_token.rb', line 28 def contains_token?(hash) hash.key?('access_token') || hash.key?('id_token') || hash.key?('token') end |
.from_hash(client, hash) ⇒ AccessToken
Initializes an AccessToken from a Hash
14 15 16 17 |
# File 'lib/oauth2/access_token.rb', line 14 def from_hash(client, hash) hash = hash.dup new(client, hash.delete('access_token') || hash.delete(:access_token) || hash.delete('token') || hash.delete(:token), hash) end |
.from_kvform(client, kvform) ⇒ AccessToken
Initializes an AccessToken from a key/value application/x-www-form-urlencoded string
24 25 26 |
# File 'lib/oauth2/access_token.rb', line 24 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
69 70 71 |
# File 'lib/oauth2/access_token.rb', line 69 def [](key) @params[key] end |
#delete(path, opts = {}, &block) ⇒ Object
Make a DELETE request with the Access Token
154 155 156 |
# File 'lib/oauth2/access_token.rb', line 154 def delete(path, opts = {}, &block) request(:delete, path, opts, &block) end |
#expired? ⇒ Boolean
Whether or not the token is expired
83 84 85 |
# File 'lib/oauth2/access_token.rb', line 83 def expired? expires? && (expires_at <= Time.now.to_i) end |
#expires? ⇒ Boolean
Whether or not the token expires
76 77 78 |
# File 'lib/oauth2/access_token.rb', line 76 def expires? !!@expires_at end |
#get(path, opts = {}, &block) ⇒ Object
Make a GET request with the Access Token
126 127 128 |
# File 'lib/oauth2/access_token.rb', line 126 def get(path, opts = {}, &block) request(:get, path, opts, &block) end |
#headers ⇒ Object
Get the headers hash (includes Authorization token)
159 160 161 |
# File 'lib/oauth2/access_token.rb', line 159 def headers {'Authorization' => [:header_format] % token} end |
#patch(path, opts = {}, &block) ⇒ Object
Make a PATCH request with the Access Token
147 148 149 |
# File 'lib/oauth2/access_token.rb', line 147 def patch(path, opts = {}, &block) request(:patch, path, opts, &block) end |
#post(path, opts = {}, &block) ⇒ Object
Make a POST request with the Access Token
133 134 135 |
# File 'lib/oauth2/access_token.rb', line 133 def post(path, opts = {}, &block) request(:post, path, opts, &block) end |
#put(path, opts = {}, &block) ⇒ Object
Make a PUT request with the Access Token
140 141 142 |
# File 'lib/oauth2/access_token.rb', line 140 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
91 92 93 94 95 96 97 98 99 100 |
# File 'lib/oauth2/access_token.rb', line 91 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. = new_token.refresh_token = refresh_token unless new_token.refresh_token new_token end |
#request(verb, path, opts = {}, &block) ⇒ Object
Make a request with the Access Token
118 119 120 121 |
# File 'lib/oauth2/access_token.rb', line 118 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
108 109 110 |
# File 'lib/oauth2/access_token.rb', line 108 def to_hash params.merge(access_token: token, refresh_token: refresh_token, expires_at: expires_at) end |