use http::HeaderMap;
#[non_exhaustive]
#[derive(Debug, Copy, Clone)]
pub struct RateLimit {
pub limit: u16,
pub remaining: u16,
pub reset: u64,
}
impl RateLimit {
pub(crate) fn new(headers: &HeaderMap) -> Option<Self> {
let remaining = headers
.get("x-ratelimit-remaining")?
.to_str()
.ok()?
.parse()
.ok()?;
let reset = headers
.get("x-ratelimit-reset")?
.to_str()
.ok()?
.parse()
.ok()?;
let limit = headers
.get("x-ratelimit-limit")?
.to_str()
.ok()?
.parse()
.ok()?;
let slf = Self {
limit,
remaining,
reset,
};
Some(slf)
}
}