use log;
use reqwest::Url;
#[derive(Debug)]
pub(super) struct Request {
url: Url,
}
impl Request {
pub(super) fn new(endpoint: &str, params: Option<&str>) -> Self {
assert!(!endpoint.is_empty(), "endpoint must not be empty");
let url = match params {
Some(params) => {
log::debug!("request endpoint is {endpoint} and params is {params}");
Url::parse(&format!(
"https://www.ruddr.io/api/workspace/{endpoint}?{params}"
))
.unwrap()
}
None => {
log::debug!("request endpoint is {endpoint} and params is empty");
Url::parse(&format!("https://www.ruddr.io/api/workspace/{endpoint}")).unwrap()
}
};
Self { url }
}
pub(super) async fn get(
&self,
client: &reqwest::Client,
) -> Result<reqwest::Response, reqwest::Error> {
log::debug!("initiating GET request at {}", self.url);
let response = client.get(self.url.as_str()).send().await?;
log::debug!("response received for GET request");
Ok(response)
}
}
#[cfg(test)]
mod tests;