paperless_api/
share_link.rs1use std::sync::Arc;
4
5use derive_more::Display;
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Display, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
10#[serde(rename_all = "lowercase")]
11pub enum ShareLinkFileVersion {
12 Archive,
15
16 Original,
18}
19
20#[derive(Debug, Clone, Deserialize)]
22pub struct ShareLink {
23 pub id: crate::id::ShareLinkId,
25
26 pub document: crate::id::DocumentId,
28
29 pub file_version: ShareLinkFileVersion,
31
32 pub slug: String,
34
35 #[serde(skip)]
36 pub(crate) base_url: Arc<str>,
37}
38
39impl ShareLink {
40 #[must_use]
41 pub fn url(&self) -> String {
42 format!("{}/share/{}", self.base_url, self.slug)
43 }
44}