Class: Oauth2Rails::Client

Inherits:
Base
  • Object
show all
Defined in:
lib/oauth2_rails/client.rb

Direct Known Subclasses

Fitbit

Instance Method Summary collapse

Methods inherited from Base

#call, #connection

Constructor Details

#initialize(user, options = {}) ⇒ Client

Returns a new instance of Client.



7
8
9
10
# File 'lib/oauth2_rails/client.rb', line 7

def initialize(user, options = {})
  super(options)
  @user = user
end

Instance Method Details

#api_call(destination) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/oauth2_rails/client.rb', line 12

def api_call(destination)
  begin
    call(:get, destination, user: @user.access_token)
  rescue Oauth2Rails::Errors::Unauthorized
    refresh
    call(:get, destination, user: @user.access_token)
  end
end

#refreshObject



21
22
23
24
25
26
27
# File 'lib/oauth2_rails/client.rb', line 21

def refresh
  response = call(:post, "#{@token_path}?grant_type=refresh_token&refresh_token=#{@user.refresh_token}")
  @user.update!(
    access_token: response.access_token, refresh_token: response.refresh_token,
    expiry: Time.now + response.expires_every
  )
end