class AdriverApi::Client

Attributes

connection[R]
login[R]

Public Class Methods

new(login, pass, debug: false) click to toggle source
# File lib/adriver_api/client.rb, line 15
def initialize(login, pass, debug: false)
  @login = login
  @password = pass
  @debug = debug
  @connection = init_connection
  refresh_token
end

Private Instance Methods

init_connection() click to toggle source
# File lib/adriver_api/client.rb, line 38
def init_connection
  options = {
    :headers => {
      'Content-Type' => 'application/atom+xml',
      'X-Auth-Login' => @login.to_s,
      'X-Auth-UserID' => @user_id.to_s,
      'X-Auth-Passwd' => @token || @password.to_s
    }
    # :proxy => proxy,
  }

  Faraday::Connection.new(options) do |connection|
    connection.use Faraday::Request::UrlEncoded
    connection.use Faraday::Response::ParseXml
    connection.use FaradayMiddleware::RaiseHttpException
    connection.response :logger, @logger, :bodies => true if @debug
    connection.adapter Faraday.default_adapter
  end
end
make_request(url, **opts) click to toggle source
# File lib/adriver_api/client.rb, line 25
def make_request(url, **opts)
  url = "#{URL}/#{url}"
  begin
    retries ||= 0
    response = @connection.get url, opts
  rescue ::AdriverApi::UnAuthorized => e
    refresh_token
    retry if (retries += 1) < 3
    raise e
  end
  response
end
refresh_token() click to toggle source
# File lib/adriver_api/client.rb, line 58
def refresh_token
  url = "#{URL}/login"
  @token = nil
  @connection = init_connection
  response = @connection.get url
  @user_id = response.body["entry"]["userId"]
  @token = response.body["entry"]["token"]
  @connection = init_connection
end