Class: PetstoreApiClient::Configuration
- Inherits:
-
Object
- Object
- PetstoreApiClient::Configuration
- Defined in:
- lib/petstore_api_client/configuration.rb
Overview
Configuration management for Petstore API client
Centralized configuration for all client settings including authentication, timeouts, retries, and pagination. Supports multiple authentication strategies via feature flags.
rubocop:disable Metrics/ClassLength
Constant Summary collapse
- DEFAULT_BASE_URL =
Default API base URL for Petstore API
"https://petstore.swagger.io/v2"- DEFAULT_PAGE_SIZE =
Default number of items per page for paginated endpoints
25- MAX_PAGE_SIZE =
Maximum allowed page size to prevent abuse
100- VALID_AUTH_STRATEGIES =
Valid authentication strategy options
%i[none api_key oauth2 both].freeze
Instance Attribute Summary collapse
- #api_key ⇒ Object
-
#auth_strategy ⇒ Symbol
Authentication strategy (:none, :api_key, :oauth2, :both).
-
#base_url ⇒ String
Base URL for API endpoints.
-
#default_page_size ⇒ Integer
Default items per page for pagination.
-
#max_page_size ⇒ Integer
Maximum items per page for pagination.
-
#max_retries ⇒ Integer
Maximum number of retry attempts.
-
#oauth2_client_id ⇒ String?
OAuth2 client ID.
-
#oauth2_client_secret ⇒ String?
OAuth2 client secret.
-
#oauth2_scope ⇒ String?
OAuth2 scope (space-separated permissions).
-
#oauth2_token_url ⇒ String?
OAuth2 token endpoint URL.
-
#open_timeout ⇒ Integer
Connection open timeout in seconds.
-
#retry_enabled ⇒ Boolean
Enable automatic retry for transient failures.
-
#timeout ⇒ Integer
Request timeout in seconds.
Instance Method Summary collapse
-
#authenticator ⇒ Authentication::Base
Build authenticator instance based on auth_strategy.
-
#configure {|self| ... } ⇒ Configuration
Configure settings via block.
-
#initialize ⇒ Configuration
constructor
Initialize configuration with default values.
-
#reset_authenticator! ⇒ void
Reset memoized authenticator.
-
#validate! ⇒ Boolean
Validate configuration settings.
Constructor Details
#initialize ⇒ Configuration
Initialize configuration with default values
Sets sensible defaults for all configuration options:
-
base_url: Petstore API endpoint
-
timeout: 30 seconds
-
retry_enabled: true
-
auth_strategy: :api_key (backward compatible)
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/petstore_api_client/configuration.rb', line 91 def initialize @base_url = DEFAULT_BASE_URL @api_key = nil @timeout = 30 # seconds @open_timeout = 10 # seconds @retry_enabled = true # Auto-retry transient failures @max_retries = 2 # Number of retries for failed requests @default_page_size = DEFAULT_PAGE_SIZE # Default items per page for pagination @max_page_size = MAX_PAGE_SIZE # Maximum items per page (prevents abuse) @auth_strategy = :api_key # Default strategy for backward compatibility # OAuth2 credentials @oauth2_client_id = nil @oauth2_client_secret = nil @oauth2_token_url = nil @oauth2_scope = nil end |
Instance Attribute Details
#api_key ⇒ Object
62 63 64 |
# File 'lib/petstore_api_client/configuration.rb', line 62 def api_key @api_key end |
#auth_strategy ⇒ Symbol
Returns Authentication strategy (:none, :api_key, :oauth2, :both).
66 67 68 |
# File 'lib/petstore_api_client/configuration.rb', line 66 def auth_strategy @auth_strategy end |
#base_url ⇒ String
Returns Base URL for API endpoints.
57 58 59 |
# File 'lib/petstore_api_client/configuration.rb', line 57 def base_url @base_url end |
#default_page_size ⇒ Integer
Returns Default items per page for pagination.
57 58 |
# File 'lib/petstore_api_client/configuration.rb', line 57 attr_accessor :base_url, :timeout, :open_timeout, :retry_enabled, :max_retries, :default_page_size, :max_page_size |
#max_page_size ⇒ Integer
Returns Maximum items per page for pagination.
57 58 |
# File 'lib/petstore_api_client/configuration.rb', line 57 attr_accessor :base_url, :timeout, :open_timeout, :retry_enabled, :max_retries, :default_page_size, :max_page_size |
#max_retries ⇒ Integer
Returns Maximum number of retry attempts.
57 58 |
# File 'lib/petstore_api_client/configuration.rb', line 57 attr_accessor :base_url, :timeout, :open_timeout, :retry_enabled, :max_retries, :default_page_size, :max_page_size |
#oauth2_client_id ⇒ String?
Returns OAuth2 client ID.
76 77 78 |
# File 'lib/petstore_api_client/configuration.rb', line 76 def oauth2_client_id @oauth2_client_id end |
#oauth2_client_secret ⇒ String?
Returns OAuth2 client secret.
76 |
# File 'lib/petstore_api_client/configuration.rb', line 76 attr_accessor :oauth2_client_id, :oauth2_client_secret, :oauth2_token_url, :oauth2_scope |
#oauth2_scope ⇒ String?
Returns OAuth2 scope (space-separated permissions).
76 |
# File 'lib/petstore_api_client/configuration.rb', line 76 attr_accessor :oauth2_client_id, :oauth2_client_secret, :oauth2_token_url, :oauth2_scope |
#oauth2_token_url ⇒ String?
Returns OAuth2 token endpoint URL.
76 |
# File 'lib/petstore_api_client/configuration.rb', line 76 attr_accessor :oauth2_client_id, :oauth2_client_secret, :oauth2_token_url, :oauth2_scope |
#open_timeout ⇒ Integer
Returns Connection open timeout in seconds.
57 58 |
# File 'lib/petstore_api_client/configuration.rb', line 57 attr_accessor :base_url, :timeout, :open_timeout, :retry_enabled, :max_retries, :default_page_size, :max_page_size |
#retry_enabled ⇒ Boolean
Returns Enable automatic retry for transient failures.
57 58 |
# File 'lib/petstore_api_client/configuration.rb', line 57 attr_accessor :base_url, :timeout, :open_timeout, :retry_enabled, :max_retries, :default_page_size, :max_page_size |
#timeout ⇒ Integer
Returns Request timeout in seconds.
57 58 |
# File 'lib/petstore_api_client/configuration.rb', line 57 attr_accessor :base_url, :timeout, :open_timeout, :retry_enabled, :max_retries, :default_page_size, :max_page_size |
Instance Method Details
#authenticator ⇒ Authentication::Base
Build authenticator instance based on auth_strategy
Returns appropriate authentication strategy based on auth_strategy setting:
-
:none - No authentication
-
:api_key - API Key authentication only
-
:oauth2 - OAuth2 authentication only
-
:both - Both API Key AND OAuth2 (composite)
The authenticator is memoized and reused until reset_authenticator! is called.
148 149 150 |
# File 'lib/petstore_api_client/configuration.rb', line 148 def authenticator @authenticator ||= build_authenticator end |
#configure {|self| ... } ⇒ Configuration
Configure settings via block
Yields self to the block for convenient configuration. Automatically resets authenticator after configuration.
185 186 187 188 189 |
# File 'lib/petstore_api_client/configuration.rb', line 185 def configure yield(self) if block_given? reset_authenticator! # Rebuild authenticator when config changes self end |
#reset_authenticator! ⇒ void
This method returns an undefined value.
Reset memoized authenticator
Call this when configuration changes to rebuild the authenticator with new settings.
166 167 168 |
# File 'lib/petstore_api_client/configuration.rb', line 166 def reset_authenticator! @authenticator = nil end |
#validate! ⇒ Boolean
Validate configuration settings
Checks that all required configuration is valid. Currently validates:
-
base_url is present
-
authenticator is properly configured (if auth is enabled)
208 209 210 211 212 213 214 215 |
# File 'lib/petstore_api_client/configuration.rb', line 208 def validate! raise ValidationError, "base_url can't be nil" if base_url.nil? || base_url.empty? # Validate authenticator if configured authenticator.is_a?(Authentication::ApiKey) && authenticator.configured? true end |