class BRL::Auth::TokenService

Public Class Methods

new(connection: Connection.new) click to toggle source
# File lib/brl/auth/token_service.rb, line 6
def initialize(connection: Connection.new)
  @connection = connection
end

Private Class Methods

login_body() click to toggle source
# File lib/brl/auth/token_service.rb, line 22
def self.login_body
  URI.encode_www_form({ grant_type: "client_credentials", scope: "refresh_token" })
end

Public Instance Methods

retrieve() click to toggle source
# File lib/brl/auth/token_service.rb, line 10
def retrieve
  res = @connection.post(url: BRL::Auth::TOKEN_ENDPOINT, body: BRL::Auth::TokenService.login_body)

  return parse_response(res.body) if res.status == 200

  raise BRL::Auth::BadRequestError if res.status == 400
  raise BRL::Auth::InvalidCredentialsError if res.status == 401
  raise BRL::Auth::ServerError if res.status == 500
  raise BRL::Auth::UnexpectedError
end

Private Instance Methods

parse_response(res) click to toggle source
# File lib/brl/auth/token_service.rb, line 26
def parse_response(res)
  res = JSON.parse(res)

  BRL::Auth::Token.new(
    access_token:  res["access_token"],
    created_at:    Time.now.utc,
    expires_in:    res["expires_in"],
    refresh_token: res["refresh_token"],
    scope:         res["scope"],
    token_type:    res["token_type"]
  )
end