class Esi::OAuth
Attributes
access_token[R]
expires_at[R]
refresh_token[R]
Public Class Methods
client()
click to toggle source
# File lib/esi/o_auth.rb, line 22 def client @client ||= OAuth2::Client.new( Esi.config.client_id, Esi.config.client_secret, site: Esi.config.oauth_host ) end
new(access_token:, refresh_token:, expires_at:, callback: nil)
click to toggle source
# File lib/esi/o_auth.rb, line 30 def initialize(access_token:, refresh_token:, expires_at:, callback: nil) raise Esi::Error, 'Callback should be a callable Proc' if callback && !callback.respond_to?(:call) @access_token = access_token @refresh_token = refresh_token @expires_at = expires_at @callback = callback if callback end
obtain_token(code)
click to toggle source
# File lib/esi/o_auth.rb, line 16 def obtain_token(code) ActiveSupport::Notifications.instrument('esi.oauth.obtain_token') do Esi::AccessToken.new(client.auth_code.get_token(code)) end end
Private Instance Methods
refresh_access_token()
click to toggle source
# File lib/esi/o_auth.rb, line 48 def refresh_access_token ActiveSupport::Notifications.instrument('esi.oauth.refresh_token') do @token = @token.refresh! @access_token = @token.token @expires_at = @token.expires_at.integer? ? Time.at(@token.expires_at) : @token.expires_at @callback&.call(@access_token, @expires_at) end end
token()
click to toggle source
# File lib/esi/o_auth.rb, line 41 def token @token = Esi::AccessToken.new(OAuth.client, @access_token, refresh_token: @refresh_token, expires_at: @expires_at) refresh_access_token if @token.expired? @token end