use reqwest::{Client, Error, Response};
use serde::Serialize;
use std::fmt::Debug;
pub async fn get_request(
api_key: &str,
url: &str,
query: Option<Vec<(&str, &str)>>,
) -> Result<Response, Error> {
let client = Client::new();
let response = client
.get(url)
.query(&query)
.bearer_auth(api_key)
.header("Content-Type", "application/json")
.send()
.await;
match response {
Ok(response) => Ok(response),
Err(err) => Err(err),
}
}
pub async fn post_request<T>(api_key: &str, url: &str, body: T) -> Result<Response, Error>
where
T: Debug + Serialize,
{
let client = Client::new();
let response = client
.post(url)
.bearer_auth(api_key)
.header("Content-Type", "application/json")
.json(&body)
.send()
.await;
match response {
Ok(response) => Ok(response),
Err(err) => Err(err),
}
}
pub async fn put_request<T>(api_key: &str, url: &str, body: T) -> Result<Response, Error>
where
T: Debug + Serialize,
{
let client = Client::new();
let response = client
.put(url)
.bearer_auth(api_key)
.header("Content-Type", "application/json")
.json(&body)
.send()
.await;
match response {
Ok(response) => Ok(response),
Err(err) => Err(err),
}
}
pub async fn delete_request<T>(api_key: &str, url: &str, body: T) -> Result<Response, Error>
where
T: Debug + Serialize,
{
let client = Client::new();
let response = client
.delete(url)
.bearer_auth(api_key)
.header("Content-Type", "application/json")
.json(&body)
.send()
.await;
match response {
Ok(response) => Ok(response),
Err(err) => Err(err),
}
}