From bfb63ddb2d515f7bf09b34cccb5f9307b1fa9e4b Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 8 Apr 2023 14:37:20 +0200 Subject: [PATCH] Use Vec instead of Limit because there are multiple limits --- src/limit.rs | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/limit.rs b/src/limit.rs index a8d8bca..b07e90f 100644 --- a/src/limit.rs +++ b/src/limit.rs @@ -10,7 +10,7 @@ pub struct Limit { pub struct LimitedRequester { http: Client, - limit: Limit, + limit: Vec, requests: VecDeque, } @@ -19,27 +19,34 @@ impl LimitedRequester { /// send them to the server using a `Client`. It keeps track of the remaining requests that can /// be send within the `Limit` of an external API Ratelimiter, and looks at the returned request /// headers to see if it can find Ratelimit info to update itself. - pub fn new() -> Self { + pub fn new(api_url: String) -> Self { LimitedRequester { - limit: Limit { - limit: -1, - remaining: -1, - reset: -1, - bucket: String::new(), - }, + limit: LimitedRequester::check_limits(api_url), http: Client::new(), requests: VecDeque::new(), } } - pub fn check_limits(url: String) -> Limit { + pub fn check_limits(url: String) -> Vec { let client = Client::new(); - let url_parsed = crate::URLBundle::parse_url(url); - Limit { + let url_parsed = crate::URLBundle::parse_url(url) + "/api/policies/instance/limits"; + let mut limit_vector = Vec::new(); + limit_vector.push(Limit { limit: -1, remaining: -1, reset: -1, bucket: String::new(), - } // TODO: Implement + }); // TODO: Implement + limit_vector } } + +/* #[cfg(test)] Tests work here as well, neat! +mod tests { + use super::*; + + #[test] + fn test_parse_url() { + assert_eq!(1, 1) + } +} */