mirror of
https://github.com/Drop-OSS/drop-app.git
synced 2025-11-16 01:31:22 +10:00
24 lines
747 B
Rust
24 lines
747 B
Rust
use reqwest::{Client, RequestBuilder};
|
|
|
|
use crate::{database::db::DatabaseImpls, error::remote_access_error::RemoteAccessError, DB};
|
|
|
|
pub async fn make_request<T: AsRef<str>, F: AsyncFnOnce(RequestBuilder) -> RequestBuilder>(
|
|
client: &Client,
|
|
path_components: &[T],
|
|
query: &[(T, T)],
|
|
f: F,
|
|
) -> Result<RequestBuilder, RemoteAccessError> {
|
|
let mut base_url = DB.fetch_base_url().await;
|
|
for endpoint in path_components {
|
|
base_url = base_url.join(endpoint.as_ref())?;
|
|
}
|
|
{
|
|
let mut queries = base_url.query_pairs_mut();
|
|
for (param, val) in query {
|
|
queries.append_pair(param.as_ref(), val.as_ref());
|
|
}
|
|
}
|
|
let response = client.get(base_url);
|
|
Ok(f(response).await)
|
|
}
|