Class: LWS::Config
- Inherits:
-
Hashie::Dash
- Object
- Hashie::Dash
- LWS::Config
- Defined in:
- lib/lws/config.rb
Overview
Either the API token or API token middleware needs to be configured for the library to work properly!
The LWS API configuration class
This class represents the configuration that is used for connecting to LWS.
Constant Summary collapse
- VALID_FILE_PROPERTIES =
The list of properties that can be set using a config file.
[:api_token, :endpoints, :environment, :http_debug, :http_debug_headers, :json_debug, :proxy]
Instance Attribute Summary collapse
-
#api_token ⇒ String?
The API token necessary to gain access.
-
#api_token_middleware ⇒ Faraday::Middleware?
The API token middleware that provides the API token to the request at runtime.
-
#caching_object ⇒ #read, #write
An object that can cache request results.
-
#endpoints ⇒ Hash{Symbol=>String}
A mapping of application endpoint overrides (default: {}).
-
#environment ⇒ Symbol
The (default) API environment (default:
:production). -
#http_caching ⇒ Boolean
Whether HTTP caching is enabled.
-
#http_caching_object ⇒ #read, ...
An object that caches results respecting HTTP expiration (instead of an in-memory hash).
-
#http_debug ⇒ Boolean
Whether to show HTTP debug messages (default:
false). -
#http_debug_headers ⇒ Boolean
Whether to show HTTP headers in the debug messages (default:
false). -
#http_persistent ⇒ Boolean
Whether persistent HTTP connections are used (default:
true). -
#json_debug ⇒ Boolean
Whether to show JSON debug messages (default:
false). -
#logger ⇒ #fatal, ...
The logger object (Rails logger, Logger, etc.).
-
#proxy ⇒ Hash, ...
When passing a Hash, it should at least contain
:urias key with a String or URI as value and optionally the:userand:passwordkeys with appropriate values. -
#stubbing ⇒ String
The path to a directory with stubbing fixtures (setting this enables the default stubs).
Instance Method Summary collapse
-
#load_config_file(config_file, force_environment = nil) ⇒ Boolean
Supplements the configuration with settings from a config file.
Instance Attribute Details
#api_token ⇒ String?
29 |
# File 'lib/lws/config.rb', line 29 property :api_token |
#api_token_middleware ⇒ Faraday::Middleware?
34 |
# File 'lib/lws/config.rb', line 34 property :api_token_middleware |
#caching_object ⇒ #read, #write
38 |
# File 'lib/lws/config.rb', line 38 property :caching_object, default: nil |
#endpoints ⇒ Hash{Symbol=>String}
43 |
# File 'lib/lws/config.rb', line 43 property :endpoints, default: {} |
#environment ⇒ Symbol
48 |
# File 'lib/lws/config.rb', line 48 property :environment, default: :production |
#http_caching ⇒ Boolean
52 |
# File 'lib/lws/config.rb', line 52 property :http_caching, default: false |
#http_caching_object ⇒ #read, ...
57 |
# File 'lib/lws/config.rb', line 57 property :http_caching_object, default: nil |
#http_debug ⇒ Boolean
61 |
# File 'lib/lws/config.rb', line 61 property :http_debug, default: false |
#http_debug_headers ⇒ Boolean
66 |
# File 'lib/lws/config.rb', line 66 property :http_debug_headers, default: false |
#http_persistent ⇒ Boolean
71 |
# File 'lib/lws/config.rb', line 71 property :http_persistent, default: true |
#json_debug ⇒ Boolean
75 |
# File 'lib/lws/config.rb', line 75 property :json_debug, default: false |
#logger ⇒ #fatal, ...
80 |
# File 'lib/lws/config.rb', line 80 property :logger |
#proxy ⇒ Hash, ...
When passing a Hash, it should at least contain :uri as key with a String or URI as value and optionally the :user and :password keys with appropriate values.
88 |
# File 'lib/lws/config.rb', line 88 property :proxy |
#stubbing ⇒ String
93 |
# File 'lib/lws/config.rb', line 93 property :stubbing |
Instance Method Details
#load_config_file(config_file, force_environment = nil) ⇒ Boolean
Supplements the configuration with settings from a config file.
The configuration file has a section per environment that indicates per property what to use if it is unset.
Note that this is only done for a specific subset of of properties. See VALID_FILE_PROPERTIES for this subset!
The configuration file can optionally have a “default” section with an environment key that selects the default environment (unless overriden by the LC_LWS_ENV environment variable).
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/lws/config.rb', line 156 def load_config_file(config_file, force_environment = nil) return false unless File.exist? config_file config_data = File.open(config_file) do |f| YAML.safe_load(f, filename: config_file, aliases: true) end default_config = config_data["default"] || {} self.environment = force_environment || ENV["LC_LWS_ENV"] || config_data.dig("default", "environment") || self.environment config = default_config.merge(config_data[self.environment.to_s] || {}) config.each_pair do |key, value| unless VALID_FILE_PROPERTIES.include? key.to_sym raise "encountered an invalid config property \"#{key}\" " + "in config file #{config_file}!" end configure(key, value) end true end |