add update_limits (TODO) and add_to_queue

This commit is contained in:
bitfl0wer 2023-04-12 18:33:16 +02:00
parent 252697144f
commit 8622849ef8
No known key found for this signature in database
GPG Key ID: 84BBB60DF895ABF2
1 changed files with 22 additions and 3 deletions

View File

@ -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<Request>,
requests: VecDeque<RequestBuilder>,
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<RequestBuilder>) {
queue.push_back(request);
}
fn update_limits(&mut self, response: Response, limit_types: Vec<LimitType>) -> 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,
};
}
}