From f8da39b3d26f9f0a2d58e6ee23d3c83f46b43792 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Fri, 14 Apr 2023 22:22:23 +0200 Subject: [PATCH] add send_request method --- src/limit.rs | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/limit.rs b/src/limit.rs index ddacb51..04ca815 100644 --- a/src/limit.rs +++ b/src/limit.rs @@ -33,11 +33,22 @@ impl LimitedRequester { } pub async fn send_request(&mut self, request: RequestBuilder, limit_type: LimitType) { - self.requests.push_back(TypedRequest { - request: request, - limit_type: limit_type, - }); - // TODO: Implement + if self.can_send_request(limit_type) { + let built_request = request + .build() + .unwrap_or_else(|e| panic!("Error while building the Request for sending: {}", e)); + let result = self.http.execute(built_request).await; + let response = match result { + Ok(is_response) => is_response, + Err(e) => panic!("An error occured while processing the response: {}", e), + }; + self.update_limits(response, limit_type); + } else { + self.requests.push_back(TypedRequest { + request: request, + limit_type: limit_type, + }); + } } fn update_limit_entry(entry: &mut Limit, reset: u64, remaining: u64, limit: u64) { @@ -51,7 +62,7 @@ impl LimitedRequester { } } - pub fn can_send_request(self, limit_type: LimitType) -> bool { + pub fn can_send_request(&mut self, limit_type: LimitType) -> bool { let limits = self.limits_rate.get(&limit_type); match limits {