class AutoExpreso::Client

Constants

BASE_URL
ENDPOINTS
USER_AGENT

Attributes

account[R]
jwt_header[RW]

Public Class Methods

new(*args) click to toggle source
# File lib/autoexpreso.rb, line 26
def initialize(*args)
  @account = Hash.new
end

Public Instance Methods

account_details(json: false) click to toggle source
# File lib/autoexpreso.rb, line 35
def account_details(json: false)
  if json
    puts JSON.pretty_generate(account)
  else
    ap account
  end
end
login(email, password) click to toggle source
# File lib/autoexpreso.rb, line 30
def login(email, password)
  authenticate(email, password)
  account_summary
end

Protected Instance Methods

account_summary() click to toggle source
# File lib/autoexpreso.rb, line 73
def account_summary
  response = default_connection.get do |req|
               req.url(ENDPOINTS[:account_summary])
             end

  if response.success?
    @response_body = JSON.parse(response.body)
    @account = @response_body
  end
end
authenticate(email, password) click to toggle source
# File lib/autoexpreso.rb, line 59
def authenticate(email, password)
  payload = { email: email, password: password }

  response = default_connection.post do |req|
               req.url(ENDPOINTS[:login])
               req.body = JSON.generate(payload)
             end

  if response.success?
    @response_body = JSON.parse(response.body, object_class: OpenStruct)
    @jwt_header = @response_body.accessToken
  end
end
authorization_header() click to toggle source
# File lib/autoexpreso.rb, line 45
def authorization_header
  "Bearer #{jwt_header}"
end
default_connection(debug = false) click to toggle source
# File lib/autoexpreso.rb, line 49
def default_connection(debug = false)
  Faraday.new(url: BASE_URL) do |conn|
    conn.adapter :typhoeus
    conn.headers[:user_agent] = USER_AGENT
    conn.headers[:content_type] = 'application/json'
    conn.headers['Authorization'] = authorization_header if @jwt_header
    conn.response :logger if debug
  end
end