Skip to main content

calculate_rate_limit_delay

Function calculate_rate_limit_delay 

Source
pub fn calculate_rate_limit_delay(
    retry_after: Option<&str>,
    rate_limit_reset: Option<&str>,
) -> Duration
Expand description

Calculate delay for rate limit exceeded (429) response.

Priority order:

  1. Retry-After header if present
  2. X-RateLimit-Reset header if present
  3. Default 60 second delay

§Arguments

  • retry_after - Optional Retry-After header value
  • rate_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