Class: Transferwise::OAuth

Inherits:
Object
  • Object
show all
Defined in:
lib/transferwise/oauth.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client_id, client_secret) ⇒ OAuth

Returns a new instance of OAuth.



5
6
7
# File 'lib/transferwise/oauth.rb', line 5

def initialize(client_id, client_secret)
  @client_id, @client_secret = client_id, client_secret
end

Instance Attribute Details

#access_tokenObject

Returns the value of attribute access_token.



3
4
5
# File 'lib/transferwise/oauth.rb', line 3

def access_token
  @access_token
end

Instance Method Details

#authorize_clientObject



20
21
22
23
24
25
26
27
28
# File 'lib/transferwise/oauth.rb', line 20

def authorize_client
  @authorize_client ||= ::OAuth2::Client.new(
    @client_id,
    @client_secret,
    { site: Transferwise.authorization_base,
      auth_scheme: :basic_auth
    }
  )
end

#authorize_url(redirect_url) ⇒ Object

Get the url to redirect a user to, pass the redirect_url you want the user to be redirected back to.



32
33
34
# File 'lib/transferwise/oauth.rb', line 32

def authorize_url(redirect_url)
  authorize_client.auth_code.authorize_url({redirect_uri: redirect_url})
end

#clientObject

Get the OAuth 2 client



10
11
12
13
14
15
16
17
18
# File 'lib/transferwise/oauth.rb', line 10

def client
  @client ||= ::OAuth2::Client.new(
    @client_id,
    @client_secret,
    { site: Transferwise.api_base,
      auth_scheme: :basic_auth
    }
  )
end

#get_access_token(code, redirect_url) ⇒ Object

Get the access token. You must pass the exact same redirect_url passed to the authorize_url method



38
39
40
# File 'lib/transferwise/oauth.rb', line 38

def get_access_token(code, redirect_url)
  @access_token ||= client.auth_code.get_token(code, redirect_uri: redirect_url)
end

#refresh_token(access_token, opts = {}) ⇒ Object

This method is used to refresh the access token before it expires



43
44
45
# File 'lib/transferwise/oauth.rb', line 43

def refresh_token(access_token, opts = {})
  OAuth2::AccessToken.new(client, access_token, opts).refresh!
end