use serde::{Deserialize, Serialize};
use super::FileState;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct UploadFileRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub file: Option<UploadFileMetadata>,
#[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
pub rest: serde_json::Map<String, serde_json::Value>,
}
pub type CreateFileRequest = UploadFileRequest;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct UploadFileMetadata {
#[serde(alias = "display_name", skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
pub rest: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct ListFilesRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
#[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
pub rest: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct FileRequest {
pub name: String,
#[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
pub rest: serde_json::Map<String, serde_json::Value>,
}
pub type RetrieveFileRequest = FileRequest;
pub type DeleteFileRequest = FileRequest;
pub type DownloadFileRequest = FileRequest;
pub type RetrieveFileResponse = File;
pub type DownloadFileResponse = Vec<u8>;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct UploadFileResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub file: Option<File>,
#[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
pub rest: serde_json::Map<String, serde_json::Value>,
}
pub type CreateFileResponse = UploadFileResponse;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct ListFilesResponse {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub files: Vec<File>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
#[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
pub rest: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct DeleteFileResponse {
#[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
pub rest: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct File {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<FileState>,
#[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
pub rest: serde_json::Map<String, serde_json::Value>,
}