class ADM::AccessToken

Attributes

client_id[R]
client_secret[R]
token[R]

Public Class Methods

fetch(client_id=nil, client_secret=nil) click to toggle source
# File lib/adm/access_token.rb, line 20
def self.fetch client_id=nil, client_secret=nil
  client_id ||= ADM.client_id
  client_secret ||= ADM.client_secret
  data = request_data client_id, client_secret

  if data['error']
    raise TokenGetError, response.body
  end

  new(data)
end
get_token() click to toggle source
# File lib/adm/access_token.rb, line 51
def self.get_token
  if @token && @token.valid?
    return @token.token
  end

  @token = fetch

  @token.token
end
new(opts) click to toggle source
# File lib/adm/access_token.rb, line 5
def initialize opts
  @token      = opts['access_token']
  @expires_at = Time.now+opts['expires_in'].to_i
  @type       = opts['token_type']
  @scope      = opts['scope']
end
request_data(client_id, client_secret) click to toggle source
# File lib/adm/access_token.rb, line 32
def self.request_data client_id, client_secret
  request = Typhoeus::Request.new(
    'https://api.amazon.com/auth/O2/token',
    method: :post,
    body: {
      grant_type: :'client_credentials',
      scope: :'messaging:push',
      client_id: client_id,
      client_secret: client_secret
    },
    headers: {
      :Accept => :'application/json'
    }
  )
  response = request.run

  MultiJson.load(response.body)
end

Public Instance Methods

to_s() click to toggle source
# File lib/adm/access_token.rb, line 12
def to_s
  token
end
valid?() click to toggle source
# File lib/adm/access_token.rb, line 16
def valid?
  @expires_at < Time.now
end