Class: Box::Session

Inherits:
Object
  • Object
show all
Extended by:
Memoist
Defined in:
lib/box/session.rb

Constant Summary collapse

OAUTH2_URLS =
{
  site:          'https://www.box.com',
  authorize_url: '/api/oauth2/authorize',
  token_url:     '/api/oauth2/token'
}

Class Attribute Summary collapse

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ Session

Returns a new instance of Session.



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/box/session.rb', line 18

def initialize(config = {})
  @config = config
  # We must have at least these variables
  @client_id     = config[:client_id]
  @client_secret = config[:client_secret]
  @access_token  = config[:access_token]
  @refresh_token = config[:refresh_token]

  if @access_token
    @oauth2_access_token = OAuth2::AccessToken.new(oauth2_client, @access_token, {refresh_token: @refresh_token})
  end
end

Class Attribute Details

.on_token_refreshObject

Returns the value of attribute on_token_refresh.



8
9
10
# File 'lib/box/session.rb', line 8

def on_token_refresh
  @on_token_refresh
end

Instance Attribute Details

#access_tokenObject

Returns the value of attribute access_token.



4
5
6
# File 'lib/box/session.rb', line 4

def access_token
  @access_token
end

#client_idObject

Returns the value of attribute client_id.



4
5
6
# File 'lib/box/session.rb', line 4

def client_id
  @client_id
end

#client_secretObject

Returns the value of attribute client_secret.



4
5
6
# File 'lib/box/session.rb', line 4

def client_secret
  @client_secret
end

#configObject

Returns the value of attribute config.



5
6
7
# File 'lib/box/session.rb', line 5

def config
  @config
end

#oauth2_access_tokenObject

Returns the value of attribute oauth2_access_token.



4
5
6
# File 'lib/box/session.rb', line 4

def oauth2_access_token
  @oauth2_access_token
end

#on_token_refreshObject

Returns the value of attribute on_token_refresh.



4
5
6
# File 'lib/box/session.rb', line 4

def on_token_refresh
  @on_token_refresh
end

#refresh_tokenObject

Returns the value of attribute refresh_token.



4
5
6
# File 'lib/box/session.rb', line 4

def refresh_token
  @refresh_token
end

Instance Method Details

#aquire_access_token(code) ⇒ OAuth2::AccessToken

Returns:

  • (OAuth2::AccessToken)


42
43
44
45
46
# File 'lib/box/session.rb', line 42

def aquire_access_token(code)
  @oauth2_access_token = oauth2_client.auth_code.get_token(code)
  set_tokens!
  @oauth2_access_token
end

#authorize_url(options = {}) ⇒ Object

value



37
38
39
# File 'lib/box/session.rb', line 37

def authorize_url(options = {})
  oauth2_client.auth_code.authorize_url(options)
end

#oauth2_clientObject



31
32
33
# File 'lib/box/session.rb', line 31

def oauth2_client
  OAuth2::Client.new(@client_id, @client_secret, OAUTH2_URLS.dup)
end

#refresh_token!Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/box/session.rb', line 53

def refresh_token!
  @oauth2_access_token = @oauth2_access_token.refresh!
  set_tokens!
  Box::Session.on_token_refresh.call(@oauth2_access_token.token, @oauth2_access_token.refresh_token)
  @oauth2_access_token
rescue OAuth2::Error => e
  if e.code == 'invalid_client' || ((e.code == 'invalid_grant') && (e.description == 'Refresh token has expired' || e.description == 'Invalid refresh token'))
    raise e if @config[:disable_auth]
    Box.log "Error authenticating Box -> #{e.message}"
    Box.log 'Attempting to reauthorize and get new tokens'
    @oauth2_access_token = Box::Authorization.authorize(config)
    set_tokens!
    return @oauth2_access_token
  else
    raise e
  end
end

#set_tokens!Object



48
49
50
51
# File 'lib/box/session.rb', line 48

def set_tokens!
  @access_token  = @oauth2_access_token.token
  @refresh_token = @oauth2_access_token.refresh_token
end