use log;
use reqwest::Url;
#[derive(Debug)]
pub(super) struct Request {
url: Url,
}
impl Request {
pub(super) fn new(
endpoint: &str,
params: Option<&str>,
) -> Result<Self, Box<dyn std::error::Error>> {
if endpoint.is_empty() {
log::error!("endpoint is empty");
return Err(Box::from("invalid empty endpoint"));
}
match params {
Some(params) => {
log::debug!("request endpoint is {endpoint} and params is {params}");
Ok(Self {
url: Url::parse(&format!(
"https://www.ruddr.io/api/workspace/{endpoint}?{params}"
))?,
})
}
None => {
log::debug!("request endpoint is {endpoint} and params is empty");
Ok(Self {
url: Url::parse(&format!("https://www.ruddr.io/api/workspace/{endpoint}"))?,
})
}
}
}
pub(super) async fn get(
&self,
client: &reqwest::Client,
) -> Result<reqwest::Response, Box<dyn std::error::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;