class Helpscout::Api::Auth::Token

Attributes

access_token[R]

Public Class Methods

new(endpoint: 'https://api.helpscout.net/v2/oauth2/token', client_id:, client_secret:, expires_in: 300) click to toggle source
# File lib/helpscout/api/auth/token.rb, line 12
def initialize(endpoint: 'https://api.helpscout.net/v2/oauth2/token', client_id:, client_secret:, expires_in: 300)
  @endpoint = endpoint
  @expires_in = Time.now + expires_in
  @credentials = URI.encode_www_form(client_id: client_id, client_secret: client_secret, grant_type: 'client_credentials')
  get_token
end

Public Instance Methods

refresh() click to toggle source
# File lib/helpscout/api/auth/token.rb, line 19
def refresh
  get_token if is_expired? || @access_token.nil?
  @access_token
end
to_s() click to toggle source
# File lib/helpscout/api/auth/token.rb, line 24
def to_s
  "Bearer #{@access_token}"
end

Private Instance Methods

get_token() click to toggle source
# File lib/helpscout/api/auth/token.rb, line 30
def get_token
  res = Net::HTTP.post(URI(@endpoint), @credentials, { 'Content-Type': 'application/x-www-form-urlencoded' }.freeze)
  parsed = JSON.parse(res.body)
  @expires_in = Time.now.to_i + parsed['expires_in'].to_i
  @access_token = parsed['access_token']
end
is_expired?() click to toggle source
# File lib/helpscout/api/auth/token.rb, line 37
def is_expired?
  @expires_in.to_i <= Time.now.to_i
end