Class: Castle::Configuration
- Inherits:
-
Object
- Object
- Castle::Configuration
- Defined in:
- lib/castle/configuration.rb
Overview
manages configuration variables
Direct Known Subclasses
Constant Summary collapse
- BASE_URL =
API endpoint
'https://api.castle.io/v1'
- REQUEST_TIMEOUT =
in milliseconds
1000
- TRUSTED_PROXIES =
regexp of trusted proxies which is always appended to the trusted proxy list
[ / \A127\.0\.0\.1\Z| \A(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.| \A::1\Z|\Afd[0-9a-f]{2}:.+| \Alocalhost\Z| \Aunix\Z| \Aunix: /ix ].freeze
- DEFAULT_ALLOWLIST =
Note:
this value is not assigned as we don’t recommend using a allowlist. If you need to use one, this constant is provided as a good default.
%w[ Accept Accept-Charset Accept-Datetime Accept-Encoding Accept-Language Cache-Control Connection Content-Length Content-Type Dnt Host Origin Pragma Referer Sec-Fetch-Dest Sec-Fetch-Mode Sec-Fetch-Site Sec-Fetch-User Te Upgrade-Insecure-Requests User-Agent X-Requested-With ].freeze
Instance Attribute Summary collapse
-
#allowlisted ⇒ Object
Returns the value of attribute allowlisted.
-
#api_secret ⇒ Object
Returns the value of attribute api_secret.
-
#base_url ⇒ Object
Returns the value of attribute base_url.
-
#denylisted ⇒ Object
Returns the value of attribute denylisted.
-
#failover_strategy ⇒ Object
Returns the value of attribute failover_strategy.
-
#ip_headers ⇒ Object
Returns the value of attribute ip_headers.
-
#logger ⇒ Object
Returns the value of attribute logger.
-
#request_timeout ⇒ Object
Returns the value of attribute request_timeout.
-
#trust_proxy_chain ⇒ Object
Returns the value of attribute trust_proxy_chain.
-
#trusted_proxies ⇒ Object
Returns the value of attribute trusted_proxies.
-
#trusted_proxy_depth ⇒ Object
Returns the value of attribute trusted_proxy_depth.
Instance Method Summary collapse
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #reset ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
61 62 63 64 65 |
# File 'lib/castle/configuration.rb', line 61 def initialize @header_format = Castle::Headers::Format @request_timeout = REQUEST_TIMEOUT reset end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(setting, *_args) ⇒ Object (private)
132 133 134 |
# File 'lib/castle/configuration.rb', line 132 def method_missing(setting, *_args) raise Castle::ConfigurationError, "there is no such a config #{setting}" end |
Instance Attribute Details
#allowlisted ⇒ Object
Returns the value of attribute allowlisted.
52 53 54 |
# File 'lib/castle/configuration.rb', line 52 def allowlisted @allowlisted end |
#api_secret ⇒ Object
Returns the value of attribute api_secret.
52 53 54 |
# File 'lib/castle/configuration.rb', line 52 def api_secret @api_secret end |
#base_url ⇒ Object
Returns the value of attribute base_url.
52 53 54 |
# File 'lib/castle/configuration.rb', line 52 def base_url @base_url end |
#denylisted ⇒ Object
Returns the value of attribute denylisted.
52 53 54 |
# File 'lib/castle/configuration.rb', line 52 def denylisted @denylisted end |
#failover_strategy ⇒ Object
Returns the value of attribute failover_strategy.
52 53 54 |
# File 'lib/castle/configuration.rb', line 52 def failover_strategy @failover_strategy end |
#ip_headers ⇒ Object
Returns the value of attribute ip_headers.
52 53 54 |
# File 'lib/castle/configuration.rb', line 52 def ip_headers @ip_headers end |
#logger ⇒ Object
Returns the value of attribute logger.
51 52 53 |
# File 'lib/castle/configuration.rb', line 51 def logger @logger end |
#request_timeout ⇒ Object
Returns the value of attribute request_timeout.
51 52 53 |
# File 'lib/castle/configuration.rb', line 51 def request_timeout @request_timeout end |
#trust_proxy_chain ⇒ Object
Returns the value of attribute trust_proxy_chain.
51 52 53 |
# File 'lib/castle/configuration.rb', line 51 def trust_proxy_chain @trust_proxy_chain end |
#trusted_proxies ⇒ Object
Returns the value of attribute trusted_proxies.
52 53 54 |
# File 'lib/castle/configuration.rb', line 52 def trusted_proxies @trusted_proxies end |
#trusted_proxy_depth ⇒ Object
Returns the value of attribute trusted_proxy_depth.
52 53 54 |
# File 'lib/castle/configuration.rb', line 52 def trusted_proxy_depth @trusted_proxy_depth end |
Instance Method Details
#reset ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/castle/configuration.rb', line 67 def reset self.failover_strategy = Castle::Failover::Strategy::ALLOW self.base_url = BASE_URL self.allowlisted = [].freeze self.denylisted = [].freeze self.api_secret = ENV.fetch('CASTLE_API_SECRET', '') self.ip_headers = [].freeze self.trusted_proxies = [].freeze self.trust_proxy_chain = false self.trusted_proxy_depth = nil self.logger = nil end |
#valid? ⇒ Boolean
117 118 119 |
# File 'lib/castle/configuration.rb', line 117 def valid? !api_secret.to_s.empty? && !base_url.host.to_s.empty? && !base_url.port.to_s.empty? end |