Class: Tasker::Orchestration::RetryHeaderParser
- Inherits:
-
Object
- Object
- Tasker::Orchestration::RetryHeaderParser
- Defined in:
- lib/tasker/orchestration/retry_header_parser.rb
Overview
RetryHeaderParser handles parsing and validation of HTTP Retry-After headers
This component provides focused responsibility for parsing Retry-After headers according to HTTP specification, handling both seconds-based and date-based formats.
Instance Method Summary collapse
-
#parse_retry_after(retry_after) ⇒ Integer
Parse a Retry-After header value into seconds.
Instance Method Details
#parse_retry_after(retry_after) ⇒ Integer
Parse a Retry-After header value into seconds
The Retry-After header can contain either:
- An integer representing seconds (e.g., "120")
- An HTTP date (e.g., "Wed, 21 Oct 2015 07:28:00 GMT")
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/tasker/orchestration/retry_header_parser.rb', line 19 def parse_retry_after(retry_after) return 0 if retry_after.nil? || retry_after.strip.empty? # Handle seconds-based format (just digits) if retry_after.match?(/^\d+$/) seconds = retry_after.to_i validate_retry_seconds(seconds) return seconds end # Handle HTTP date format parse_http_date_retry_after(retry_after) rescue StandardError => e Rails.logger.error( "RetryHeaderParser: Failed to parse Retry-After header '#{retry_after}': #{e.}" ) raise Faraday::Error, "Failed to parse Retry-After header: #{e.}" end |