use log::debug; use super::{ alias::{Alias, SharryAlias}, api::{NewShareRequest, NewShareResponse, NotifyShareResponse}, }; #[derive(Debug)] pub struct Share<'t> { pub(super) alias: &'t Alias, pub(super) id: String, } impl<'t> Share<'t> { pub fn create( http: &ureq::Agent, alias: &'t Alias, data: NewShareRequest, ) -> Result { let res = http .post(alias.get_endpoint("alias/upload/new")) .sharry_header(alias) .send_json(data)? .body_mut() .read_json::()?; debug!("response: {res:?}"); if !(res.success && (res.message == "Share created.")) { return Err(ureq::Error::Other("unexpected json response".into())); } Ok(Self { alias, id: res.id }) } pub fn notify(&self, http: &ureq::Agent) -> Result<(), ureq::Error> { let endpoint = self .alias .get_endpoint(format!("alias/mail/notify/{}", self.id)); let res = http .post(endpoint) .sharry_header(self.alias) .send_empty()? .body_mut() .read_json::()?; debug!("response: {res:?}"); Ok(()) } }