Class: GroqRuby::Configuration

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

Overview

Immutable per-client configuration. Built once when the Client is constructed; never mutated afterwards. No global state — each client carries its own configuration, so multi-tenant code can hold multiple clients without leakage.

Examples:

Build from environment

config = GroqRuby::Configuration.from_env

Explicit construction

config = GroqRuby::Configuration.from_env(api_key: "...", base_url: "https://api.groq.com")

Constant Summary collapse

DEFAULT_BASE_URL =
"https://api.groq.com".freeze
DEFAULT_OPEN_TIMEOUT =
10.0
DEFAULT_READ_TIMEOUT =
60.0
DEFAULT_USER_AGENT =
"groq_ruby/#{GroqRuby::VERSION} (ruby; net-http)".freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key:, base_url: DEFAULT_BASE_URL, open_timeout: DEFAULT_OPEN_TIMEOUT, read_timeout: DEFAULT_READ_TIMEOUT, user_agent: DEFAULT_USER_AGENT) ⇒ Configuration

Returns a new instance of Configuration.

Raises:



40
41
42
43
44
# File 'lib/groq_ruby/configuration.rb', line 40

def initialize(api_key:, base_url: DEFAULT_BASE_URL, open_timeout: DEFAULT_OPEN_TIMEOUT,
  read_timeout: DEFAULT_READ_TIMEOUT, user_agent: DEFAULT_USER_AGENT)
  raise ConfigurationError, "api_key is required (or set GROQ_API_KEY)" if api_key.nil? || api_key.empty?
  super
end

Class Method Details

.from_env(api_key: nil, base_url: nil, open_timeout: nil, read_timeout: nil, user_agent: nil) ⇒ Configuration

Build a configuration from environment variables, with overrides. Reads ‘GROQ_API_KEY` and `GROQ_BASE_URL`.

Parameters:

  • api_key (String, nil) (defaults to: nil)

    explicit key (falls back to ‘GROQ_API_KEY`)

  • base_url (String, nil) (defaults to: nil)

    explicit base URL (falls back to ‘GROQ_BASE_URL`)

  • open_timeout (Numeric, nil) (defaults to: nil)

    connect-phase timeout in seconds

  • read_timeout (Numeric, nil) (defaults to: nil)

    socket-read timeout in seconds

  • user_agent (String, nil) (defaults to: nil)

    override the default User-Agent header

Returns:

Raises:



30
31
32
33
34
35
36
37
38
# File 'lib/groq_ruby/configuration.rb', line 30

def self.from_env(api_key: nil, base_url: nil, open_timeout: nil, read_timeout: nil, user_agent: nil)
  new(
    api_key: api_key || ENV["GROQ_API_KEY"],
    base_url: base_url || ENV["GROQ_BASE_URL"] || DEFAULT_BASE_URL,
    open_timeout: open_timeout || DEFAULT_OPEN_TIMEOUT,
    read_timeout: read_timeout || DEFAULT_READ_TIMEOUT,
    user_agent: user_agent || DEFAULT_USER_AGENT
  )
end

Instance Method Details

#base_uriURI::Generic

The parsed base URI used to build per-request URIs.

Returns:

  • (URI::Generic)


48
49
50
# File 'lib/groq_ruby/configuration.rb', line 48

def base_uri
  @base_uri ||= URI.parse(base_url)
end

#default_headersHash{String => String}

Default headers attached to every request.

Returns:

  • (Hash{String => String})


54
55
56
57
58
59
60
# File 'lib/groq_ruby/configuration.rb', line 54

def default_headers
  {
    "Authorization" => "Bearer #{api_key}",
    "User-Agent" => user_agent,
    "Accept" => "application/json"
  }
end