use serde::de::DeserializeOwned;
use serde::Serialize;
use super::EsiApi;
use crate::Error;
impl<'a> EsiApi<'a> {
pub async fn get_from_authenticated_esi<T: DeserializeOwned>(
&self,
url: &str,
access_token: &str,
required_scopes: Vec<String>,
) -> Result<T, Error> {
self.validate_token_before_request(access_token, required_scopes)
.await?;
let reqwest_client = &self.client.inner.reqwest_client;
let bearer = format!("Bearer {}", access_token);
let req = reqwest_client
.get(url)
.header("Authorization", bearer)
.send()
.await?;
req.error_for_status_ref()?;
let result: T = req.json().await?;
Ok(result)
}
pub async fn post_to_authenticated_esi<T: DeserializeOwned, U: Serialize + ?Sized>(
&self,
url: &str,
data: &U,
access_token: &str,
required_scopes: Vec<String>,
) -> Result<T, Error> {
self.validate_token_before_request(access_token, required_scopes)
.await?;
let reqwest_client = &self.client.inner.reqwest_client;
let bearer = format!("Bearer {}", access_token);
let req = reqwest_client
.post(url)
.header("Authorization", bearer)
.json(data)
.send()
.await?;
req.error_for_status_ref()?;
let result: T = req.json().await?;
Ok(result)
}
pub async fn put_to_authenticated_esi<T: DeserializeOwned, U: Serialize + ?Sized>(
&self,
url: &str,
data: &U,
access_token: &str,
required_scopes: Vec<String>,
) -> Result<T, Error> {
self.validate_token_before_request(access_token, required_scopes)
.await?;
let reqwest_client = &self.client.inner.reqwest_client;
let bearer = format!("Bearer {}", access_token);
let req = reqwest_client
.put(url)
.header("Authorization", bearer)
.json(data)
.send()
.await?;
req.error_for_status_ref()?;
let result: T = req.json().await?;
Ok(result)
}
pub async fn delete_from_authenticated_esi<T: DeserializeOwned>(
&self,
url: &str,
access_token: &str,
required_scopes: Vec<String>,
) -> Result<T, Error> {
self.validate_token_before_request(access_token, required_scopes)
.await?;
let reqwest_client = &self.client.inner.reqwest_client;
let bearer = format!("Bearer {}", access_token);
let req = reqwest_client
.delete(url)
.header("Authorization", bearer)
.send()
.await?;
req.error_for_status_ref()?;
let result: T = req.json().await?;
Ok(result)
}
}