Skip to main content

paperless_api/
share_link.rs

1use derive_more::Display;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Display, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
5#[serde(rename_all = "lowercase")]
6pub enum ShareLinkFileVersion {
7    Archive,
8    Original,
9}
10
11/// A share link
12#[derive(Debug, Clone, Deserialize)]
13pub struct ShareLink {
14    /// Unique identifier of the share link.
15    pub id: crate::id::ShareLinkId,
16
17    /// Document of the share link.
18    pub document: crate::id::DocumentId,
19
20    /// File version of the share link.
21    pub file_version: ShareLinkFileVersion,
22
23    /// Slug of the share link.
24    pub slug: String,
25
26    #[serde(skip)]
27    pub(crate) base_url: String,
28}
29
30impl ShareLink {
31    #[must_use]
32    pub fn url(&self) -> String {
33        format!("{}/share/{}", self.base_url, self.slug)
34    }
35}