1use std::fmt;
2use serde::{Serialize, Deserialize};
3
4#[derive(Default, Debug, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct AppIcon {
8 #[serde(skip_serializing_if = "Option::is_none")]
12 pub size: Option<i64>,
13
14 #[serde(skip_serializing_if = "Option::is_none")]
21 pub category: Option<String>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub icon_url: Option<String>,
26}
27
28impl fmt::Display for AppIcon {
29 fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
30 let json = serde_json::to_string_pretty(&self)
31 .unwrap_or( format!("unable to parse JSON, this is the debug view:\n{:#?}", self) );
32
33 write!(f, "{}", json)
34 }
35}
36
37impl AppIcon {
38 pub fn new() -> Self {
40 Self { ..Default::default() }
41 }
42}
43
44#[derive(Default, Debug, Clone, Serialize, Deserialize)]
46#[serde(rename_all = "camelCase")]
47pub struct AppList {
48 #[serde(skip_serializing_if = "Option::is_none")]
52 pub default_app_ids: Option<Vec<String>>,
53
54 #[serde(skip_serializing_if = "Option::is_none")]
58 pub kind: Option<String>,
59
60 #[serde(skip_serializing_if = "Option::is_none")]
62 pub self_link: Option<String>,
63
64 #[serde(skip_serializing_if = "Option::is_none")]
66 pub items: Option<Vec<App>>,
67}
68
69impl fmt::Display for AppList {
70 fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
71 let json = serde_json::to_string_pretty(&self)
72 .unwrap_or( format!("unable to parse JSON, this is the debug view:\n{:#?}", self) );
73
74 write!(f, "{}", json)
75 }
76}
77
78impl AppList {
79 pub fn new() -> Self {
81 Self { ..Default::default() }
82 }
83}
84
85#[derive(Default, Debug, Clone, Serialize, Deserialize)]
90#[serde(rename_all = "camelCase")]
91pub struct App {
92 #[serde(skip_serializing_if = "Option::is_none")]
94 pub name: Option<String>,
95
96 #[serde(skip_serializing_if = "Option::is_none")]
100 pub object_type: Option<String>,
101
102 #[serde(skip_serializing_if = "Option::is_none")]
104 pub supports_create: Option<bool>,
105
106 #[serde(skip_serializing_if = "Option::is_none")]
108 pub product_url: Option<String>,
109
110 #[serde(skip_serializing_if = "Option::is_none")]
112 pub primary_mime_types: Option<Vec<String>>,
113
114 #[serde(skip_serializing_if = "Option::is_none")]
116 pub secondary_mime_types: Option<Vec<String>>,
117
118 #[serde(skip_serializing_if = "Option::is_none")]
120 pub primary_file_extensions: Option<Vec<String>>,
121
122 #[serde(skip_serializing_if = "Option::is_none")]
124 pub secondary_file_extensions: Option<Vec<String>>,
125
126 #[serde(skip_serializing_if = "Option::is_none")]
128 pub id: Option<String>,
129
130 #[serde(skip_serializing_if = "Option::is_none")]
132 pub supports_import: Option<bool>,
133
134 #[serde(skip_serializing_if = "Option::is_none")]
136 pub installed: Option<bool>,
137
138 #[serde(skip_serializing_if = "Option::is_none")]
140 pub authorized: Option<bool>,
141
142 #[serde(skip_serializing_if = "Option::is_none")]
144 pub icons: Option<Vec<AppIcon>>,
145
146 #[serde(skip_serializing_if = "Option::is_none")]
148 pub use_by_default: Option<bool>,
149
150 #[serde(skip_serializing_if = "Option::is_none")]
154 pub kind: Option<String>,
155
156 #[serde(skip_serializing_if = "Option::is_none")]
158 pub short_description: Option<String>,
159
160 #[serde(skip_serializing_if = "Option::is_none")]
162 pub long_description: Option<String>,
163
164 #[serde(skip_serializing_if = "Option::is_none")]
166 pub supports_multi_open: Option<bool>,
167
168 #[serde(skip_serializing_if = "Option::is_none")]
170 pub product_id: Option<String>,
171
172 #[serde(skip_serializing_if = "Option::is_none")]
181 pub open_url_template: Option<String>,
182
183 #[serde(skip_serializing_if = "Option::is_none")]
185 pub create_url: Option<String>,
186
187 #[serde(skip_serializing_if = "Option::is_none")]
192 pub create_in_folder_template: Option<String>,
193
194 #[serde(skip_serializing_if = "Option::is_none")]
196 pub supports_offline_create: Option<bool>,
197
198 #[serde(skip_serializing_if = "Option::is_none")]
202 pub has_drive_wide_scope: Option<bool>,
203}
204
205impl fmt::Display for App {
206 fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
207 let json = serde_json::to_string_pretty(&self)
208 .unwrap_or( format!("unable to parse JSON, this is the debug view:\n{:#?}", self) );
209
210 write!(f, "{}", json)
211 }
212}
213
214impl App {
215 pub fn new() -> Self {
217 Self { ..Default::default() }
218 }
219}