Class: GetStreamRuby::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/getstream_ruby/configuration.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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_keyObject

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_secretObject

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_urlObject

Returns the value of attribute base_url.



7
8
9
# File 'lib/getstream_ruby/configuration.rb', line 7

def base_url
  @base_url
end

#loggerObject

Returns the value of attribute logger.



7
8
9
# File 'lib/getstream_ruby/configuration.rb', line 7

def logger
  @logger
end

#timeoutObject

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_envObject

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_envObject

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

#dupObject



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

Returns:

  • (Boolean)


26
27
28
# File 'lib/getstream_ruby/configuration.rb', line 26

def valid?
  api_key && api_secret
end

#validate!Object

Raises:



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