Class: OctaSpace::Configuration
- Inherits:
-
Object
- Object
- OctaSpace::Configuration
- Defined in:
- lib/octaspace/configuration.rb
Overview
Global and per-client configuration for the OctaSpace SDK
Constant Summary collapse
- DEFAULTS =
{ base_url: "https://api.octa.space", open_timeout: 10, read_timeout: 30, write_timeout: 30, keep_alive: false, pool_size: 5, pool_timeout: 5, idle_timeout: 60, max_retries: 2, retry_interval: 0.5, backoff_factor: 2.0, ssl_verify: true, log_level: :info }.freeze
Instance Attribute Summary collapse
-
#api_key ⇒ String?
API key for Authorization header.
-
#backoff_factor ⇒ Float
Exponential backoff multiplier.
-
#base_url ⇒ String
Base URL for the API (single endpoint).
-
#base_urls ⇒ Array<String>?
Multiple API endpoints — enables URL rotation/failover.
-
#idle_timeout ⇒ Integer
Seconds before an idle persistent connection is closed.
-
#keep_alive ⇒ Boolean
(also: #persistent)
Enable persistent HTTP connections with connection pooling.
-
#log_level ⇒ Symbol
Log level (:debug, :info, :warn, :error).
-
#logger ⇒ Logger?
Ruby Logger instance (or any object responding to #debug/#info/#warn/#error).
-
#max_retries ⇒ Integer
Maximum number of retries on transient failures.
-
#on_request ⇒ #call?
Callable invoked before each request; receives request context hash.
-
#on_response ⇒ #call?
Callable invoked after each response; receives OctaSpace::Response.
-
#open_timeout ⇒ Integer
Seconds to wait for connection to open.
-
#pool_size ⇒ Integer
Number of persistent connections in the pool.
-
#pool_timeout ⇒ Integer
Seconds to wait for a connection from the pool.
-
#read_timeout ⇒ Integer
Seconds to wait for a response.
-
#retry_interval ⇒ Float
Base interval in seconds between retries.
-
#ssl_verify ⇒ Boolean
Verify SSL certificates (set false only in development/test).
-
#user_agent ⇒ String
User-Agent header value.
-
#write_timeout ⇒ Integer
Seconds to wait when writing request body.
Instance Method Summary collapse
-
#dup ⇒ Configuration
Deep-clone configuration for per-client overrides.
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #keep_alive? ⇒ Boolean
-
#urls ⇒ Array<String>
Returns effective list of API URLs.
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
104 105 106 107 |
# File 'lib/octaspace/configuration.rb', line 104 def initialize DEFAULTS.each { |k, v| public_send(:"#{k}=", v) } @user_agent = "octaspace-ruby/#{OctaSpace::VERSION} Ruby/#{RUBY_VERSION}" end |
Instance Attribute Details
#api_key ⇒ String?
Returns API key for Authorization header.
17 18 19 |
# File 'lib/octaspace/configuration.rb', line 17 def api_key @api_key end |
#backoff_factor ⇒ Float
Returns Exponential backoff multiplier.
60 61 62 |
# File 'lib/octaspace/configuration.rb', line 60 def backoff_factor @backoff_factor end |
#base_url ⇒ String
Returns Base URL for the API (single endpoint).
22 23 24 |
# File 'lib/octaspace/configuration.rb', line 22 def base_url @base_url end |
#base_urls ⇒ Array<String>?
Returns Multiple API endpoints — enables URL rotation/failover.
25 26 27 |
# File 'lib/octaspace/configuration.rb', line 25 def base_urls @base_urls end |
#idle_timeout ⇒ Integer
Returns Seconds before an idle persistent connection is closed.
49 50 51 |
# File 'lib/octaspace/configuration.rb', line 49 def idle_timeout @idle_timeout end |
#keep_alive ⇒ Boolean Also known as: persistent
Returns Enable persistent HTTP connections with connection pooling.
40 41 42 |
# File 'lib/octaspace/configuration.rb', line 40 def keep_alive @keep_alive end |
#log_level ⇒ Symbol
Returns Log level (:debug, :info, :warn, :error).
76 77 78 |
# File 'lib/octaspace/configuration.rb', line 76 def log_level @log_level end |
#logger ⇒ Logger?
Returns Ruby Logger instance (or any object responding to #debug/#info/#warn/#error).
73 74 75 |
# File 'lib/octaspace/configuration.rb', line 73 def logger @logger end |
#max_retries ⇒ Integer
Returns Maximum number of retries on transient failures.
54 55 56 |
# File 'lib/octaspace/configuration.rb', line 54 def max_retries @max_retries end |
#on_request ⇒ #call?
Returns Callable invoked before each request; receives request context hash.
65 66 67 |
# File 'lib/octaspace/configuration.rb', line 65 def on_request @on_request end |
#on_response ⇒ #call?
Returns Callable invoked after each response; receives OctaSpace::Response.
68 69 70 |
# File 'lib/octaspace/configuration.rb', line 68 def on_response @on_response end |
#open_timeout ⇒ Integer
Returns Seconds to wait for connection to open.
28 29 30 |
# File 'lib/octaspace/configuration.rb', line 28 def open_timeout @open_timeout end |
#pool_size ⇒ Integer
Returns Number of persistent connections in the pool.
43 44 45 |
# File 'lib/octaspace/configuration.rb', line 43 def pool_size @pool_size end |
#pool_timeout ⇒ Integer
Returns Seconds to wait for a connection from the pool.
46 47 48 |
# File 'lib/octaspace/configuration.rb', line 46 def pool_timeout @pool_timeout end |
#read_timeout ⇒ Integer
Returns Seconds to wait for a response.
31 32 33 |
# File 'lib/octaspace/configuration.rb', line 31 def read_timeout @read_timeout end |
#retry_interval ⇒ Float
Returns Base interval in seconds between retries.
57 58 59 |
# File 'lib/octaspace/configuration.rb', line 57 def retry_interval @retry_interval end |
#ssl_verify ⇒ Boolean
Returns Verify SSL certificates (set false only in development/test).
81 82 83 |
# File 'lib/octaspace/configuration.rb', line 81 def ssl_verify @ssl_verify end |
#user_agent ⇒ String
Returns User-Agent header value.
86 87 88 |
# File 'lib/octaspace/configuration.rb', line 86 def user_agent @user_agent end |
#write_timeout ⇒ Integer
Returns Seconds to wait when writing request body.
34 35 36 |
# File 'lib/octaspace/configuration.rb', line 34 def write_timeout @write_timeout end |
Instance Method Details
#dup ⇒ Configuration
Deep-clone configuration for per-client overrides
126 127 128 129 130 131 132 133 134 |
# File 'lib/octaspace/configuration.rb', line 126 def dup copy = self.class.new instance_variables.each do |var| copy.instance_variable_set(var, instance_variable_get(var).dup) rescue TypeError copy.instance_variable_set(var, instance_variable_get(var)) end copy end |
#keep_alive? ⇒ Boolean
114 |
# File 'lib/octaspace/configuration.rb', line 114 def keep_alive? = !!keep_alive |
#urls ⇒ Array<String>
Returns effective list of API URLs. base_urls takes priority over base_url; always returns an Array.
119 120 121 122 |
# File 'lib/octaspace/configuration.rb', line 119 def urls candidates = Array(base_urls).map(&:to_s).reject(&:empty?) candidates.empty? ? Array(base_url).map(&:to_s).reject(&:empty?) : candidates end |