Trait api_request_utils_rs::RequestHandler
source · pub trait RequestHandler<'a> {
const BASE_URL: &'static str;
const API_KEY: Option<&'static str> = _;
// Provided methods
fn default_headers(&self, request_builder: RequestBuilder) -> RequestBuilder { ... }
fn default_requestor(
&self,
_endpoint: &str,
_parameters: Option<ParameterHashMap<'a>>,
_json: Option<&str>
) -> RequestBuilder { ... }
fn join_endpoints(endpoint: &str) -> String { ... }
fn parameters<Function>(&self, function: Function) -> ParameterHashMap<'a>
where Function: FnOnce(&mut ParameterHashMap<'a>) { ... }
fn request<'async_trait, T>(
request_builder: RequestBuilder
) -> Pin<Box<dyn Future<Output = Result<T, StatusCode>> + Send + 'async_trait>>
where T: for<'de> Deserialize<'de> + 'async_trait { ... }
}
Expand description
A trait for handling HTTP requests.
Required Associated Constants§
Provided Associated Constants§
Provided Methods§
sourcefn default_headers(&self, request_builder: RequestBuilder) -> RequestBuilder
fn default_headers(&self, request_builder: RequestBuilder) -> RequestBuilder
sourcefn default_requestor(
&self,
_endpoint: &str,
_parameters: Option<ParameterHashMap<'a>>,
_json: Option<&str>
) -> RequestBuilder
fn default_requestor( &self, _endpoint: &str, _parameters: Option<ParameterHashMap<'a>>, _json: Option<&str> ) -> RequestBuilder
sourcefn join_endpoints(endpoint: &str) -> String
fn join_endpoints(endpoint: &str) -> String
Joins the given endpoint with the base URL.
Arguments
endpoint
- The endpoint to join with the base URL.
Returns
The joined URL as a String
.
Example
use std::collections::HashMap;
struct MyRequestHandler;
impl<'a> RequestHandler<'a> for MyRequestHandler {
const BASE_URL: &'static str = "https://api.example.com";
fn make_request_url(&self, endpoint: &str) -> String {
Self::join_endpoints(endpoint)
}
}
sourcefn parameters<Function>(&self, function: Function) -> ParameterHashMap<'a>where
Function: FnOnce(&mut ParameterHashMap<'a>),
fn parameters<Function>(&self, function: Function) -> ParameterHashMap<'a>where Function: FnOnce(&mut ParameterHashMap<'a>),
Builds the parameter hashmap using the given function.
Arguments
function
- A closure that takes a mutable reference to aParameterHashMap
and modifies it.
Returns
The populated ParameterHashMap
.
Example
use std::collections::HashMap;
struct MyRequestHandler;
impl<'a> RequestHandler<'a> for MyRequestHandler {
const BASE_URL: &'static str = "https://api.example.com";
fn make_parameters(&self) -> ParameterHashMap<'a> {
self.parameters(|params| {
params.insert("key1", Some("value1"));
params.insert("key2", Some("value2"));
})
}
}
sourcefn request<'async_trait, T>(
request_builder: RequestBuilder
) -> Pin<Box<dyn Future<Output = Result<T, StatusCode>> + Send + 'async_trait>>where
T: for<'de> Deserialize<'de> + 'async_trait,
fn request<'async_trait, T>( request_builder: RequestBuilder ) -> Pin<Box<dyn Future<Output = Result<T, StatusCode>> + Send + 'async_trait>>where T: for<'de> Deserialize<'de> + 'async_trait,
Sends an HTTP request with the given RequestBuilder
, and returns the parsed response.
Arguments
request_builder
- TheRequestBuilder
containing the configured request.
Returns
A Result
containing the parsed response on success, or a StatusCode
on failure.
Example
use std::collections::HashMap;
struct MyRequestHandler;
#[derive(serde::Deserialize)]
struct MyResponse {
// Define your response structure here
}
#[async_trait::async_trait]
impl<'a> RequestHandler<'a> for MyRequestHandler {
const BASE_URL: &'static str = "https://api.example.com";
async fn make_request<T>(&self, request_builder: RequestBuilder) -> Result<T, StatusCode>
where
T: for<'de> serde::Deserialize<'de>,
{
self.request(request_builder).await
}
}