shrupl/src/sharry/alias.rs

38 lines
814 B
Rust

use std::fmt::{Debug, Display};
use log::debug;
use ureq::RequestBuilder;
use super::api::Uri;
#[derive(Debug, Hash)]
pub struct Alias {
pub(super) api_uri: String,
pub(super) id: String,
}
pub(super) trait SharryAlias {
fn sharry_header(self, alias: &Alias) -> Self;
}
impl<B> SharryAlias for RequestBuilder<B> {
fn sharry_header(self, alias: &Alias) -> Self {
self.header("Sharry-Alias", &alias.id)
}
}
impl Alias {
pub fn new(api_uri: Uri, id: impl Into<String>) -> Self {
Self {
api_uri: api_uri.into(),
id: id.into(),
}
}
pub(super) fn get_endpoint(&self, endpoint: impl Display + Debug) -> String {
let uri = format!("{}/{}", self.api_uri, endpoint);
debug!("endpoint uri: {uri:?}");
uri
}
}