pub trait QueryUrl {
fn query_url(&self) -> Result<String, crate::Error>;
}
impl<T> QueryUrl for T
where
T: crate::traits::Validatable + crate::traits::QueryString + crate::traits::EndPoint,
{
fn query_url(&self) -> Result<String, crate::Error> {
self.validate()?;
#[allow(clippy::option_if_let_else)] if let Some(output_format) = T::output_format() {
Ok(format!(
"{service_url}/{output_format}?{query_string}",
service_url = T::service_url(),
query_string = self.query_string()
))
} else {
Ok(format!(
"{service_url}?{query_string}",
service_url = T::service_url(),
query_string = self.query_string()
))
} } }