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

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



20
21
22
# File 'lib/fieldhand/options.rb', line 20

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.



10
11
12
# File 'lib/fieldhand/options.rb', line 10

def logger_or_options
  @logger_or_options
end

Instance Method Details

#bearer_tokenObject

Return the current bearer token.



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

def bearer_token
  options[:bearer_token]
end

#loggerObject

Return the current logger.



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

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

#timeoutObject

Return the current timeout in seconds.



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

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