Class: Fieldhand::Options

Inherits:
Object
  • Object
show all
Defined in:
lib/fieldhand/options.rb

Overview

A wrapper around Repository and Paginator options for backward-compatibility.

In short, this handles passing a Logger directly or passing it and a timeout as a hash. Note this attempts to preserve the previous behaviour of passing nil/falsey values as a logger even though this will cause errors if someone tries to use it that way.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logger_or_options = {}) ⇒ Options

Return a new, normalized set of options based on the given value.

This supports both a ‘Logger`-compatible object to use for logging directly and a hash of options:

  • :logger - A ‘Logger`-compatible class for logging the activity of the library, defaults to a platform-specific

    null logger
    
  • :timeout - A ‘Numeric` number of seconds to wait for any HTTP requests, defaults to 60 seconds

  • :retries - A ‘Numeric` maximum number of times a request is retried before erroring, defaults to 0

  • :interval - A ‘Numeric` number of seconds before an erroring request is retried, defaults to 10

  • :bearer_token - A ‘String` bearer token to use when sending any HTTP requests, defaults to nil

  • :headers - A ‘Hash` containing custom HTTP headers, defaults to {}.



25
26
27
# File 'lib/fieldhand/options.rb', line 25

def initialize(logger_or_options = {})
  @logger_or_options = logger_or_options
end

Instance Attribute Details

#logger_or_optionsObject (readonly)

Returns the value of attribute logger_or_options.



12
13
14
# File 'lib/fieldhand/options.rb', line 12

def logger_or_options
  @logger_or_options
end

Instance Method Details

#bearer_tokenObject

Return the current bearer token.



50
51
52
# File 'lib/fieldhand/options.rb', line 50

def bearer_token
  options[:bearer_token]
end

#headersObject

Build custom headers



55
56
57
58
59
60
# File 'lib/fieldhand/options.rb', line 55

def headers
  headers = options.fetch(:headers, {})
  headers['Authorization'] = "Bearer #{bearer_token}" if bearer_token

  headers
end

#intervalObject

Return the current retry interval in seconds.



45
46
47
# File 'lib/fieldhand/options.rb', line 45

def interval
  options.fetch(:interval, 10)
end

#loggerObject

Return the current logger.



35
36
37
# File 'lib/fieldhand/options.rb', line 35

def logger
  options.fetch(:logger) { Logger.null }
end

#retriesObject

Return the current maximum number of retries.



40
41
42
# File 'lib/fieldhand/options.rb', line 40

def retries
  options.fetch(:retries, 0)
end

#timeoutObject

Return the current timeout in seconds.



30
31
32
# File 'lib/fieldhand/options.rb', line 30

def timeout
  options.fetch(:timeout, 60)
end