2025-05-22 17:34:44 +00:00
|
|
|
pub mod api;
|
|
|
|
|
|
2025-05-22 21:07:49 +00:00
|
|
|
use api::{NewShareRequest, NewShareResponse, NotifyShareResponse, URI};
|
2025-05-22 17:34:44 +00:00
|
|
|
use log::debug;
|
2025-05-22 21:07:49 +00:00
|
|
|
use ureq::{self, RequestBuilder};
|
2025-05-22 17:34:44 +00:00
|
|
|
|
|
|
|
|
#[derive(Debug)]
|
2025-05-22 21:07:49 +00:00
|
|
|
pub struct Alias {
|
|
|
|
|
uri: URI,
|
2025-05-22 17:34:44 +00:00
|
|
|
id: String,
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-22 21:07:49 +00:00
|
|
|
impl Alias {
|
|
|
|
|
pub fn new(uri: URI, id: &str) -> Self {
|
|
|
|
|
Self { uri, id: id.into() }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn add_headers<B>(&self, req: RequestBuilder<B>) -> RequestBuilder<B> {
|
|
|
|
|
req.header("Sharry-Alias", &self.id)
|
2025-05-22 17:34:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn create_share(
|
|
|
|
|
&self,
|
|
|
|
|
http: &ureq::Agent,
|
|
|
|
|
data: &NewShareRequest,
|
|
|
|
|
) -> Result<Share, ureq::Error> {
|
2025-05-22 21:07:49 +00:00
|
|
|
let endpoint = self.uri.get_endpoint("alias/upload/new");
|
|
|
|
|
|
|
|
|
|
let res = self
|
|
|
|
|
.add_headers(http.post(endpoint))
|
2025-05-22 17:34:44 +00:00
|
|
|
.send_json(data)?
|
|
|
|
|
.body_mut()
|
|
|
|
|
.read_json::<NewShareResponse>()?;
|
|
|
|
|
|
2025-05-22 21:07:49 +00:00
|
|
|
debug!("response: {:?}", res);
|
|
|
|
|
assert!(res.success);
|
|
|
|
|
assert_eq!(res.message, "Share created.");
|
2025-05-22 17:34:44 +00:00
|
|
|
|
|
|
|
|
Ok(Share {
|
|
|
|
|
alias: self,
|
2025-05-22 21:07:49 +00:00
|
|
|
id: res.id,
|
2025-05-22 17:34:44 +00:00
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Debug)]
|
|
|
|
|
pub struct Share<'t> {
|
2025-05-22 21:07:49 +00:00
|
|
|
alias: &'t Alias,
|
2025-05-22 17:34:44 +00:00
|
|
|
id: String,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl<'t> Share<'t> {
|
|
|
|
|
pub fn add_file(&self) {}
|
2025-05-22 21:07:49 +00:00
|
|
|
|
|
|
|
|
pub fn notify(&self, http: &ureq::Agent) -> Result<(), ureq::Error> {
|
|
|
|
|
let endpoint = self
|
|
|
|
|
.alias
|
|
|
|
|
.uri
|
|
|
|
|
.get_endpoint(&format!("alias/mail/notify/{}", &self.id));
|
|
|
|
|
|
|
|
|
|
let res = self
|
|
|
|
|
.alias
|
|
|
|
|
.add_headers(http.post(endpoint))
|
|
|
|
|
.send_empty()?
|
|
|
|
|
.body_mut()
|
|
|
|
|
.read_json::<NotifyShareResponse>()?;
|
|
|
|
|
|
|
|
|
|
debug!("response: {:?}", res);
|
|
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|
2025-05-22 17:34:44 +00:00
|
|
|
}
|