Class: GroqRuby::Configuration
- Inherits:
-
Object
- Object
- GroqRuby::Configuration
- 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.
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
-
.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.
Instance Method Summary collapse
-
#base_uri ⇒ URI::Generic
The parsed base URI used to build per-request URIs.
-
#default_headers ⇒ Hash{String => String}
Default headers attached to every request.
-
#initialize(api_key:, base_url: DEFAULT_BASE_URL, open_timeout: DEFAULT_OPEN_TIMEOUT, read_timeout: DEFAULT_READ_TIMEOUT, user_agent: DEFAULT_USER_AGENT) ⇒ Configuration
constructor
A new instance of Configuration.
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.
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`.
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_uri ⇒ URI::Generic
The parsed base URI used to build per-request URIs.
48 49 50 |
# File 'lib/groq_ruby/configuration.rb', line 48 def base_uri @base_uri ||= URI.parse(base_url) end |
#default_headers ⇒ Hash{String => String}
Default headers attached to every request.
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 |