From 04d59f30d60246b71dc27a5b5bcde38114101270 Mon Sep 17 00:00:00 2001 From: TgZ39 Date: Sat, 25 May 2024 20:08:04 +0200 Subject: [PATCH] add body support for `NadeoRequest`s --- src/auth/mod.rs | 13 ++++++++----- src/auth/o_auth/mod.rs | 13 ++++++++----- src/request/mod.rs | 1 + src/request/request_builder.rs | 20 +++++++++----------- 4 files changed, 26 insertions(+), 21 deletions(-) diff --git a/src/auth/mod.rs b/src/auth/mod.rs index 0edd699..fd61054 100644 --- a/src/auth/mod.rs +++ b/src/auth/mod.rs @@ -164,16 +164,19 @@ impl AuthInfo { HttpMethod::Head => client.head(request.url), }; - let res = api_request + let mut res = api_request .header("Authorization", token.parse::().unwrap()) .header( "User-Agent", meta_data.user_agent.parse::().unwrap(), ) - .headers(request.headers) - .send() - .await? - .error_for_status()?; + .headers(request.headers); + if let Some(json) = request.body { + res = res.body(json); + } + + let res = res.send().await?.error_for_status()?; + Ok(res) } } diff --git a/src/auth/o_auth/mod.rs b/src/auth/o_auth/mod.rs index 0ebc009..0764ed3 100644 --- a/src/auth/o_auth/mod.rs +++ b/src/auth/o_auth/mod.rs @@ -109,16 +109,19 @@ impl OAuthInfo { HttpMethod::Head => client.head(request.url), }; - let res = api_request + let mut res = api_request .header("Authorization", token.parse::().unwrap()) .header( "User-Agent", meta_data.user_agent.parse::().unwrap(), ) - .headers(request.headers) - .send() - .await? - .error_for_status()?; + .headers(request.headers); + if let Some(json) = request.body { + res = res.body(json); + } + + let res = res.send().await?.error_for_status()?; + Ok(res) } } diff --git a/src/request/mod.rs b/src/request/mod.rs index 62d55f0..f739ca9 100644 --- a/src/request/mod.rs +++ b/src/request/mod.rs @@ -39,6 +39,7 @@ pub struct NadeoRequest { pub(crate) url: String, pub(crate) method: HttpMethod, pub(crate) headers: HeaderMap, + pub(crate) body: Option, } impl NadeoRequest { diff --git a/src/request/request_builder.rs b/src/request/request_builder.rs index be68446..089d98b 100644 --- a/src/request/request_builder.rs +++ b/src/request/request_builder.rs @@ -10,22 +10,13 @@ use serde::{Deserialize, Serialize}; /// [`NadeoRequest`]: NadeoRequest /// [`HttpMethod`]: HttpMethod /// [`AuthType`]: AuthType +#[derive(Default)] pub struct NadeoRequestBuilder { auth_type: Option, url: Option, method: Option, headers: HeaderMap, -} - -impl Default for NadeoRequestBuilder { - fn default() -> Self { - NadeoRequestBuilder { - auth_type: None, - method: None, - headers: HeaderMap::new(), - url: None, - } - } + body: Option, } /// Error when the Request is invalid. For example if a required field is missing. @@ -40,6 +31,12 @@ pub enum RequestBuilderError { } impl NadeoRequestBuilder { + pub fn body(mut self, json: &str) -> Self { + self.body = Some(json.to_string()); + + self + } + pub fn url(mut self, url: &str) -> Self { self.url = Some(url.to_string()); @@ -93,6 +90,7 @@ impl NadeoRequestBuilder { method: self.method.unwrap(), url: self.url.unwrap(), headers: self.headers, + body: self.body, }) } }