use log::debug; use super::{ alias::{Alias, SharryAlias}, api::{NewShareRequest, NewShareResponse, NotifyShareResponse}, }; #[derive(Debug)] pub struct Share { pub(super) id: String, } impl Share { pub fn create( http: &ureq::Agent, alias: &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 { id: res.id }) } pub fn notify(&self, http: &ureq::Agent, alias: &Alias) -> Result<(), ureq::Error> { let endpoint = alias.get_endpoint(format!("alias/mail/notify/{}", self.id)); let res = (http.post(endpoint)) .sharry_header(alias) .send_empty()? .body_mut() .read_json::()?; debug!("response: {res:?}"); Ok(()) } }