refactor(remote): Created separate function to generate requests

This commit is contained in:
quexeky
2025-01-19 15:09:35 +11:00
parent fd30b3e402
commit 9a184a8f35
5 changed files with 53 additions and 47 deletions

View File

@ -1,3 +1,4 @@
pub mod auth;
pub mod commands;
pub mod remote;
pub mod requests;

View File

@ -0,0 +1,26 @@
use std::ops::Deref;
use reqwest::blocking::{Client, RequestBuilder, Response};
use url::{ParseError, Url};
use crate::{database::db::DatabaseImpls, error::remote_access_error::RemoteAccessError, DB};
pub fn make_request<'a, T: AsRef<str>, F: FnOnce(RequestBuilder) -> RequestBuilder>(
client: &Client,
endpoints: &[T],
params: &[(T, T)],
f: F,
) -> Result<RequestBuilder, RemoteAccessError> {
let mut base_url = DB.fetch_base_url();
for endpoint in endpoints {
base_url = base_url.join(endpoint.as_ref())?;
}
{
let mut queries = base_url.query_pairs_mut();
for (param, val) in params {
queries.append_pair(param.as_ref(), val.as_ref());
}
}
let response = client.get(base_url);
Ok(f(response))
}