use serde::Serialize;
use std::collections::HashMap;
#[derive(Debug, Serialize)]
pub struct UploadRequest<'a> {
pub path: &'a str,
pub name: Option<&'a str>,
pub overwrite: Option<bool>,
}
#[derive(Debug, Serialize, Default)]
pub struct ListFilesRequest<'a> {
pub path: &'a str,
pub page: Option<u32>,
pub page_size: Option<u32>,
pub order_by: Option<&'a str>,
pub order_direction: Option<&'a str>,
pub next_page_token: Option<&'a str>,
}
#[derive(Debug, Serialize, Default)]
pub struct SearchFilesRequest<'a> {
pub path: &'a str,
pub keyword: &'a str,
pub case_folding: bool,
pub page: Option<u32>,
pub page_size: Option<u32>,
pub next_page_token: Option<&'a str>,
}
#[derive(Debug, Serialize)]
pub struct MoveFileRequest<'a> {
pub uris: Vec<&'a str>,
pub dst: &'a str,
#[serde(skip_serializing_if = "Option::is_none")]
pub copy: Option<bool>,
}
#[derive(Debug, Serialize)]
pub struct CopyFileRequest<'a> {
pub uris: Vec<&'a str>,
pub dst: &'a str,
}
#[derive(Debug, Serialize)]
pub struct RenameFileRequest<'a> {
pub uri: &'a str,
pub new_name: &'a str,
}
#[derive(Debug, Serialize)]
pub struct SetFilePermissionRequest<'a> {
pub uri: &'a str,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_explicit: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub group_explicit: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub same_group: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub other: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub anonymous: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub everyone: Option<&'a str>,
}
#[derive(Debug, Serialize)]
pub struct CreateUploadSessionRequest<'a> {
pub uri: &'a str,
pub size: u64,
pub policy_id: &'a str,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_modified: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mime_type: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<std::collections::HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub entity_type: Option<&'a str>,
}
#[derive(Debug, Serialize)]
pub struct DeleteUploadSessionRequest<'a> {
pub id: &'a str,
pub uri: &'a str,
}
#[derive(Debug, Serialize)]
pub struct MoveCopyFileRequest<'a> {
pub from: Vec<&'a str>,
pub to: &'a str,
#[serde(skip_serializing_if = "Option::is_none")]
pub copy: Option<bool>,
}
#[derive(Debug, Serialize)]
pub struct UpdateFileContentRequest<'a> {
pub uri: &'a str,
pub content: &'a str,
}
#[derive(Debug, Serialize)]
pub struct CreateViewerSessionRequest<'a> {
pub uri: &'a str,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum CreateFileType {
File,
Folder,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateFileRequest<'a> {
pub uri: &'a str,
pub r#type: CreateFileType,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub err_on_conflict: Option<bool>,
}
#[derive(Debug, Serialize)]
pub struct RenameMultipleRequest<'a> {
pub uris: Vec<&'a str>,
pub names: Vec<&'a str>,
}
#[derive(Debug, Serialize)]
pub struct CreateDownloadUrlRequest<'a> {
pub uris: Vec<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub download: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub redirect: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub entity: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub use_primary_site_url: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub skip_error: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub archive: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub no_cache: Option<bool>,
}
#[derive(Debug, Serialize)]
pub struct RestoreFileRequest<'a> {
pub uris: Vec<&'a str>,
}
#[derive(Debug, Serialize)]
pub struct UpdateMetadataRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub clear_metadata: Option<bool>,
}
#[derive(Debug, Serialize)]
pub struct MountStoragePolicyRequest {
pub policy_id: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub inherit_to_children: Option<bool>,
}
#[derive(Debug, Serialize)]
pub struct UpdateViewRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order_direction: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub view: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumbnail: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gallery_width: Option<i32>,
}
#[derive(Debug, Serialize)]
pub struct GetFileInfoRequest<'a> {
pub uri: &'a str,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_extended_info: Option<bool>,
}
#[derive(Debug, Serialize)]
pub struct GetArchiveListRequest<'a> {
pub uri: &'a str,
}
#[derive(Debug, Serialize)]
pub struct RelocateRequest<'a> {
#[serde(rename = "src")]
pub src: Vec<&'a str>,
#[serde(rename = "dst_policy_id")]
pub dst_policy_id: &'a str,
}
#[derive(Debug, Serialize)]
pub struct ImportRequest<'a> {
#[serde(rename = "src")]
pub src: &'a str,
#[serde(rename = "dst")]
pub dst: &'a str,
#[serde(rename = "user_id")]
pub user_id: &'a str,
#[serde(rename = "policy_id")]
pub policy_id: i32,
#[serde(rename = "extract_media_meta")]
pub extract_media_meta: Option<bool>,
#[serde(rename = "recursive")]
pub recursive: Option<bool>,
}
#[derive(Debug, Serialize)]
pub struct SelectDownloadFilesRequest<'a> {
pub selected_files: Vec<&'a str>,
}
#[derive(Debug, Serialize)]
pub struct DeleteFileRequest<'a> {
pub uris: Vec<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unlink: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub skip_soft_delete: Option<bool>,
}
#[derive(Debug, Serialize)]
pub struct UnlockFilesRequest<'a> {
pub tokens: Vec<&'a str>,
}
#[derive(Debug, Serialize)]
pub struct CreateDownloadRequest<'a> {
#[serde(rename = "dst")]
pub dst: &'a str,
#[serde(rename = "src")]
pub src: Vec<&'a str>,
#[serde(rename = "preferred_node_id")]
pub preferred_node_id: Option<String>,
}
#[derive(Debug, Serialize)]
pub struct CreateDirectLinkRequest<'a> {
pub uris: Vec<&'a str>,
}