Skip to main content

gproxy_protocol/gemini/
files.rs

1use serde::{Deserialize, Serialize};
2
3use super::FileState;
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6#[serde(rename_all = "camelCase")]
7#[derive(gproxy_protocol_macros::WireBuilder)]
8#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
9pub struct UploadFileRequest {
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub file: Option<UploadFileMetadata>,
12    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
13    pub rest: serde_json::Map<String, serde_json::Value>,
14}
15
16pub type CreateFileRequest = UploadFileRequest;
17
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
19#[serde(rename_all = "camelCase")]
20#[derive(gproxy_protocol_macros::WireBuilder)]
21#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
22pub struct UploadFileMetadata {
23    #[serde(alias = "display_name", skip_serializing_if = "Option::is_none")]
24    pub display_name: Option<String>,
25    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
26    pub rest: serde_json::Map<String, serde_json::Value>,
27}
28
29#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
30#[serde(rename_all = "camelCase")]
31#[derive(gproxy_protocol_macros::WireBuilder)]
32#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
33pub struct ListFilesRequest {
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub page_size: Option<u32>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub page_token: Option<String>,
38    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
39    pub rest: serde_json::Map<String, serde_json::Value>,
40}
41
42#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
43#[serde(rename_all = "camelCase")]
44#[derive(gproxy_protocol_macros::WireBuilder)]
45#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
46pub struct FileRequest {
47    pub name: String,
48    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
49    pub rest: serde_json::Map<String, serde_json::Value>,
50}
51
52pub type RetrieveFileRequest = FileRequest;
53pub type DeleteFileRequest = FileRequest;
54pub type DownloadFileRequest = FileRequest;
55pub type RetrieveFileResponse = File;
56pub type DownloadFileResponse = Vec<u8>;
57
58#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
59#[serde(rename_all = "camelCase")]
60#[derive(gproxy_protocol_macros::WireBuilder)]
61#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
62pub struct UploadFileResponse {
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub file: Option<File>,
65    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
66    pub rest: serde_json::Map<String, serde_json::Value>,
67}
68
69pub type CreateFileResponse = UploadFileResponse;
70
71#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
72#[serde(rename_all = "camelCase")]
73#[derive(gproxy_protocol_macros::WireBuilder)]
74#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
75pub struct ListFilesResponse {
76    #[serde(default, skip_serializing_if = "Vec::is_empty")]
77    pub files: Vec<File>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub next_page_token: Option<String>,
80    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
81    pub rest: serde_json::Map<String, serde_json::Value>,
82}
83
84#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
85#[serde(rename_all = "camelCase")]
86#[derive(gproxy_protocol_macros::WireBuilder)]
87#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
88pub struct DeleteFileResponse {
89    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
90    pub rest: serde_json::Map<String, serde_json::Value>,
91}
92
93#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
94#[serde(rename_all = "camelCase")]
95#[derive(gproxy_protocol_macros::WireBuilder)]
96#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
97pub struct File {
98    #[serde(skip_serializing_if = "Option::is_none")]
99    pub name: Option<String>,
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub mime_type: Option<String>,
102    #[serde(skip_serializing_if = "Option::is_none")]
103    pub uri: Option<String>,
104    #[serde(skip_serializing_if = "Option::is_none")]
105    pub state: Option<FileState>,
106    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
107    pub rest: serde_json::Map<String, serde_json::Value>,
108}