class Box::Session

Constants

OAUTH2_URLS

Attributes

on_token_refresh[RW]
access_token[RW]
client_id[RW]
client_secret[RW]
config[RW]
oauth2_access_token[RW]
on_token_refresh[RW]
refresh_token[RW]

Public Class Methods

new(config = {}) click to toggle source
# 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

Public Instance Methods

aquire_access_token(code) click to toggle source

@return [OAuth2::AccessToken]

# 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 = {}) click to toggle source

{redirect_uri: value}

# File lib/box/session.rb, line 37
def authorize_url(options = {})
  oauth2_client.auth_code.authorize_url(options)
end
oauth2_client() click to toggle source
# File lib/box/session.rb, line 31
def oauth2_client
  OAuth2::Client.new(@client_id, @client_secret, OAUTH2_URLS.dup)
end
refresh_token!() click to toggle source
# 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!() click to toggle source
# File lib/box/session.rb, line 48
def set_tokens!
  @access_token  = @oauth2_access_token.token
  @refresh_token = @oauth2_access_token.refresh_token
end