cloudreve_sdk_api/models/
workflow.rs1use crate::models::common::PaginationResults;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "lowercase")]
7pub enum TaskStatus {
8 Queued,
9 Processing,
10 Suspending,
11 Error,
12 Canceled,
13 Completed,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(rename_all = "snake_case")]
19pub enum TaskType {
20 CreateArchive,
21 ExtractArchive,
22 Relocate,
23 RemoteDownload,
24 #[serde(rename = "media_meta")]
25 MediaMetadata,
26 EntityRecycleRoutine,
27 ExplicitEntityRecycle,
28 UploadSentinelCheck,
29 Import,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize, Default)]
34pub struct TaskResponse {
35 pub created_at: String,
36 pub updated_at: String,
37 pub id: String,
38 pub status: String,
39 #[serde(rename = "type")]
40 pub task_type: String,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub node: Option<NodeSummary>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub summary: Option<TaskSummary>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub error: Option<String>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub error_history: Option<Vec<String>>,
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub duration: Option<i64>,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub resume_time: Option<i64>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub retry_count: Option<i32>,
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize, Default)]
59pub struct TaskSummary {
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub phase: Option<String>,
62 pub props: TaskProps,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize, Default)]
67pub struct TaskProps {
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub src: Option<String>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub src_str: Option<String>,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub dst: Option<String>,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub src_multiple: Option<Vec<String>>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub dst_policy_id: Option<String>,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub failed: Option<i32>,
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub download: Option<DownloadTaskStatus>,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize, Default)]
86#[serde(rename_all = "lowercase")]
87pub enum DownloadTaskState {
88 #[default]
89 Seeding,
90 Downloading,
91 Error,
92 Completed,
93 Unknown,
94}
95
96#[derive(Debug, Clone, Serialize, Deserialize, Default)]
98pub struct DownloadTaskStatus {
99 pub name: String,
100 pub state: DownloadTaskState,
101 pub total: i64,
102 pub downloaded: i64,
103 pub download_speed: i64,
104 pub upload_speed: i64,
105 pub uploaded: i64,
106 #[serde(skip_serializing_if = "Option::is_none")]
107 pub files: Option<Vec<DownloadTaskFile>>,
108 #[serde(skip_serializing_if = "Option::is_none")]
109 pub hash: Option<String>,
110 #[serde(skip_serializing_if = "Option::is_none")]
111 pub pieces: Option<String>,
112 #[serde(skip_serializing_if = "Option::is_none")]
113 pub num_pieces: Option<i32>,
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize, Default)]
118pub struct DownloadTaskFile {
119 pub index: i32,
120 pub name: String,
121 pub size: i64,
122 pub progress: f64,
123 pub selected: bool,
124}
125
126#[derive(Debug, Clone, Serialize, Deserialize)]
128pub struct NodeSummary {
129 pub id: String,
130 pub name: String,
131 #[serde(rename = "type")]
132 pub node_type: NodeTypes,
133 pub capabilities: String,
134}
135
136#[derive(Debug, Clone, Serialize, Deserialize)]
138#[serde(rename_all = "lowercase")]
139pub enum NodeTypes {
140 Master,
141 Slave,
142}
143
144#[derive(Debug, Clone, Serialize, Deserialize)]
146pub struct ArchiveWorkflowService {
147 pub src: Vec<String>,
148 pub dst: String,
149 #[serde(skip_serializing_if = "Option::is_none")]
150 pub preferred_node_id: Option<String>,
151 #[serde(skip_serializing_if = "Option::is_none")]
152 pub encoding: Option<String>,
153 #[serde(skip_serializing_if = "Option::is_none")]
154 pub password: Option<String>,
155 #[serde(skip_serializing_if = "Option::is_none")]
156 pub file_mask: Option<Vec<String>>,
157}
158
159#[derive(Debug, Clone, Serialize, Deserialize)]
161pub struct RelocateWorkflowService {
162 pub src: Vec<String>,
163 pub dst_policy_id: String,
164}
165
166#[derive(Debug, Clone, Serialize, Deserialize)]
168pub struct DownloadWorkflowService {
169 #[serde(skip_serializing_if = "Option::is_none")]
170 pub src: Option<Vec<String>>,
171 #[serde(skip_serializing_if = "Option::is_none")]
172 pub src_file: Option<String>,
173 pub dst: String,
174 #[serde(skip_serializing_if = "Option::is_none")]
175 pub preferred_node_id: Option<String>,
176}
177
178#[derive(Debug, Clone, Serialize, Deserialize)]
180pub struct ImportWorkflowService {
181 pub src: String,
182 pub dst: String,
183 #[serde(skip_serializing_if = "Option::is_none")]
184 pub extract_media_meta: Option<bool>,
185 pub user_id: String,
186 #[serde(skip_serializing_if = "Option::is_none")]
187 pub recursive: Option<bool>,
188 pub policy_id: i32,
189}
190
191#[derive(Debug, Clone, Serialize, Deserialize)]
193pub struct ListTaskService {
194 pub page_size: i32,
195 pub category: ListTaskCategory,
196 #[serde(skip_serializing_if = "Option::is_none")]
197 pub next_page_token: Option<String>,
198}
199
200#[derive(Debug, Clone, Serialize, Deserialize)]
202#[serde(rename_all = "lowercase")]
203pub enum ListTaskCategory {
204 General,
205 Downloading,
206 Downloaded,
207}
208
209#[derive(Debug, Clone, Serialize, Deserialize, Default)]
211pub struct TaskListResponse {
212 pub tasks: Vec<TaskResponse>,
213 pub pagination: PaginationResults,
214}
215
216#[derive(Debug, Clone, Serialize, Deserialize)]
218pub struct SetDownloadFilesService {
219 pub files: Vec<SetFileToDownloadArgs>,
220}
221
222#[derive(Debug, Clone, Serialize, Deserialize)]
224pub struct SetFileToDownloadArgs {
225 pub index: i32,
226 pub download: bool,
227}
228
229pub mod node_capability {
231 pub const NONE: i32 = 0;
232 pub const CREATE_ARCHIVE: i32 = 1;
233 pub const EXTRACT_ARCHIVE: i32 = 2;
234 pub const REMOTE_DOWNLOAD: i32 = 3;
235}