paperless_api/
share_link.rs1use chrono::{DateTime, Utc};
4use derive_more::Display;
5use serde::{Deserialize, Serialize};
6
7use paperless_api_macros::{CreateDto, Item};
8
9use crate::PaperlessClient;
10
11#[derive(Debug, Display, Default, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
13#[serde(rename_all = "lowercase")]
14pub enum ShareLinkFileVersion {
15 #[default]
18 Archive,
19
20 Original,
22}
23
24#[derive(Debug, Clone, Deserialize, CreateDto, Item)]
26pub struct ShareLink {
27 #[dto(skip)]
29 pub id: crate::id::ShareLinkId,
30
31 #[dto(skip)]
33 pub slug: String,
34
35 #[dto(skip)]
37 pub created: DateTime<Utc>,
38
39 pub document: crate::id::DocumentId,
41
42 pub expiration: DateTime<Utc>,
44
45 pub file_version: ShareLinkFileVersion,
47}
48
49impl ShareLink {
50 #[must_use]
52 pub fn url(&self, client: &PaperlessClient) -> String {
53 format!("{}/share/{}", client.base_url, self.slug)
54 }
55}