pub fn calculate_rate_limit_delay(
retry_after: Option<&str>,
rate_limit_reset: Option<&str>,
) -> DurationExpand description
Calculate delay for rate limit exceeded (429) response.
Priority order:
- Retry-After header if present
- X-RateLimit-Reset header if present
- Default 60 second delay
§Arguments
retry_after- Optional Retry-After header valuerate_limit_reset- Optional X-RateLimit-Reset header value (Unix timestamp)
§Returns
Duration to wait before retrying.
§Examples
use github_bot_sdk::client::calculate_rate_limit_delay;
use std::time::Duration;
// With Retry-After header
let delay = calculate_rate_limit_delay(Some("60"), None);
assert_eq!(delay, Duration::from_secs(60));
// With X-RateLimit-Reset header (Unix timestamp)
let future_timestamp = (chrono::Utc::now().timestamp() + 120).to_string();
let delay = calculate_rate_limit_delay(None, Some(&future_timestamp));
assert!(delay >= Duration::from_secs(119) && delay <= Duration::from_secs(121));
// No headers, use default
let delay = calculate_rate_limit_delay(None, None);
assert_eq!(delay, Duration::from_secs(60));See docs/spec/interfaces/rate-limiting-retry.md