use serde::Serialize;
pub struct RestRequest<Q, B> {
pub(crate) method: reqwest::Method,
pub(crate) path: String,
pub(crate) query: Option<Q>,
pub(crate) body: Option<B>,
pub(crate) authenticate: bool,
}
impl<Q, B> RestRequest<Q, B>
where
Q: Serialize,
B: Serialize,
{
pub fn with_method<S: AsRef<str>>(path: S, method: reqwest::Method) -> Self {
log::trace!(
"Create new RestRequest for endpoint {} with method {}.",
path.as_ref(),
method
);
Self {
method,
path: path.as_ref().to_string(),
query: None,
body: None,
authenticate: false,
}
}
pub fn get<S: AsRef<str>>(path: S) -> Self {
Self::with_method(path, reqwest::Method::GET)
}
pub fn post<S: AsRef<str>>(path: S) -> Self {
Self::with_method(path, reqwest::Method::POST)
}
pub fn query(mut self, query: Q) -> Self {
self.query = Some(query);
self
}
pub fn body(mut self, body: B) -> Self {
self.body = Some(body);
self
}
pub fn authenticate(mut self) -> Self {
self.authenticate = true;
self
}
}