add notes on what needs to be done.

This commit is contained in:
bitfl0wer 2023-04-08 14:51:36 +02:00
parent 8d30e1461b
commit 3cdf24b284
1 changed files with 13 additions and 3 deletions

View File

@ -1,6 +1,9 @@
use reqwest::{Client, Request}; use reqwest::{Client, Request};
use std::collections::VecDeque; use std::collections::VecDeque;
// Note: There seem to be some overlapping request limiters. We need to make sure that sending a
// request checks for all the request limiters that apply, and blocks if any of the limiters are 0
pub struct Limit { pub struct Limit {
limit: i64, limit: i64,
remaining: i64, remaining: i64,
@ -19,17 +22,24 @@ impl LimitedRequester {
/// send them to the server using a `Client`. It keeps track of the remaining requests that can /// 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 /// 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. /// headers to see if it can find Ratelimit info to update itself.
pub fn new(api_url: String) -> Self { pub async fn new(api_url: String) -> Self {
LimitedRequester { LimitedRequester {
limit: LimitedRequester::check_limits(api_url), limit: LimitedRequester::check_limits(api_url).await,
http: Client::new(), http: Client::new(),
requests: VecDeque::new(), requests: VecDeque::new(),
} }
} }
pub fn check_limits(url: String) -> Vec<Limit> { pub async fn check_limits(url: String) -> Vec<Limit> {
let client = Client::new(); let client = Client::new();
let url_parsed = crate::URLBundle::parse_url(url) + "/api/policies/instance/limits"; let url_parsed = crate::URLBundle::parse_url(url) + "/api/policies/instance/limits";
let result = client.get(url_parsed).send();
/*
1. unwrap the result
2. extract rate and absolute rate limits from response result
3. put each different rate limit as a new object in the limit vector
4. yeah
*/
let mut limit_vector = Vec::new(); let mut limit_vector = Vec::new();
limit_vector.push(Limit { limit_vector.push(Limit {
limit: -1, limit: -1,