rs_plugin_common_interfaces/provider/
mod.rs

1// Your plugin must implement:
2// exists(path: RsProviderPath) -> bool;
3// remove(path: RsProviderPath) -> bool;
4// infos(path: RsProviderPath) -> MediaForUpdate;
5// get(path: RsProviderPath) -> RsRequest;
6// add(path: RsProviderAddRequest) -> RsRequest;
7
8use 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}