sf_rate_limiter/
rate_limit.rs1use crate::error::RateLimitExceededError;
2use crate::LocalDateTime;
3
4#[derive(Debug)]
7pub struct RateLimit {
8 pub(crate) available_tokens: usize,
9 pub(crate) retry_after: LocalDateTime,
10 pub(crate) accepted: bool,
11 pub(crate) limit: usize,
12}
13
14impl RateLimit {
15 pub fn get_remaining_tokens(&self) -> usize {
17 self.available_tokens
18 }
19
20 pub fn get_retry_after(&self) -> LocalDateTime {
23 self.retry_after.clone()
24 }
25
26 pub fn is_accepted(&self) -> bool {
28 self.accepted
29 }
30
31 pub fn get_limit(&self) -> usize {
33 self.limit
34 }
35
36 pub fn ensure_accepted(&self) -> Result<(), RateLimitExceededError> {
39 if !self.accepted {
40 return Err(RateLimitExceededError); }
42
43 Ok(())
44 }
45}