Class: ReductoAI::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/reducto_ai/config.rb

Overview

Configuration class for the ReductoAI client.

Manages API credentials, timeouts, logging, and exception handling behavior. Configuration can be set via environment variables or through the global configure method.

Examples:

Environment-based configuration

# Set these environment variables:
# REDUCTO_API_KEY=your-api-key
# REDUCTO_BASE_URL=https://platform.reducto.ai
# REDUCTO_OPEN_TIMEOUT=10
# REDUCTO_READ_TIMEOUT=60

config = ReductoAI::Config.new
config.api_key # => "your-api-key"

Explicit configuration

ReductoAI.configure do |config|
  config.api_key = "your-api-key"
  config.logger = Rails.logger
  config.open_timeout = 10
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig

Creates a new configuration instance with defaults from environment variables.



51
52
53
54
55
56
57
58
# File 'lib/reducto_ai/config.rb', line 51

def initialize
  @api_key = ENV.fetch("REDUCTO_API_KEY", nil)
  @base_url = ENV.fetch("REDUCTO_BASE_URL", "https://platform.reducto.ai")
  @open_timeout = integer_or_default("REDUCTO_OPEN_TIMEOUT", 5)
  @read_timeout = integer_or_default("REDUCTO_READ_TIMEOUT", 30)
  @webhook_secret = ENV.fetch("REDUCTO_WEBHOOK_SECRET", nil)
  @webhook_secret_resolver = nil
end

Instance Attribute Details

#api_keyString?

Returns Reducto API key (from REDUCTO_API_KEY env var).

Returns:

  • (String, nil)

    Reducto API key (from REDUCTO_API_KEY env var)



30
31
32
# File 'lib/reducto_ai/config.rb', line 30

def api_key
  @api_key
end

#base_urlString

Returns Base URL for Reducto API (default: https://platform.reducto.ai).

Returns:



33
34
35
# File 'lib/reducto_ai/config.rb', line 33

def base_url
  @base_url
end

#loggerLogger

Returns the logger instance.

Defaults to Rails.logger if Rails is available, otherwise a stderr Logger.

Returns:

  • (Logger)

    the logger instance



65
66
67
# File 'lib/reducto_ai/config.rb', line 65

def logger
  @logger ||= (defined?(::Rails) && ::Rails.respond_to?(:logger) && ::Rails.logger) || Logger.new($stderr)
end

#open_timeoutInteger

Returns Connection open timeout in seconds (default: 5).

Returns:

  • (Integer)

    Connection open timeout in seconds (default: 5)



36
37
38
# File 'lib/reducto_ai/config.rb', line 36

def open_timeout
  @open_timeout
end

#read_timeoutInteger

Returns Request read timeout in seconds (default: 30).

Returns:

  • (Integer)

    Request read timeout in seconds (default: 30)



39
40
41
# File 'lib/reducto_ai/config.rb', line 39

def read_timeout
  @read_timeout
end

#webhook_secretString?

Returns Svix webhook signing secret.

Returns:

  • (String, nil)

    Svix webhook signing secret



42
43
44
# File 'lib/reducto_ai/config.rb', line 42

def webhook_secret
  @webhook_secret
end

#webhook_secret_resolverProc?

Returns Proc that resolves webhook secret from request headers.

Returns:

  • (Proc, nil)

    Proc that resolves webhook secret from request headers



45
46
47
# File 'lib/reducto_ai/config.rb', line 45

def webhook_secret_resolver
  @webhook_secret_resolver
end