rs_plugin_common_interfaces/provider/
mod.rs1use serde::{Deserialize, Serialize};
9use strum_macros::EnumString;
10
11use crate::RsRequest;
12
13
14#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
15#[serde(rename_all = "camelCase")]
16pub struct RsProviderPath {
17 pub root: Option<String>,
18 pub source: String,
19}
20
21#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
22#[serde(rename_all = "camelCase")]
23pub struct RsProviderAddRequest {
24 pub root: String,
25 pub name: String,
26 pub overwrite: bool,
27}
28
29#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
30#[serde(rename_all = "camelCase")]
31pub struct RsProviderAddResponse {
32 pub request: RsRequest,
33 pub multipart: Option<String>,
34 pub source: Option<String>,
35 pub packets: Option<u64>
36}
37
38#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display,EnumString, Default)]
39#[strum(serialize_all = "camelCase")]
40#[serde(rename_all = "camelCase")]
41pub enum RsProviderEntryType {
42 Directory,
43 File,
44 #[default]
45 Other
46}
47
48#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
49#[serde(rename_all = "camelCase")]
50pub struct RsProviderEntry {
51 pub source: String,
52 pub kind: RsProviderEntryType,
53 pub size: Option<u64>,
54 pub mimetype: Option<String>,
55
56 pub hash: Option<String>,
57
58 pub added: Option<i64>,
59 pub modified: Option<i64>,
60 pub created: Option<i64>,
61}
62
63impl RsProviderEntry {
64 pub fn mime_or_default(&self) -> String {
65 self.mimetype.clone().unwrap_or("application/octet-stream".to_string())
66 }
67}