From 4b3cd3a5d3a3dc7656cc53b58f6a8efd63091188 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Wed, 12 Apr 2023 18:33:16 +0200 Subject: [PATCH] add update_limits (TODO) and add_to_queue --- src/limit.rs | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/limit.rs b/src/limit.rs index 7b9a84d..b6426ad 100644 --- a/src/limit.rs +++ b/src/limit.rs @@ -1,6 +1,6 @@ -use crate::api::limits::Limits; +use crate::api::limits::{LimitType, Limits}; -use reqwest::{Client, Request}; +use reqwest::{Client, RequestBuilder, Response}; use std::collections::VecDeque; // Note: There seem to be some overlapping request limiters. We need to make sure that sending a @@ -9,7 +9,7 @@ use std::collections::VecDeque; #[allow(dead_code)] pub struct LimitedRequester { http: Client, - requests: VecDeque, + requests: VecDeque, last_reset_epoch: i64, limits_rate: Limits, } @@ -28,4 +28,23 @@ impl LimitedRequester { limits_rate: Limits::check_limits(api_url).await, } } + + fn add_to_queue(request: RequestBuilder, queue: &mut VecDeque) { + queue.push_back(request); + } + + fn update_limits(&mut self, response: Response, limit_types: Vec) -> bool { + let remaining = match response.headers().get("X-RateLimit-Remaining") { + Some(remaining) => remaining, + None => return false, + }; + let limit = match response.headers().get("X-RateLimit-Limit") { + Some(limit) => limit, + None => return false, + }; + let reset = match response.headers().get("X-RateLimit-Reset") { + Some(reset) => reset, + None => return false, + }; + } }