Module: Booqable::Default

Defined in:
lib/booqable/default.rb

Overview

Default configuration options for Client

Provides default values for all configuration options, with support for environment variable overrides. All defaults can be overridden by setting the appropriate environment variables.

Examples:

Environment variable configuration

ENV["BOOQABLE_API_KEY"] = "your_api_key"
ENV["BOOQABLE_COMPANY_ID"] = "your_company_id"
ENV["BOOQABLE_PER_PAGE"] = "50"

Constant Summary collapse

USER_AGENT =

Default User Agent header string

"Booqable Ruby Gem #{Booqable::VERSION}"
MEDIA_TYPE =

Default media type (json:api) for requests

"application/vnd.api+json"
RETRY_OPTIONS =

Default retry options for Faraday::Retry middleware

{
  exceptions: Faraday::Retry::Middleware::DEFAULT_EXCEPTIONS + [ Booqable::ServerError ],
  max: 2, # maximum number of retries (total of 3 attempts including the first)
  interval: 2, # seconds to wait before retrying
  interval_randomness: 0.5, # randomize the interval by this amount
  backoff_factor: 2 # multiply the interval by this factor on each retry
}
MIDDLEWARE =

Basic middleware stack for Faraday::Connection (without authentication middleware)

Faraday::RackBuilder.new do |builder|
  # Retry middleware
  builder.use Faraday::Retry::Middleware, RETRY_OPTIONS
  # Error handling middleware
  builder.use Booqable::Middleware::RaiseError

  builder.adapter Faraday.default_adapter
end

Class Method Summary collapse

Class Method Details

.api_domainString

Default API endpoint from ENV

Returns:

  • (String)


48
49
50
# File 'lib/booqable/default.rb', line 48

def api_domain
  ENV.fetch("BOOQABLE_API_DOMAIN", "booqable.com")
end

.api_endpointString?

Default API endpoint from ENV

Returns:

  • (String, nil)

    Full API endpoint URL or nil to construct from domain



60
61
62
# File 'lib/booqable/default.rb', line 60

def api_endpoint
  ENV.fetch("BOOQABLE_API_ENDPOINT", nil)
end

.api_keyString?

Default API key from ENV

Returns:

  • (String, nil)

    API key for authentication



156
157
158
# File 'lib/booqable/default.rb', line 156

def api_key
  ENV.fetch("BOOQABLE_API_KEY", nil)
end

.api_versionInteger

Default API version from ENV

Returns:

  • (Integer)

    API version number



54
55
56
# File 'lib/booqable/default.rb', line 54

def api_version
  ENV.fetch("BOOQABLE_API_VERSION", 4)
end

.auto_paginateString

Default pagination preference from ENV

Returns:

  • (String)


66
67
68
# File 'lib/booqable/default.rb', line 66

def auto_paginate
  ENV.fetch("BOOQABLE_AUTO_PAGINATE", nil)
end

.client_idString

Default OAuth app key from ENV

Returns:

  • (String)


72
73
74
# File 'lib/booqable/default.rb', line 72

def client_id
  ENV.fetch("BOOQABLE_CLIENT_ID", nil)
end

.client_secretString

Default OAuth app secret from ENV

Returns:

  • (String)


78
79
80
# File 'lib/booqable/default.rb', line 78

def client_secret
  ENV.fetch("BOOQABLE_CLIENT_SECRET", nil)
end

.company_idString?

Default company ID from ENV

Returns:

  • (String, nil)

    Company identifier



84
85
86
# File 'lib/booqable/default.rb', line 84

def company_id
  ENV.fetch("BOOQABLE_COMPANY_ID", nil)
end

.connection_optionsHash

Default options for Faraday::Connection

Returns:

  • (Hash)


96
97
98
# File 'lib/booqable/default.rb', line 96

def connection_options
  nil
end

.debugBoolean

Default debug mode setting

Returns:

  • (Boolean)

    Whether debug mode is enabled



204
205
206
# File 'lib/booqable/default.rb', line 204

def debug
  false
end

.default_media_typeString

Default media type from ENV or MEDIA_TYPE

Returns:

  • (String)


102
103
104
# File 'lib/booqable/default.rb', line 102

def default_media_type
  ENV.fetch("BOOQABLE_DEFAULT_MEDIA_TYPE") { MEDIA_TYPE }
end

.middlewareFaraday::RackBuilder or Faraday::Builder

Default middleware stack for Faraday::Connection from MIDDLEWARE

Returns:

  • (Faraday::RackBuilder or Faraday::Builder)


109
110
111
# File 'lib/booqable/default.rb', line 109

def middleware
  MIDDLEWARE
end

.no_retriesBoolean

Default retry setting

Returns:

  • (Boolean)

    Whether to disable retries



210
211
212
# File 'lib/booqable/default.rb', line 210

