Exception: SecApi::RateLimitError
- Inherits:
-
TransientError
- Object
- StandardError
- Error
- TransientError
- SecApi::RateLimitError
- Defined in:
- lib/sec_api/errors/rate_limit_error.rb
Overview
Raised when sec-api.io rate limit is exceeded (429 Too Many Requests).
Why TransientError? Rate limits reset after a time window (typically 60s). The request is valid - we just hit a temporary capacity limit. Worth waiting and retrying automatically rather than failing to the user. (FR5.4: auto-resume)
This is a transient error - the retry middleware will automatically retry the request after waiting for the rate limit to reset.
The error includes retry context when available from response headers:
-
#retry_after: Duration to wait (from Retry-After header)
-
#reset_at: Timestamp when rate limit resets (from X-RateLimit-Reset header)
Instance Attribute Summary collapse
-
#reset_at ⇒ Time?
readonly
Timestamp when the rate limit window resets (from X-RateLimit-Reset header).
-
#retry_after ⇒ Integer?
readonly
Duration in seconds to wait before retrying (from Retry-After header).
Attributes inherited from Error
Instance Method Summary collapse
-
#initialize(message, retry_after: nil, reset_at: nil, request_id: nil) ⇒ RateLimitError
constructor
Creates a new RateLimitError with optional retry context.
Constructor Details
#initialize(message, retry_after: nil, reset_at: nil, request_id: nil) ⇒ RateLimitError
Creates a new RateLimitError with optional retry context.
51 52 53 54 55 |
# File 'lib/sec_api/errors/rate_limit_error.rb', line 51 def initialize(, retry_after: nil, reset_at: nil, request_id: nil) super(, request_id: request_id) @retry_after = retry_after @reset_at = reset_at end |
Instance Attribute Details
#reset_at ⇒ Time? (readonly)
Timestamp when the rate limit window resets (from X-RateLimit-Reset header).
43 44 45 |
# File 'lib/sec_api/errors/rate_limit_error.rb', line 43 def reset_at @reset_at end |
#retry_after ⇒ Integer? (readonly)
Duration in seconds to wait before retrying (from Retry-After header).
39 40 41 |
# File 'lib/sec_api/errors/rate_limit_error.rb', line 39 def retry_after @retry_after end |