use crate::error::RateLimitExceededError;
use crate::LocalDateTime;
#[derive(Debug)]
pub struct RateLimit {
pub(crate) available_tokens: usize,
pub(crate) retry_after: LocalDateTime,
pub(crate) accepted: bool,
pub(crate) limit: usize,
}
impl RateLimit {
pub fn get_remaining_tokens(&self) -> usize {
self.available_tokens
}
pub fn get_retry_after(&self) -> LocalDateTime {
self.retry_after.clone()
}
pub fn is_accepted(&self) -> bool {
self.accepted
}
pub fn get_limit(&self) -> usize {
self.limit
}
pub fn ensure_accepted(&self) -> Result<(), RateLimitExceededError> {
if !self.accepted {
return Err(RateLimitExceededError); }
Ok(())
}
}