def no_retries
  false
end

.optionsHash

Configuration options

Returns:

  • (Hash)


42
43
44
# File 'lib/booqable/default.rb', line 42

def options
  Booqable::Configurable.keys.to_h { |key| [ key, send(key) ] }
end

.per_pageInteger

Default pagination page size from ENV

Returns:

  • (Integer)

    Page size



115
116
117
118
119
# File 'lib/booqable/default.rb', line 115

def per_page
  page_size = ENV.fetch("BOOQABLE_PER_PAGE", 25)

  page_size&.to_i
end

.proxyString

Default proxy server URI for Faraday connection from ENV

Returns:

  • (String)


123
124
125
# File 'lib/booqable/default.rb', line 123

def proxy
  ENV.fetch("BOOQABLE_PROXY", nil)
end

.read_tokenProc

Default OAuth token reader

Returns:

  • (Proc)

    Empty proc that returns nothing



144
145
146
# File 'lib/booqable/default.rb', line 144

def read_token
  Proc.new { }
end

.redirect_uriString

Default redirect URI for OAuth from ENV

Returns:

  • (String)


90
91
92
# File 'lib/booqable/default.rb', line 90

def redirect_uri
  ENV.fetch("BOOQABLE_REDIRECT_URI", nil)
end

.single_use_tokenString?

Default single use token from ENV

Returns:

  • (String, nil)

    Single use token for authentication



162
163
164
# File 'lib/booqable/default.rb', line 162

def single_use_token
  ENV.fetch("BOOQABLE_SINGLE_USE_TOKEN", nil)
end

.single_use_token_algorithmString?

Default single use token algorithm from ENV

Returns:

  • (String, nil)

    Algorithm for single use token (e.g., “HS256”, “RS256”)



168
169
170
# File 'lib/booqable/default.rb', line 168

def single_use_token_algorithm
  ENV.fetch("BOOQABLE_SINGLE_USE_TOKEN_ALGORITHM", nil)
end

.single_use_token_company_idString?

Default single use token company ID from ENV

Returns:

  • (String, nil)

    Company ID for single use token



192
193
194
# File 'lib/booqable/default.rb', line 192

def single_use_token_company_id
  ENV.fetch("BOOQABLE_SINGLE_USE_TOKEN_COMPANY_ID", nil)
end

.single_use_token_expiration_periodInteger

Default single use token expiration period from ENV

Returns:

  • (Integer)

    Token expiration period in seconds



186
187
188
# File 'lib/booqable/default.rb', line 186

def single_use_token_expiration_period
  ENV.fetch("BOOQABLE_SINGLE_USE_TOKEN_EXPIRATION_PERIOD") { 10 * 60 }.to_i # default to 10 minutes
end

.single_use_token_private_keyString?

Default single use token private key from ENV

Returns:

  • (String, nil)

    Private key for RSA/ECDSA single use token signing



180
181
182
# File 'lib/booqable/default.rb', line 180

def single_use_token_private_key
  ENV.fetch("BOOQABLE_SINGLE_USE_TOKEN_PRIVATE_KEY", nil)
end

.single_use_token_secretString?

Default single use token secret from ENV

Returns:

  • (String, nil)

    Secret for HMAC single use token signing



174
175
176
# File 'lib/booqable/default.rb', line 174

def single_use_token_secret
  ENV.fetch("BOOQABLE_SINGLE_USE_TOKEN_SECRET", nil)
end

.single_use_token_user_idString?

Default single use token user ID from ENV

Returns:

  • (String, nil)

    User ID for single use token



198
199
200
# File 'lib/booqable/default.rb', line 198

def single_use_token_user_id
  ENV.fetch("BOOQABLE_SINGLE_USE_TOKEN_USER_ID", nil)
end

.ssl_verify_modeInteger

Default SSL verify mode from ENV

Returns:

  • (Integer)


129
130
131
132
133
134
# File 'lib/booqable/default.rb', line 129

def ssl_verify_mode
  # 0 is OpenSSL::SSL::VERIFY_NONE
  # 1 is OpenSSL::SSL::SSL_VERIFY_PEER
  # the standard default for SSL is SSL_VERIFY_PEER which requires a server certificate check on the client
  ENV.fetch("BOOQABLE_SSL_VERIFY_MODE", 1).to_i
end

.user_agentString

Default User-Agent header string from ENV or USER_AGENT

Returns:

  • (String)


138
139
140
# File 'lib/booqable/default.rb', line 138

def user_agent
  ENV.fetch("BOOQABLE_USER_AGENT") { USER_AGENT }
end

.write_tokenProc

Default OAuth token writer

Returns:

  • (Proc)

    Empty proc that does nothing



150
151
152
# File 'lib/booqable/default.rb', line 150

def write_token
  Proc.new { }
end