Class: GetStreamRuby::Configuration
- Inherits:
-
Object
- Object
- GetStreamRuby::Configuration
- Defined in:
- lib/getstream_ruby/configuration.rb
Instance Attribute Summary collapse
-
#api_key ⇒ Object
Returns the value of attribute api_key.
-
#api_secret ⇒ Object
Returns the value of attribute api_secret.
-
#base_url ⇒ Object
Returns the value of attribute base_url.
-
#logger ⇒ Object
Returns the value of attribute logger.
-
#timeout ⇒ Object
Returns the value of attribute timeout.
Class Method Summary collapse
-
.from_env ⇒ Object
Method 2: .env file (loads .env file via dotenv gem, falls back to env vars).
-
.from_system_env ⇒ Object
Method 3: Environment variables (no .env file, direct system env).
-
.manual(api_key:, api_secret:, base_url: nil, timeout: nil) ⇒ Object
Method 1: Manual configuration (no environment variables).
-
.with_overrides(overrides = {}) ⇒ Object
Class method to create configuration with overrides.
Instance Method Summary collapse
- #dup ⇒ Object
-
#initialize(api_key: nil, api_secret: nil, base_url: nil, timeout: nil, use_env: true) ⇒ Configuration
constructor
A new instance of Configuration.
- #valid? ⇒ Boolean
- #validate! ⇒ Object
Constructor Details
#initialize(api_key: nil, api_secret: nil, base_url: nil, timeout: nil, use_env: true) ⇒ Configuration
Returns a new instance of Configuration.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def initialize(api_key: nil, api_secret: nil, base_url: nil, timeout: nil, use_env: true) if use_env @api_key = api_key || ENV.fetch('STREAM_API_KEY', nil) @api_secret = api_secret || ENV.fetch('STREAM_API_SECRET', nil) @base_url = base_url || ENV['STREAM_BASE_URL'] || 'https://chat.stream-io-api.com' @timeout = timeout || (ENV['STREAM_TIMEOUT'] || 30).to_i else # Manual configuration only - no environment variables @api_key = api_key @api_secret = api_secret @base_url = base_url || 'https://api.getstream.io/api/v1.0' @timeout = timeout || 30 end @logger = nil end |
Instance Attribute Details
#api_key ⇒ Object
Returns the value of attribute api_key.
7 8 9 |
# File 'lib/getstream_ruby/configuration.rb', line 7 def api_key @api_key end |
#api_secret ⇒ Object
Returns the value of attribute api_secret.
7 8 9 |
# File 'lib/getstream_ruby/configuration.rb', line 7 def api_secret @api_secret end |
#base_url ⇒ Object
Returns the value of attribute base_url.
7 8 9 |
# File 'lib/getstream_ruby/configuration.rb', line 7 def base_url @base_url end |
#logger ⇒ Object
Returns the value of attribute logger.
7 8 9 |
# File 'lib/getstream_ruby/configuration.rb', line 7 def logger @logger end |
#timeout ⇒ Object
Returns the value of attribute timeout.
7 8 9 |
# File 'lib/getstream_ruby/configuration.rb', line 7 def timeout @timeout end |
Class Method Details
.from_env ⇒ Object
Method 2: .env file (loads .env file via dotenv gem, falls back to env vars)
56 57 58 59 |
# File 'lib/getstream_ruby/configuration.rb', line 56 def self.from_env require 'dotenv/load' if File.exist?('.env') && !File.empty?('.env') && !defined?(Dotenv) new(use_env: true) end |
.from_system_env ⇒ Object
Method 3: Environment variables (no .env file, direct system env)
62 63 64 |
# File 'lib/getstream_ruby/configuration.rb', line 62 def self.from_system_env new(use_env: true) end |
.manual(api_key:, api_secret:, base_url: nil, timeout: nil) ⇒ Object
Method 1: Manual configuration (no environment variables)
50 51 52 53 |
# File 'lib/getstream_ruby/configuration.rb', line 50 def self.manual(api_key:, api_secret:, base_url: nil, timeout: nil) new(api_key: api_key, api_secret: api_secret, base_url: base_url, timeout: timeout, use_env: false) end |
.with_overrides(overrides = {}) ⇒ Object
Class method to create configuration with overrides
45 46 47 |
# File 'lib/getstream_ruby/configuration.rb', line 45 def self.with_overrides(overrides = {}) new(**overrides) end |
Instance Method Details
#dup ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/getstream_ruby/configuration.rb', line 35 def dup Configuration.new( api_key: @api_key, api_secret: @api_secret, base_url: @base_url, timeout: @timeout, ) end |
#valid? ⇒ Boolean
26 27 28 |
# File 'lib/getstream_ruby/configuration.rb', line 26 def valid? api_key && api_secret end |
#validate! ⇒ Object
30 31 32 33 |
# File 'lib/getstream_ruby/configuration.rb', line 30 def validate! raise ConfigurationError, 'API key is required' unless api_key raise ConfigurationError, 'API secret is required' unless api_secret end |