Class: Printavo::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/printavo/connection.rb

Instance Method Summary collapse

Constructor Details

#initialize(email:, token:, base_url: Config::BASE_URL, timeout: 30, max_retries: 2, retry_on_rate_limit: true) ⇒ Connection

Returns a new instance of Connection.

Parameters:

  • email (String)

    Printavo account email

  • token (String)

    Printavo API token

  • base_url (String) (defaults to: Config::BASE_URL)

    API base URL (default: Config::BASE_URL)

  • timeout (Integer) (defaults to: 30)

    HTTP timeout in seconds (default: 30)

  • max_retries (Integer) (defaults to: 2)

    Max retry attempts on 5xx/429 (default: 2)

  • retry_on_rate_limit (Boolean) (defaults to: true)

    Retry on 429 Too Many Requests (default: true)



15
16
17
18
19
20
21
22
23
# File 'lib/printavo/connection.rb', line 15

def initialize(email:, token:, base_url: Config::BASE_URL, timeout: 30, # rubocop:disable Metrics/ParameterLists
               max_retries: 2, retry_on_rate_limit: true)
  @email               = email
  @token               = token
  @base_url            = base_url
  @timeout             = timeout
  @max_retries         = max_retries
  @retry_on_rate_limit = retry_on_rate_limit
end

Instance Method Details

#buildObject



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/printavo/connection.rb', line 25

def build
  Faraday.new(url: @base_url) do |f|
    f.headers['Content-Type'] = 'application/json'
    f.headers['Accept']       = 'application/json'
    f.headers['email']        = @email
    f.headers['token']        = @token
    f.request :retry, **retry_options
    f.response :json
    f.options.timeout      = @timeout
    f.options.open_timeout = @timeout
    f.adapter Faraday.default_adapter
  end
end