1#![allow(
5 clippy::too_many_arguments,
6 clippy::large_enum_variant,
7 clippy::result_large_err,
8 clippy::doc_markdown,
9)]
10
11pub type PaperDocId = String;
18
19#[derive(Debug, Clone, PartialEq, Eq)]
20#[non_exhaustive] pub struct AddMember {
22 pub member: crate::types::sharing::MemberSelector,
25 pub permission_level: PaperDocPermissionLevel,
27}
28
29impl AddMember {
30 pub fn new(member: crate::types::sharing::MemberSelector) -> Self {
31 AddMember {
32 member,
33 permission_level: PaperDocPermissionLevel::Edit,
34 }
35 }
36
37 pub fn with_permission_level(mut self, value: PaperDocPermissionLevel) -> Self {
38 self.permission_level = value;
39 self
40 }
41}
42
43const ADD_MEMBER_FIELDS: &[&str] = &["member",
44 "permission_level"];
45impl AddMember {
46 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
47 map: V,
48 ) -> Result<AddMember, V::Error> {
49 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
50 }
51
52 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
53 mut map: V,
54 optional: bool,
55 ) -> Result<Option<AddMember>, V::Error> {
56 let mut field_member = None;
57 let mut field_permission_level = None;
58 let mut nothing = true;
59 while let Some(key) = map.next_key::<&str>()? {
60 nothing = false;
61 match key {
62 "member" => {
63 if field_member.is_some() {
64 return Err(::serde::de::Error::duplicate_field("member"));
65 }
66 field_member = Some(map.next_value()?);
67 }
68 "permission_level" => {
69 if field_permission_level.is_some() {
70 return Err(::serde::de::Error::duplicate_field("permission_level"));
71 }
72 field_permission_level = Some(map.next_value()?);
73 }
74 _ => {
75 map.next_value::<::serde_json::Value>()?;
77 }
78 }
79 }
80 if optional && nothing {
81 return Ok(None);
82 }
83 let result = AddMember {
84 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
85 permission_level: field_permission_level.unwrap_or(PaperDocPermissionLevel::Edit),
86 };
87 Ok(Some(result))
88 }
89
90 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
91 &self,
92 s: &mut S::SerializeStruct,
93 ) -> Result<(), S::Error> {
94 use serde::ser::SerializeStruct;
95 s.serialize_field("member", &self.member)?;
96 if self.permission_level != PaperDocPermissionLevel::Edit {
97 s.serialize_field("permission_level", &self.permission_level)?;
98 }
99 Ok(())
100 }
101}
102
103impl<'de> ::serde::de::Deserialize<'de> for AddMember {
104 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
105 use serde::de::{MapAccess, Visitor};
107 struct StructVisitor;
108 impl<'de> Visitor<'de> for StructVisitor {
109 type Value = AddMember;
110 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
111 f.write_str("a AddMember struct")
112 }
113 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
114 AddMember::internal_deserialize(map)
115 }
116 }
117 deserializer.deserialize_struct("AddMember", ADD_MEMBER_FIELDS, StructVisitor)
118 }
119}
120
121impl ::serde::ser::Serialize for AddMember {
122 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
123 use serde::ser::SerializeStruct;
125 let mut s = serializer.serialize_struct("AddMember", 2)?;
126 self.internal_serialize::<S>(&mut s)?;
127 s.end()
128 }
129}
130
131#[derive(Debug, Clone, PartialEq, Eq)]
132#[non_exhaustive] pub struct AddPaperDocUser {
134 pub doc_id: PaperDocId,
136 pub members: Vec<AddMember>,
139 pub custom_message: Option<String>,
141 pub quiet: bool,
143}
144
145impl AddPaperDocUser {
146 pub fn new(doc_id: PaperDocId, members: Vec<AddMember>) -> Self {
147 AddPaperDocUser {
148 doc_id,
149 members,
150 custom_message: None,
151 quiet: false,
152 }
153 }
154
155 pub fn with_custom_message(mut self, value: String) -> Self {
156 self.custom_message = Some(value);
157 self
158 }
159
160 pub fn with_quiet(mut self, value: bool) -> Self {
161 self.quiet = value;
162 self
163 }
164}
165
166const ADD_PAPER_DOC_USER_FIELDS: &[&str] = &["doc_id",
167 "members",
168 "custom_message",
169 "quiet"];
170impl AddPaperDocUser {
171 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
172 map: V,
173 ) -> Result<AddPaperDocUser, V::Error> {
174 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
175 }
176
177 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
178 mut map: V,
179 optional: bool,
180 ) -> Result<Option<AddPaperDocUser>, V::Error> {
181 let mut field_doc_id = None;
182 let mut field_members = None;
183 let mut field_custom_message = None;
184 let mut field_quiet = None;
185 let mut nothing = true;
186 while let Some(key) = map.next_key::<&str>()? {
187 nothing = false;
188 match key {
189 "doc_id" => {
190 if field_doc_id.is_some() {
191 return Err(::serde::de::Error::duplicate_field("doc_id"));
192 }
193 field_doc_id = Some(map.next_value()?);
194 }
195 "members" => {
196 if field_members.is_some() {
197 return Err(::serde::de::Error::duplicate_field("members"));
198 }
199 field_members = Some(map.next_value()?);
200 }
201 "custom_message" => {
202 if field_custom_message.is_some() {
203 return Err(::serde::de::Error::duplicate_field("custom_message"));
204 }
205 field_custom_message = Some(map.next_value()?);
206 }
207 "quiet" => {
208 if field_quiet.is_some() {
209 return Err(::serde::de::Error::duplicate_field("quiet"));
210 }
211 field_quiet = Some(map.next_value()?);
212 }
213 _ => {
214 map.next_value::<::serde_json::Value>()?;
216 }
217 }
218 }
219 if optional && nothing {
220 return Ok(None);
221 }
222 let result = AddPaperDocUser {
223 doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?,
224 members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?,
225 custom_message: field_custom_message.and_then(Option::flatten),
226 quiet: field_quiet.unwrap_or(false),
227 };
228 Ok(Some(result))
229 }
230
231 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
232 &self,
233 s: &mut S::SerializeStruct,
234 ) -> Result<(), S::Error> {
235 use serde::ser::SerializeStruct;
236 s.serialize_field("doc_id", &self.doc_id)?;
237 s.serialize_field("members", &self.members)?;
238 if let Some(val) = &self.custom_message {
239 s.serialize_field("custom_message", val)?;
240 }
241 if self.quiet {
242 s.serialize_field("quiet", &self.quiet)?;
243 }
244 Ok(())
245 }
246}
247
248impl<'de> ::serde::de::Deserialize<'de> for AddPaperDocUser {
249 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
250 use serde::de::{MapAccess, Visitor};
252 struct StructVisitor;
253 impl<'de> Visitor<'de> for StructVisitor {
254 type Value = AddPaperDocUser;
255 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
256 f.write_str("a AddPaperDocUser struct")
257 }
258 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
259 AddPaperDocUser::internal_deserialize(map)
260 }
261 }
262 deserializer.deserialize_struct("AddPaperDocUser", ADD_PAPER_DOC_USER_FIELDS, StructVisitor)
263 }
264}
265
266impl ::serde::ser::Serialize for AddPaperDocUser {
267 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
268 use serde::ser::SerializeStruct;
270 let mut s = serializer.serialize_struct("AddPaperDocUser", 4)?;
271 self.internal_serialize::<S>(&mut s)?;
272 s.end()
273 }
274}
275
276impl From<AddPaperDocUser> for RefPaperDoc {
278 fn from(subtype: AddPaperDocUser) -> Self {
279 Self {
280 doc_id: subtype.doc_id,
281 }
282 }
283}
284#[derive(Debug, Clone, PartialEq, Eq)]
286#[non_exhaustive] pub struct AddPaperDocUserMemberResult {
288 pub member: crate::types::sharing::MemberSelector,
290 pub result: AddPaperDocUserResult,
292}
293
294impl AddPaperDocUserMemberResult {
295 pub fn new(
296 member: crate::types::sharing::MemberSelector,
297 result: AddPaperDocUserResult,
298 ) -> Self {
299 AddPaperDocUserMemberResult {
300 member,
301 result,
302 }
303 }
304}
305
306const ADD_PAPER_DOC_USER_MEMBER_RESULT_FIELDS: &[&str] = &["member",
307 "result"];
308impl AddPaperDocUserMemberResult {
309 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
310 map: V,
311 ) -> Result<AddPaperDocUserMemberResult, V::Error> {
312 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
313 }
314
315 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
316 mut map: V,
317 optional: bool,
318 ) -> Result<Option<AddPaperDocUserMemberResult>, V::Error> {
319 let mut field_member = None;
320 let mut field_result = None;
321 let mut nothing = true;
322 while let Some(key) = map.next_key::<&str>()? {
323 nothing = false;
324 match key {
325 "member" => {
326 if field_member.is_some() {
327 return Err(::serde::de::Error::duplicate_field("member"));
328 }
329 field_member = Some(map.next_value()?);
330 }
331 "result" => {
332 if field_result.is_some() {
333 return Err(::serde::de::Error::duplicate_field("result"));
334 }
335 field_result = Some(map.next_value()?);
336 }
337 _ => {
338 map.next_value::<::serde_json::Value>()?;
340 }
341 }
342 }
343 if optional && nothing {
344 return Ok(None);
345 }
346 let result = AddPaperDocUserMemberResult {
347 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
348 result: field_result.ok_or_else(|| ::serde::de::Error::missing_field("result"))?,
349 };
350 Ok(Some(result))
351 }
352
353 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
354 &self,
355 s: &mut S::SerializeStruct,
356 ) -> Result<(), S::Error> {
357 use serde::ser::SerializeStruct;
358 s.serialize_field("member", &self.member)?;
359 s.serialize_field("result", &self.result)?;
360 Ok(())
361 }
362}
363
364impl<'de> ::serde::de::Deserialize<'de> for AddPaperDocUserMemberResult {
365 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
366 use serde::de::{MapAccess, Visitor};
368 struct StructVisitor;
369 impl<'de> Visitor<'de> for StructVisitor {
370 type Value = AddPaperDocUserMemberResult;
371 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
372 f.write_str("a AddPaperDocUserMemberResult struct")
373 }
374 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
375 AddPaperDocUserMemberResult::internal_deserialize(map)
376 }
377 }
378 deserializer.deserialize_struct("AddPaperDocUserMemberResult", ADD_PAPER_DOC_USER_MEMBER_RESULT_FIELDS, StructVisitor)
379 }
380}
381
382impl ::serde::ser::Serialize for AddPaperDocUserMemberResult {
383 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
384 use serde::ser::SerializeStruct;
386 let mut s = serializer.serialize_struct("AddPaperDocUserMemberResult", 2)?;
387 self.internal_serialize::<S>(&mut s)?;
388 s.end()
389 }
390}
391
392#[derive(Debug, Clone, PartialEq, Eq)]
393#[non_exhaustive] pub enum AddPaperDocUserResult {
395 Success,
397 UnknownError,
399 SharingOutsideTeamDisabled,
401 DailyLimitReached,
403 UserIsOwner,
405 FailedUserDataRetrieval,
407 PermissionAlreadyGranted,
409 Other,
412}
413
414impl<'de> ::serde::de::Deserialize<'de> for AddPaperDocUserResult {
415 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
416 use serde::de::{self, MapAccess, Visitor};
418 struct EnumVisitor;
419 impl<'de> Visitor<'de> for EnumVisitor {
420 type Value = AddPaperDocUserResult;
421 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
422 f.write_str("a AddPaperDocUserResult structure")
423 }
424 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
425 let tag: &str = match map.next_key()? {
426 Some(".tag") => map.next_value()?,
427 _ => return Err(de::Error::missing_field(".tag"))
428 };
429 let value = match tag {
430 "success" => AddPaperDocUserResult::Success,
431 "unknown_error" => AddPaperDocUserResult::UnknownError,
432 "sharing_outside_team_disabled" => AddPaperDocUserResult::SharingOutsideTeamDisabled,
433 "daily_limit_reached" => AddPaperDocUserResult::DailyLimitReached,
434 "user_is_owner" => AddPaperDocUserResult::UserIsOwner,
435 "failed_user_data_retrieval" => AddPaperDocUserResult::FailedUserDataRetrieval,
436 "permission_already_granted" => AddPaperDocUserResult::PermissionAlreadyGranted,
437 _ => AddPaperDocUserResult::Other,
438 };
439 crate::eat_json_fields(&mut map)?;
440 Ok(value)
441 }
442 }
443 const VARIANTS: &[&str] = &["success",
444 "unknown_error",
445 "sharing_outside_team_disabled",
446 "daily_limit_reached",
447 "user_is_owner",
448 "failed_user_data_retrieval",
449 "permission_already_granted",
450 "other"];
451 deserializer.deserialize_struct("AddPaperDocUserResult", VARIANTS, EnumVisitor)
452 }
453}
454
455impl ::serde::ser::Serialize for AddPaperDocUserResult {
456 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
457 use serde::ser::SerializeStruct;
459 match self {
460 AddPaperDocUserResult::Success => {
461 let mut s = serializer.serialize_struct("AddPaperDocUserResult", 1)?;
463 s.serialize_field(".tag", "success")?;
464 s.end()
465 }
466 AddPaperDocUserResult::UnknownError => {
467 let mut s = serializer.serialize_struct("AddPaperDocUserResult", 1)?;
469 s.serialize_field(".tag", "unknown_error")?;
470 s.end()
471 }
472 AddPaperDocUserResult::SharingOutsideTeamDisabled => {
473 let mut s = serializer.serialize_struct("AddPaperDocUserResult", 1)?;
475 s.serialize_field(".tag", "sharing_outside_team_disabled")?;
476 s.end()
477 }
478 AddPaperDocUserResult::DailyLimitReached => {
479 let mut s = serializer.serialize_struct("AddPaperDocUserResult", 1)?;
481 s.serialize_field(".tag", "daily_limit_reached")?;
482 s.end()
483 }
484 AddPaperDocUserResult::UserIsOwner => {
485 let mut s = serializer.serialize_struct("AddPaperDocUserResult", 1)?;
487 s.serialize_field(".tag", "user_is_owner")?;
488 s.end()
489 }
490 AddPaperDocUserResult::FailedUserDataRetrieval => {
491 let mut s = serializer.serialize_struct("AddPaperDocUserResult", 1)?;
493 s.serialize_field(".tag", "failed_user_data_retrieval")?;
494 s.end()
495 }
496 AddPaperDocUserResult::PermissionAlreadyGranted => {
497 let mut s = serializer.serialize_struct("AddPaperDocUserResult", 1)?;
499 s.serialize_field(".tag", "permission_already_granted")?;
500 s.end()
501 }
502 AddPaperDocUserResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
503 }
504 }
505}
506
507#[derive(Debug, Clone, PartialEq, Eq)]
508#[non_exhaustive] pub struct Cursor {
510 pub value: String,
512 pub expiration: Option<crate::types::common::DropboxTimestamp>,
523}
524
525impl Cursor {
526 pub fn new(value: String) -> Self {
527 Cursor {
528 value,
529 expiration: None,
530 }
531 }
532
533 pub fn with_expiration(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
534 self.expiration = Some(value);
535 self
536 }
537}
538
539const CURSOR_FIELDS: &[&str] = &["value",
540 "expiration"];
541impl Cursor {
542 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
543 map: V,
544 ) -> Result<Cursor, V::Error> {
545 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
546 }
547
548 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
549 mut map: V,
550 optional: bool,
551 ) -> Result<Option<Cursor>, V::Error> {
552 let mut field_value = None;
553 let mut field_expiration = None;
554 let mut nothing = true;
555 while let Some(key) = map.next_key::<&str>()? {
556 nothing = false;
557 match key {
558 "value" => {
559 if field_value.is_some() {
560 return Err(::serde::de::Error::duplicate_field("value"));
561 }
562 field_value = Some(map.next_value()?);
563 }
564 "expiration" => {
565 if field_expiration.is_some() {
566 return Err(::serde::de::Error::duplicate_field("expiration"));
567 }
568 field_expiration = Some(map.next_value()?);
569 }
570 _ => {
571 map.next_value::<::serde_json::Value>()?;
573 }
574 }
575 }
576 if optional && nothing {
577 return Ok(None);
578 }
579 let result = Cursor {
580 value: field_value.ok_or_else(|| ::serde::de::Error::missing_field("value"))?,
581 expiration: field_expiration.and_then(Option::flatten),
582 };
583 Ok(Some(result))
584 }
585
586 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
587 &self,
588 s: &mut S::SerializeStruct,
589 ) -> Result<(), S::Error> {
590 use serde::ser::SerializeStruct;
591 s.serialize_field("value", &self.value)?;
592 if let Some(val) = &self.expiration {
593 s.serialize_field("expiration", val)?;
594 }
595 Ok(())
596 }
597}
598
599impl<'de> ::serde::de::Deserialize<'de> for Cursor {
600 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
601 use serde::de::{MapAccess, Visitor};
603 struct StructVisitor;
604 impl<'de> Visitor<'de> for StructVisitor {
605 type Value = Cursor;
606 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
607 f.write_str("a Cursor struct")
608 }
609 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
610 Cursor::internal_deserialize(map)
611 }
612 }
613 deserializer.deserialize_struct("Cursor", CURSOR_FIELDS, StructVisitor)
614 }
615}
616
617impl ::serde::ser::Serialize for Cursor {
618 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
619 use serde::ser::SerializeStruct;
621 let mut s = serializer.serialize_struct("Cursor", 2)?;
622 self.internal_serialize::<S>(&mut s)?;
623 s.end()
624 }
625}
626
627#[derive(Debug, Clone, PartialEq, Eq)]
628#[non_exhaustive] pub enum DocLookupError {
630 InsufficientPermissions,
635 DocNotFound,
637 Other,
640}
641
642impl<'de> ::serde::de::Deserialize<'de> for DocLookupError {
643 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
644 use serde::de::{self, MapAccess, Visitor};
646 struct EnumVisitor;
647 impl<'de> Visitor<'de> for EnumVisitor {
648 type Value = DocLookupError;
649 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
650 f.write_str("a DocLookupError structure")
651 }
652 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
653 let tag: &str = match map.next_key()? {
654 Some(".tag") => map.next_value()?,
655 _ => return Err(de::Error::missing_field(".tag"))
656 };
657 let value = match tag {
658 "insufficient_permissions" => DocLookupError::InsufficientPermissions,
659 "doc_not_found" => DocLookupError::DocNotFound,
660 _ => DocLookupError::Other,
661 };
662 crate::eat_json_fields(&mut map)?;
663 Ok(value)
664 }
665 }
666 const VARIANTS: &[&str] = &["insufficient_permissions",
667 "other",
668 "doc_not_found"];
669 deserializer.deserialize_struct("DocLookupError", VARIANTS, EnumVisitor)
670 }
671}
672
673impl ::serde::ser::Serialize for DocLookupError {
674 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
675 use serde::ser::SerializeStruct;
677 match self {
678 DocLookupError::InsufficientPermissions => {
679 let mut s = serializer.serialize_struct("DocLookupError", 1)?;
681 s.serialize_field(".tag", "insufficient_permissions")?;
682 s.end()
683 }
684 DocLookupError::DocNotFound => {
685 let mut s = serializer.serialize_struct("DocLookupError", 1)?;
687 s.serialize_field(".tag", "doc_not_found")?;
688 s.end()
689 }
690 DocLookupError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
691 }
692 }
693}
694
695impl ::std::error::Error for DocLookupError {
696}
697
698impl ::std::fmt::Display for DocLookupError {
699 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
700 match self {
701 DocLookupError::DocNotFound => f.write_str("The required doc was not found."),
702 _ => write!(f, "{:?}", *self),
703 }
704 }
705}
706
707impl From<PaperApiBaseError> for DocLookupError {
709 fn from(parent: PaperApiBaseError) -> Self {
710 match parent {
711 PaperApiBaseError::InsufficientPermissions => DocLookupError::InsufficientPermissions,
712 PaperApiBaseError::Other => DocLookupError::Other,
713 }
714 }
715}
716#[derive(Debug, Clone, PartialEq, Eq)]
718pub enum DocSubscriptionLevel {
719 Default,
721 Ignore,
723 Every,
725 NoEmail,
727}
728
729impl<'de> ::serde::de::Deserialize<'de> for DocSubscriptionLevel {
730 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
731 use serde::de::{self, MapAccess, Visitor};
733 struct EnumVisitor;
734 impl<'de> Visitor<'de> for EnumVisitor {
735 type Value = DocSubscriptionLevel;
736 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
737 f.write_str("a DocSubscriptionLevel structure")
738 }
739 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
740 let tag: &str = match map.next_key()? {
741 Some(".tag") => map.next_value()?,
742 _ => return Err(de::Error::missing_field(".tag"))
743 };
744 let value = match tag {
745 "default" => DocSubscriptionLevel::Default,
746 "ignore" => DocSubscriptionLevel::Ignore,
747 "every" => DocSubscriptionLevel::Every,
748 "no_email" => DocSubscriptionLevel::NoEmail,
749 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
750 };
751 crate::eat_json_fields(&mut map)?;
752 Ok(value)
753 }
754 }
755 const VARIANTS: &[&str] = &["default",
756 "ignore",
757 "every",
758 "no_email"];
759 deserializer.deserialize_struct("DocSubscriptionLevel", VARIANTS, EnumVisitor)
760 }
761}
762
763impl ::serde::ser::Serialize for DocSubscriptionLevel {
764 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
765 use serde::ser::SerializeStruct;
767 match self {
768 DocSubscriptionLevel::Default => {
769 let mut s = serializer.serialize_struct("DocSubscriptionLevel", 1)?;
771 s.serialize_field(".tag", "default")?;
772 s.end()
773 }
774 DocSubscriptionLevel::Ignore => {
775 let mut s = serializer.serialize_struct("DocSubscriptionLevel", 1)?;
777 s.serialize_field(".tag", "ignore")?;
778 s.end()
779 }
780 DocSubscriptionLevel::Every => {
781 let mut s = serializer.serialize_struct("DocSubscriptionLevel", 1)?;
783 s.serialize_field(".tag", "every")?;
784 s.end()
785 }
786 DocSubscriptionLevel::NoEmail => {
787 let mut s = serializer.serialize_struct("DocSubscriptionLevel", 1)?;
789 s.serialize_field(".tag", "no_email")?;
790 s.end()
791 }
792 }
793 }
794}
795
796#[derive(Debug, Clone, PartialEq, Eq)]
798#[non_exhaustive] pub enum ExportFormat {
800 Html,
802 Markdown,
804 Other,
807}
808
809impl<'de> ::serde::de::Deserialize<'de> for ExportFormat {
810 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
811 use serde::de::{self, MapAccess, Visitor};
813 struct EnumVisitor;
814 impl<'de> Visitor<'de> for EnumVisitor {
815 type Value = ExportFormat;
816 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
817 f.write_str("a ExportFormat structure")
818 }
819 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
820 let tag: &str = match map.next_key()? {
821 Some(".tag") => map.next_value()?,
822 _ => return Err(de::Error::missing_field(".tag"))
823 };
824 let value = match tag {
825 "html" => ExportFormat::Html,
826 "markdown" => ExportFormat::Markdown,
827 _ => ExportFormat::Other,
828 };
829 crate::eat_json_fields(&mut map)?;
830 Ok(value)
831 }
832 }
833 const VARIANTS: &[&str] = &["html",
834 "markdown",
835 "other"];
836 deserializer.deserialize_struct("ExportFormat", VARIANTS, EnumVisitor)
837 }
838}
839
840impl ::serde::ser::Serialize for ExportFormat {
841 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
842 use serde::ser::SerializeStruct;
844 match self {
845 ExportFormat::Html => {
846 let mut s = serializer.serialize_struct("ExportFormat", 1)?;
848 s.serialize_field(".tag", "html")?;
849 s.end()
850 }
851 ExportFormat::Markdown => {
852 let mut s = serializer.serialize_struct("ExportFormat", 1)?;
854 s.serialize_field(".tag", "markdown")?;
855 s.end()
856 }
857 ExportFormat::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
858 }
859 }
860}
861
862#[derive(Debug, Clone, PartialEq, Eq)]
864#[non_exhaustive] pub struct Folder {
866 pub id: String,
868 pub name: String,
870}
871
872impl Folder {
873 pub fn new(id: String, name: String) -> Self {
874 Folder {
875 id,
876 name,
877 }
878 }
879}
880
881const FOLDER_FIELDS: &[&str] = &["id",
882 "name"];
883impl Folder {
884 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
885 map: V,
886 ) -> Result<Folder, V::Error> {
887 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
888 }
889
890 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
891 mut map: V,
892 optional: bool,
893 ) -> Result<Option<Folder>, V::Error> {
894 let mut field_id = None;
895 let mut field_name = None;
896 let mut nothing = true;
897 while let Some(key) = map.next_key::<&str>()? {
898 nothing = false;
899 match key {
900 "id" => {
901 if field_id.is_some() {
902 return Err(::serde::de::Error::duplicate_field("id"));
903 }
904 field_id = Some(map.next_value()?);
905 }
906 "name" => {
907 if field_name.is_some() {
908 return Err(::serde::de::Error::duplicate_field("name"));
909 }
910 field_name = Some(map.next_value()?);
911 }
912 _ => {
913 map.next_value::<::serde_json::Value>()?;
915 }
916 }
917 }
918 if optional && nothing {
919 return Ok(None);
920 }
921 let result = Folder {
922 id: field_id.ok_or_else(|| ::serde::de::Error::missing_field("id"))?,
923 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
924 };
925 Ok(Some(result))
926 }
927
928 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
929 &self,
930 s: &mut S::SerializeStruct,
931 ) -> Result<(), S::Error> {
932 use serde::ser::SerializeStruct;
933 s.serialize_field("id", &self.id)?;
934 s.serialize_field("name", &self.name)?;
935 Ok(())
936 }
937}
938
939impl<'de> ::serde::de::Deserialize<'de> for Folder {
940 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
941 use serde::de::{MapAccess, Visitor};
943 struct StructVisitor;
944 impl<'de> Visitor<'de> for StructVisitor {
945 type Value = Folder;
946 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
947 f.write_str("a Folder struct")
948 }
949 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
950 Folder::internal_deserialize(map)
951 }
952 }
953 deserializer.deserialize_struct("Folder", FOLDER_FIELDS, StructVisitor)
954 }
955}
956
957impl ::serde::ser::Serialize for Folder {
958 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
959 use serde::ser::SerializeStruct;
961 let mut s = serializer.serialize_struct("Folder", 2)?;
962 self.internal_serialize::<S>(&mut s)?;
963 s.end()
964 }
965}
966
967#[derive(Debug, Clone, PartialEq, Eq)]
970pub enum FolderSharingPolicyType {
971 Team,
973 InviteOnly,
975}
976
977impl<'de> ::serde::de::Deserialize<'de> for FolderSharingPolicyType {
978 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
979 use serde::de::{self, MapAccess, Visitor};
981 struct EnumVisitor;
982 impl<'de> Visitor<'de> for EnumVisitor {
983 type Value = FolderSharingPolicyType;
984 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
985 f.write_str("a FolderSharingPolicyType structure")
986 }
987 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
988 let tag: &str = match map.next_key()? {
989 Some(".tag") => map.next_value()?,
990 _ => return Err(de::Error::missing_field(".tag"))
991 };
992 let value = match tag {
993 "team" => FolderSharingPolicyType::Team,
994 "invite_only" => FolderSharingPolicyType::InviteOnly,
995 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
996 };
997 crate::eat_json_fields(&mut map)?;
998 Ok(value)
999 }
1000 }
1001 const VARIANTS: &[&str] = &["team",
1002 "invite_only"];
1003 deserializer.deserialize_struct("FolderSharingPolicyType", VARIANTS, EnumVisitor)
1004 }
1005}
1006
1007impl ::serde::ser::Serialize for FolderSharingPolicyType {
1008 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1009 use serde::ser::SerializeStruct;
1011 match self {
1012 FolderSharingPolicyType::Team => {
1013 let mut s = serializer.serialize_struct("FolderSharingPolicyType", 1)?;
1015 s.serialize_field(".tag", "team")?;
1016 s.end()
1017 }
1018 FolderSharingPolicyType::InviteOnly => {
1019 let mut s = serializer.serialize_struct("FolderSharingPolicyType", 1)?;
1021 s.serialize_field(".tag", "invite_only")?;
1022 s.end()
1023 }
1024 }
1025 }
1026}
1027
1028#[derive(Debug, Clone, PartialEq, Eq)]
1030pub enum FolderSubscriptionLevel {
1031 None,
1033 ActivityOnly,
1035 DailyEmails,
1037 WeeklyEmails,
1039}
1040
1041impl<'de> ::serde::de::Deserialize<'de> for FolderSubscriptionLevel {
1042 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1043 use serde::de::{self, MapAccess, Visitor};
1045 struct EnumVisitor;
1046 impl<'de> Visitor<'de> for EnumVisitor {
1047 type Value = FolderSubscriptionLevel;
1048 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1049 f.write_str("a FolderSubscriptionLevel structure")
1050 }
1051 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1052 let tag: &str = match map.next_key()? {
1053 Some(".tag") => map.next_value()?,
1054 _ => return Err(de::Error::missing_field(".tag"))
1055 };
1056 let value = match tag {
1057 "none" => FolderSubscriptionLevel::None,
1058 "activity_only" => FolderSubscriptionLevel::ActivityOnly,
1059 "daily_emails" => FolderSubscriptionLevel::DailyEmails,
1060 "weekly_emails" => FolderSubscriptionLevel::WeeklyEmails,
1061 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
1062 };
1063 crate::eat_json_fields(&mut map)?;
1064 Ok(value)
1065 }
1066 }
1067 const VARIANTS: &[&str] = &["none",
1068 "activity_only",
1069 "daily_emails",
1070 "weekly_emails"];
1071 deserializer.deserialize_struct("FolderSubscriptionLevel", VARIANTS, EnumVisitor)
1072 }
1073}
1074
1075impl ::serde::ser::Serialize for FolderSubscriptionLevel {
1076 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1077 use serde::ser::SerializeStruct;
1079 match self {
1080 FolderSubscriptionLevel::None => {
1081 let mut s = serializer.serialize_struct("FolderSubscriptionLevel", 1)?;
1083 s.serialize_field(".tag", "none")?;
1084 s.end()
1085 }
1086 FolderSubscriptionLevel::ActivityOnly => {
1087 let mut s = serializer.serialize_struct("FolderSubscriptionLevel", 1)?;
1089 s.serialize_field(".tag", "activity_only")?;
1090 s.end()
1091 }
1092 FolderSubscriptionLevel::DailyEmails => {
1093 let mut s = serializer.serialize_struct("FolderSubscriptionLevel", 1)?;
1095 s.serialize_field(".tag", "daily_emails")?;
1096 s.end()
1097 }
1098 FolderSubscriptionLevel::WeeklyEmails => {
1099 let mut s = serializer.serialize_struct("FolderSubscriptionLevel", 1)?;
1101 s.serialize_field(".tag", "weekly_emails")?;
1102 s.end()
1103 }
1104 }
1105 }
1106}
1107
1108#[derive(Debug, Clone, PartialEq, Eq, Default)]
1110#[non_exhaustive] pub struct FoldersContainingPaperDoc {
1112 pub folder_sharing_policy_type: Option<FolderSharingPolicyType>,
1114 pub folders: Option<Vec<Folder>>,
1116}
1117
1118impl FoldersContainingPaperDoc {
1119 pub fn with_folder_sharing_policy_type(mut self, value: FolderSharingPolicyType) -> Self {
1120 self.folder_sharing_policy_type = Some(value);
1121 self
1122 }
1123
1124 pub fn with_folders(mut self, value: Vec<Folder>) -> Self {
1125 self.folders = Some(value);
1126 self
1127 }
1128}
1129
1130const FOLDERS_CONTAINING_PAPER_DOC_FIELDS: &[&str] = &["folder_sharing_policy_type",
1131 "folders"];
1132impl FoldersContainingPaperDoc {
1133 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1135 mut map: V,
1136 ) -> Result<FoldersContainingPaperDoc, V::Error> {
1137 let mut field_folder_sharing_policy_type = None;
1138 let mut field_folders = None;
1139 while let Some(key) = map.next_key::<&str>()? {
1140 match key {
1141 "folder_sharing_policy_type" => {
1142 if field_folder_sharing_policy_type.is_some() {
1143 return Err(::serde::de::Error::duplicate_field("folder_sharing_policy_type"));
1144 }
1145 field_folder_sharing_policy_type = Some(map.next_value()?);
1146 }
1147 "folders" => {
1148 if field_folders.is_some() {
1149 return Err(::serde::de::Error::duplicate_field("folders"));
1150 }
1151 field_folders = Some(map.next_value()?);
1152 }
1153 _ => {
1154 map.next_value::<::serde_json::Value>()?;
1156 }
1157 }
1158 }
1159 let result = FoldersContainingPaperDoc {
1160 folder_sharing_policy_type: field_folder_sharing_policy_type.and_then(Option::flatten),
1161 folders: field_folders.and_then(Option::flatten),
1162 };
1163 Ok(result)
1164 }
1165
1166 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1167 &self,
1168 s: &mut S::SerializeStruct,
1169 ) -> Result<(), S::Error> {
1170 use serde::ser::SerializeStruct;
1171 if let Some(val) = &self.folder_sharing_policy_type {
1172 s.serialize_field("folder_sharing_policy_type", val)?;
1173 }
1174 if let Some(val) = &self.folders {
1175 s.serialize_field("folders", val)?;
1176 }
1177 Ok(())
1178 }
1179}
1180
1181impl<'de> ::serde::de::Deserialize<'de> for FoldersContainingPaperDoc {
1182 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1183 use serde::de::{MapAccess, Visitor};
1185 struct StructVisitor;
1186 impl<'de> Visitor<'de> for StructVisitor {
1187 type Value = FoldersContainingPaperDoc;
1188 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1189 f.write_str("a FoldersContainingPaperDoc struct")
1190 }
1191 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1192 FoldersContainingPaperDoc::internal_deserialize(map)
1193 }
1194 }
1195 deserializer.deserialize_struct("FoldersContainingPaperDoc", FOLDERS_CONTAINING_PAPER_DOC_FIELDS, StructVisitor)
1196 }
1197}
1198
1199impl ::serde::ser::Serialize for FoldersContainingPaperDoc {
1200 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1201 use serde::ser::SerializeStruct;
1203 let mut s = serializer.serialize_struct("FoldersContainingPaperDoc", 2)?;
1204 self.internal_serialize::<S>(&mut s)?;
1205 s.end()
1206 }
1207}
1208
1209#[derive(Debug, Clone, PartialEq, Eq)]
1211#[non_exhaustive] pub enum ImportFormat {
1213 Html,
1215 Markdown,
1218 PlainText,
1221 Other,
1224}
1225
1226impl<'de> ::serde::de::Deserialize<'de> for ImportFormat {
1227 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1228 use serde::de::{self, MapAccess, Visitor};
1230 struct EnumVisitor;
1231 impl<'de> Visitor<'de> for EnumVisitor {
1232 type Value = ImportFormat;
1233 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1234 f.write_str("a ImportFormat structure")
1235 }
1236 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1237 let tag: &str = match map.next_key()? {
1238 Some(".tag") => map.next_value()?,
1239 _ => return Err(de::Error::missing_field(".tag"))
1240 };
1241 let value = match tag {
1242 "html" => ImportFormat::Html,
1243 "markdown" => ImportFormat::Markdown,
1244 "plain_text" => ImportFormat::PlainText,
1245 _ => ImportFormat::Other,
1246 };
1247 crate::eat_json_fields(&mut map)?;
1248 Ok(value)
1249 }
1250 }
1251 const VARIANTS: &[&str] = &["html",
1252 "markdown",
1253 "plain_text",
1254 "other"];
1255 deserializer.deserialize_struct("ImportFormat", VARIANTS, EnumVisitor)
1256 }
1257}
1258
1259impl ::serde::ser::Serialize for ImportFormat {
1260 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1261 use serde::ser::SerializeStruct;
1263 match self {
1264 ImportFormat::Html => {
1265 let mut s = serializer.serialize_struct("ImportFormat", 1)?;
1267 s.serialize_field(".tag", "html")?;
1268 s.end()
1269 }
1270 ImportFormat::Markdown => {
1271 let mut s = serializer.serialize_struct("ImportFormat", 1)?;
1273 s.serialize_field(".tag", "markdown")?;
1274 s.end()
1275 }
1276 ImportFormat::PlainText => {
1277 let mut s = serializer.serialize_struct("ImportFormat", 1)?;
1279 s.serialize_field(".tag", "plain_text")?;
1280 s.end()
1281 }
1282 ImportFormat::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1283 }
1284 }
1285}
1286
1287#[derive(Debug, Clone, PartialEq, Eq)]
1288#[non_exhaustive] pub struct InviteeInfoWithPermissionLevel {
1290 pub invitee: crate::types::sharing::InviteeInfo,
1292 pub permission_level: PaperDocPermissionLevel,
1294}
1295
1296impl InviteeInfoWithPermissionLevel {
1297 pub fn new(
1298 invitee: crate::types::sharing::InviteeInfo,
1299 permission_level: PaperDocPermissionLevel,
1300 ) -> Self {
1301 InviteeInfoWithPermissionLevel {
1302 invitee,
1303 permission_level,
1304 }
1305 }
1306}
1307
1308const INVITEE_INFO_WITH_PERMISSION_LEVEL_FIELDS: &[&str] = &["invitee",
1309 "permission_level"];
1310impl InviteeInfoWithPermissionLevel {
1311 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1312 map: V,
1313 ) -> Result<InviteeInfoWithPermissionLevel, V::Error> {
1314 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1315 }
1316
1317 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1318 mut map: V,
1319 optional: bool,
1320 ) -> Result<Option<InviteeInfoWithPermissionLevel>, V::Error> {
1321 let mut field_invitee = None;
1322 let mut field_permission_level = None;
1323 let mut nothing = true;
1324 while let Some(key) = map.next_key::<&str>()? {
1325 nothing = false;
1326 match key {
1327 "invitee" => {
1328 if field_invitee.is_some() {
1329 return Err(::serde::de::Error::duplicate_field("invitee"));
1330 }
1331 field_invitee = Some(map.next_value()?);
1332 }
1333 "permission_level" => {
1334 if field_permission_level.is_some() {
1335 return Err(::serde::de::Error::duplicate_field("permission_level"));
1336 }
1337 field_permission_level = Some(map.next_value()?);
1338 }
1339 _ => {
1340 map.next_value::<::serde_json::Value>()?;
1342 }
1343 }
1344 }
1345 if optional && nothing {
1346 return Ok(None);
1347 }
1348 let result = InviteeInfoWithPermissionLevel {
1349 invitee: field_invitee.ok_or_else(|| ::serde::de::Error::missing_field("invitee"))?,
1350 permission_level: field_permission_level.ok_or_else(|| ::serde::de::Error::missing_field("permission_level"))?,
1351 };
1352 Ok(Some(result))
1353 }
1354
1355 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1356 &self,
1357 s: &mut S::SerializeStruct,
1358 ) -> Result<(), S::Error> {
1359 use serde::ser::SerializeStruct;
1360 s.serialize_field("invitee", &self.invitee)?;
1361 s.serialize_field("permission_level", &self.permission_level)?;
1362 Ok(())
1363 }
1364}
1365
1366impl<'de> ::serde::de::Deserialize<'de> for InviteeInfoWithPermissionLevel {
1367 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1368 use serde::de::{MapAccess, Visitor};
1370 struct StructVisitor;
1371 impl<'de> Visitor<'de> for StructVisitor {
1372 type Value = InviteeInfoWithPermissionLevel;
1373 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1374 f.write_str("a InviteeInfoWithPermissionLevel struct")
1375 }
1376 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1377 InviteeInfoWithPermissionLevel::internal_deserialize(map)
1378 }
1379 }
1380 deserializer.deserialize_struct("InviteeInfoWithPermissionLevel", INVITEE_INFO_WITH_PERMISSION_LEVEL_FIELDS, StructVisitor)
1381 }
1382}
1383
1384impl ::serde::ser::Serialize for InviteeInfoWithPermissionLevel {
1385 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1386 use serde::ser::SerializeStruct;
1388 let mut s = serializer.serialize_struct("InviteeInfoWithPermissionLevel", 2)?;
1389 self.internal_serialize::<S>(&mut s)?;
1390 s.end()
1391 }
1392}
1393
1394#[derive(Debug, Clone, PartialEq, Eq)]
1395#[non_exhaustive] pub enum ListDocsCursorError {
1397 CursorError(PaperApiCursorError),
1398 Other,
1401}
1402
1403impl<'de> ::serde::de::Deserialize<'de> for ListDocsCursorError {
1404 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1405 use serde::de::{self, MapAccess, Visitor};
1407 struct EnumVisitor;
1408 impl<'de> Visitor<'de> for EnumVisitor {
1409 type Value = ListDocsCursorError;
1410 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1411 f.write_str("a ListDocsCursorError structure")
1412 }
1413 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1414 let tag: &str = match map.next_key()? {
1415 Some(".tag") => map.next_value()?,
1416 _ => return Err(de::Error::missing_field(".tag"))
1417 };
1418 let value = match tag {
1419 "cursor_error" => {
1420 match map.next_key()? {
1421 Some("cursor_error") => ListDocsCursorError::CursorError(map.next_value()?),
1422 None => return Err(de::Error::missing_field("cursor_error")),
1423 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
1424 }
1425 }
1426 _ => ListDocsCursorError::Other,
1427 };
1428 crate::eat_json_fields(&mut map)?;
1429 Ok(value)
1430 }
1431 }
1432 const VARIANTS: &[&str] = &["cursor_error",
1433 "other"];
1434 deserializer.deserialize_struct("ListDocsCursorError", VARIANTS, EnumVisitor)
1435 }
1436}
1437
1438impl ::serde::ser::Serialize for ListDocsCursorError {
1439 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1440 use serde::ser::SerializeStruct;
1442 match self {
1443 ListDocsCursorError::CursorError(x) => {
1444 let mut s = serializer.serialize_struct("ListDocsCursorError", 2)?;
1446 s.serialize_field(".tag", "cursor_error")?;
1447 s.serialize_field("cursor_error", x)?;
1448 s.end()
1449 }
1450 ListDocsCursorError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1451 }
1452 }
1453}
1454
1455impl ::std::error::Error for ListDocsCursorError {
1456 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
1457 match self {
1458 ListDocsCursorError::CursorError(inner) => Some(inner),
1459 _ => None,
1460 }
1461 }
1462}
1463
1464impl ::std::fmt::Display for ListDocsCursorError {
1465 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1466 match self {
1467 ListDocsCursorError::CursorError(inner) => write!(f, "ListDocsCursorError: {}", inner),
1468 _ => write!(f, "{:?}", *self),
1469 }
1470 }
1471}
1472
1473#[derive(Debug, Clone, PartialEq, Eq)]
1474#[non_exhaustive] pub struct ListPaperDocsArgs {
1476 pub filter_by: ListPaperDocsFilterBy,
1478 pub sort_by: ListPaperDocsSortBy,
1480 pub sort_order: ListPaperDocsSortOrder,
1482 pub limit: i32,
1485}
1486
1487impl Default for ListPaperDocsArgs {
1488 fn default() -> Self {
1489 ListPaperDocsArgs {
1490 filter_by: ListPaperDocsFilterBy::DocsAccessed,
1491 sort_by: ListPaperDocsSortBy::Accessed,
1492 sort_order: ListPaperDocsSortOrder::Ascending,
1493 limit: 1000,
1494 }
1495 }
1496}
1497
1498impl ListPaperDocsArgs {
1499 pub fn with_filter_by(mut self, value: ListPaperDocsFilterBy) -> Self {
1500 self.filter_by = value;
1501 self
1502 }
1503
1504 pub fn with_sort_by(mut self, value: ListPaperDocsSortBy) -> Self {
1505 self.sort_by = value;
1506 self
1507 }
1508
1509 pub fn with_sort_order(mut self, value: ListPaperDocsSortOrder) -> Self {
1510 self.sort_order = value;
1511 self
1512 }
1513
1514 pub fn with_limit(mut self, value: i32) -> Self {
1515 self.limit = value;
1516 self
1517 }
1518}
1519
1520const LIST_PAPER_DOCS_ARGS_FIELDS: &[&str] = &["filter_by",
1521 "sort_by",
1522 "sort_order",
1523 "limit"];
1524impl ListPaperDocsArgs {
1525 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1527 mut map: V,
1528 ) -> Result<ListPaperDocsArgs, V::Error> {
1529 let mut field_filter_by = None;
1530 let mut field_sort_by = None;
1531 let mut field_sort_order = None;
1532 let mut field_limit = None;
1533 while let Some(key) = map.next_key::<&str>()? {
1534 match key {
1535 "filter_by" => {
1536 if field_filter_by.is_some() {
1537 return Err(::serde::de::Error::duplicate_field("filter_by"));
1538 }
1539 field_filter_by = Some(map.next_value()?);
1540 }
1541 "sort_by" => {
1542 if field_sort_by.is_some() {
1543 return Err(::serde::de::Error::duplicate_field("sort_by"));
1544 }
1545 field_sort_by = Some(map.next_value()?);
1546 }
1547 "sort_order" => {
1548 if field_sort_order.is_some() {
1549 return Err(::serde::de::Error::duplicate_field("sort_order"));
1550 }
1551 field_sort_order = Some(map.next_value()?);
1552 }
1553 "limit" => {
1554 if field_limit.is_some() {
1555 return Err(::serde::de::Error::duplicate_field("limit"));
1556 }
1557 field_limit = Some(map.next_value()?);
1558 }
1559 _ => {
1560 map.next_value::<::serde_json::Value>()?;
1562 }
1563 }
1564 }
1565 let result = ListPaperDocsArgs {
1566 filter_by: field_filter_by.unwrap_or(ListPaperDocsFilterBy::DocsAccessed),
1567 sort_by: field_sort_by.unwrap_or(ListPaperDocsSortBy::Accessed),
1568 sort_order: field_sort_order.unwrap_or(ListPaperDocsSortOrder::Ascending),
1569 limit: field_limit.unwrap_or(1000),
1570 };
1571 Ok(result)
1572 }
1573
1574 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1575 &self,
1576 s: &mut S::SerializeStruct,
1577 ) -> Result<(), S::Error> {
1578 use serde::ser::SerializeStruct;
1579 if self.filter_by != ListPaperDocsFilterBy::DocsAccessed {
1580 s.serialize_field("filter_by", &self.filter_by)?;
1581 }
1582 if self.sort_by != ListPaperDocsSortBy::Accessed {
1583 s.serialize_field("sort_by", &self.sort_by)?;
1584 }
1585 if self.sort_order != ListPaperDocsSortOrder::Ascending {
1586 s.serialize_field("sort_order", &self.sort_order)?;
1587 }
1588 if self.limit != 1000 {
1589 s.serialize_field("limit", &self.limit)?;
1590 }
1591 Ok(())
1592 }
1593}
1594
1595impl<'de> ::serde::de::Deserialize<'de> for ListPaperDocsArgs {
1596 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1597 use serde::de::{MapAccess, Visitor};
1599 struct StructVisitor;
1600 impl<'de> Visitor<'de> for StructVisitor {
1601 type Value = ListPaperDocsArgs;
1602 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1603 f.write_str("a ListPaperDocsArgs struct")
1604 }
1605 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1606 ListPaperDocsArgs::internal_deserialize(map)
1607 }
1608 }
1609 deserializer.deserialize_struct("ListPaperDocsArgs", LIST_PAPER_DOCS_ARGS_FIELDS, StructVisitor)
1610 }
1611}
1612
1613impl ::serde::ser::Serialize for ListPaperDocsArgs {
1614 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1615 use serde::ser::SerializeStruct;
1617 let mut s = serializer.serialize_struct("ListPaperDocsArgs", 4)?;
1618 self.internal_serialize::<S>(&mut s)?;
1619 s.end()
1620 }
1621}
1622
1623#[derive(Debug, Clone, PartialEq, Eq)]
1624#[non_exhaustive] pub struct ListPaperDocsContinueArgs {
1626 pub cursor: String,
1629}
1630
1631impl ListPaperDocsContinueArgs {
1632 pub fn new(cursor: String) -> Self {
1633 ListPaperDocsContinueArgs {
1634 cursor,
1635 }
1636 }
1637}
1638
1639const LIST_PAPER_DOCS_CONTINUE_ARGS_FIELDS: &[&str] = &["cursor"];
1640impl ListPaperDocsContinueArgs {
1641 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1642 map: V,
1643 ) -> Result<ListPaperDocsContinueArgs, V::Error> {
1644 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1645 }
1646
1647 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1648 mut map: V,
1649 optional: bool,
1650 ) -> Result<Option<ListPaperDocsContinueArgs>, V::Error> {
1651 let mut field_cursor = None;
1652 let mut nothing = true;
1653 while let Some(key) = map.next_key::<&str>()? {
1654 nothing = false;
1655 match key {
1656 "cursor" => {
1657 if field_cursor.is_some() {
1658 return Err(::serde::de::Error::duplicate_field("cursor"));
1659 }
1660 field_cursor = Some(map.next_value()?);
1661 }
1662 _ => {
1663 map.next_value::<::serde_json::Value>()?;
1665 }
1666 }
1667 }
1668 if optional && nothing {
1669 return Ok(None);
1670 }
1671 let result = ListPaperDocsContinueArgs {
1672 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
1673 };
1674 Ok(Some(result))
1675 }
1676
1677 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1678 &self,
1679 s: &mut S::SerializeStruct,
1680 ) -> Result<(), S::Error> {
1681 use serde::ser::SerializeStruct;
1682 s.serialize_field("cursor", &self.cursor)?;
1683 Ok(())
1684 }
1685}
1686
1687impl<'de> ::serde::de::Deserialize<'de> for ListPaperDocsContinueArgs {
1688 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1689 use serde::de::{MapAccess, Visitor};
1691 struct StructVisitor;
1692 impl<'de> Visitor<'de> for StructVisitor {
1693 type Value = ListPaperDocsContinueArgs;
1694 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1695 f.write_str("a ListPaperDocsContinueArgs struct")
1696 }
1697 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1698 ListPaperDocsContinueArgs::internal_deserialize(map)
1699 }
1700 }
1701 deserializer.deserialize_struct("ListPaperDocsContinueArgs", LIST_PAPER_DOCS_CONTINUE_ARGS_FIELDS, StructVisitor)
1702 }
1703}
1704
1705impl ::serde::ser::Serialize for ListPaperDocsContinueArgs {
1706 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1707 use serde::ser::SerializeStruct;
1709 let mut s = serializer.serialize_struct("ListPaperDocsContinueArgs", 1)?;
1710 self.internal_serialize::<S>(&mut s)?;
1711 s.end()
1712 }
1713}
1714
1715#[derive(Debug, Clone, PartialEq, Eq)]
1716#[non_exhaustive] pub enum ListPaperDocsFilterBy {
1718 DocsAccessed,
1720 DocsCreated,
1722 Other,
1725}
1726
1727impl<'de> ::serde::de::Deserialize<'de> for ListPaperDocsFilterBy {
1728 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1729 use serde::de::{self, MapAccess, Visitor};
1731 struct EnumVisitor;
1732 impl<'de> Visitor<'de> for EnumVisitor {
1733 type Value = ListPaperDocsFilterBy;
1734 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1735 f.write_str("a ListPaperDocsFilterBy structure")
1736 }
1737 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1738 let tag: &str = match map.next_key()? {
1739 Some(".tag") => map.next_value()?,
1740 _ => return Err(de::Error::missing_field(".tag"))
1741 };
1742 let value = match tag {
1743 "docs_accessed" => ListPaperDocsFilterBy::DocsAccessed,
1744 "docs_created" => ListPaperDocsFilterBy::DocsCreated,
1745 _ => ListPaperDocsFilterBy::Other,
1746 };
1747 crate::eat_json_fields(&mut map)?;
1748 Ok(value)
1749 }
1750 }
1751 const VARIANTS: &[&str] = &["docs_accessed",
1752 "docs_created",
1753 "other"];
1754 deserializer.deserialize_struct("ListPaperDocsFilterBy", VARIANTS, EnumVisitor)
1755 }
1756}
1757
1758impl ::serde::ser::Serialize for ListPaperDocsFilterBy {
1759 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1760 use serde::ser::SerializeStruct;
1762 match self {
1763 ListPaperDocsFilterBy::DocsAccessed => {
1764 let mut s = serializer.serialize_struct("ListPaperDocsFilterBy", 1)?;
1766 s.serialize_field(".tag", "docs_accessed")?;
1767 s.end()
1768 }
1769 ListPaperDocsFilterBy::DocsCreated => {
1770 let mut s = serializer.serialize_struct("ListPaperDocsFilterBy", 1)?;
1772 s.serialize_field(".tag", "docs_created")?;
1773 s.end()
1774 }
1775 ListPaperDocsFilterBy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1776 }
1777 }
1778}
1779
1780#[derive(Debug, Clone, PartialEq, Eq)]
1781#[non_exhaustive] pub struct ListPaperDocsResponse {
1783 pub doc_ids: Vec<PaperDocId>,
1787 pub cursor: Cursor,
1791 pub has_more: bool,
1796}
1797
1798impl ListPaperDocsResponse {
1799 pub fn new(doc_ids: Vec<PaperDocId>, cursor: Cursor, has_more: bool) -> Self {
1800 ListPaperDocsResponse {
1801 doc_ids,
1802 cursor,
1803 has_more,
1804 }
1805 }
1806}
1807
1808const LIST_PAPER_DOCS_RESPONSE_FIELDS: &[&str] = &["doc_ids",
1809 "cursor",
1810 "has_more"];
1811impl ListPaperDocsResponse {
1812 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1813 map: V,
1814 ) -> Result<ListPaperDocsResponse, V::Error> {
1815 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1816 }
1817
1818 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1819 mut map: V,
1820 optional: bool,
1821 ) -> Result<Option<ListPaperDocsResponse>, V::Error> {
1822 let mut field_doc_ids = None;
1823 let mut field_cursor = None;
1824 let mut field_has_more = None;
1825 let mut nothing = true;
1826 while let Some(key) = map.next_key::<&str>()? {
1827 nothing = false;
1828 match key {
1829 "doc_ids" => {
1830 if field_doc_ids.is_some() {
1831 return Err(::serde::de::Error::duplicate_field("doc_ids"));
1832 }
1833 field_doc_ids = Some(map.next_value()?);
1834 }
1835 "cursor" => {
1836 if field_cursor.is_some() {
1837 return Err(::serde::de::Error::duplicate_field("cursor"));
1838 }
1839 field_cursor = Some(map.next_value()?);
1840 }
1841 "has_more" => {
1842 if field_has_more.is_some() {
1843 return Err(::serde::de::Error::duplicate_field("has_more"));
1844 }
1845 field_has_more = Some(map.next_value()?);
1846 }
1847 _ => {
1848 map.next_value::<::serde_json::Value>()?;
1850 }
1851 }
1852 }
1853 if optional && nothing {
1854 return Ok(None);
1855 }
1856 let result = ListPaperDocsResponse {
1857 doc_ids: field_doc_ids.ok_or_else(|| ::serde::de::Error::missing_field("doc_ids"))?,
1858 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
1859 has_more: field_has_more.ok_or_else(|| ::serde::de::Error::missing_field("has_more"))?,
1860 };
1861 Ok(Some(result))
1862 }
1863
1864 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1865 &self,
1866 s: &mut S::SerializeStruct,
1867 ) -> Result<(), S::Error> {
1868 use serde::ser::SerializeStruct;
1869 s.serialize_field("doc_ids", &self.doc_ids)?;
1870 s.serialize_field("cursor", &self.cursor)?;
1871 s.serialize_field("has_more", &self.has_more)?;
1872 Ok(())
1873 }
1874}
1875
1876impl<'de> ::serde::de::Deserialize<'de> for ListPaperDocsResponse {
1877 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1878 use serde::de::{MapAccess, Visitor};
1880 struct StructVisitor;
1881 impl<'de> Visitor<'de> for StructVisitor {
1882 type Value = ListPaperDocsResponse;
1883 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1884 f.write_str("a ListPaperDocsResponse struct")
1885 }
1886 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1887 ListPaperDocsResponse::internal_deserialize(map)
1888 }
1889 }
1890 deserializer.deserialize_struct("ListPaperDocsResponse", LIST_PAPER_DOCS_RESPONSE_FIELDS, StructVisitor)
1891 }
1892}
1893
1894impl ::serde::ser::Serialize for ListPaperDocsResponse {
1895 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1896 use serde::ser::SerializeStruct;
1898 let mut s = serializer.serialize_struct("ListPaperDocsResponse", 3)?;
1899 self.internal_serialize::<S>(&mut s)?;
1900 s.end()
1901 }
1902}
1903
1904#[derive(Debug, Clone, PartialEq, Eq)]
1905#[non_exhaustive] pub enum ListPaperDocsSortBy {
1907 Accessed,
1909 Modified,
1911 Created,
1913 Other,
1916}
1917
1918impl<'de> ::serde::de::Deserialize<'de> for ListPaperDocsSortBy {
1919 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1920 use serde::de::{self, MapAccess, Visitor};
1922 struct EnumVisitor;
1923 impl<'de> Visitor<'de> for EnumVisitor {
1924 type Value = ListPaperDocsSortBy;
1925 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1926 f.write_str("a ListPaperDocsSortBy structure")
1927 }
1928 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1929 let tag: &str = match map.next_key()? {
1930 Some(".tag") => map.next_value()?,
1931 _ => return Err(de::Error::missing_field(".tag"))
1932 };
1933 let value = match tag {
1934 "accessed" => ListPaperDocsSortBy::Accessed,
1935 "modified" => ListPaperDocsSortBy::Modified,
1936 "created" => ListPaperDocsSortBy::Created,
1937 _ => ListPaperDocsSortBy::Other,
1938 };
1939 crate::eat_json_fields(&mut map)?;
1940 Ok(value)
1941 }
1942 }
1943 const VARIANTS: &[&str] = &["accessed",
1944 "modified",
1945 "created",
1946 "other"];
1947 deserializer.deserialize_struct("ListPaperDocsSortBy", VARIANTS, EnumVisitor)
1948 }
1949}
1950
1951impl ::serde::ser::Serialize for ListPaperDocsSortBy {
1952 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1953 use serde::ser::SerializeStruct;
1955 match self {
1956 ListPaperDocsSortBy::Accessed => {
1957 let mut s = serializer.serialize_struct("ListPaperDocsSortBy", 1)?;
1959 s.serialize_field(".tag", "accessed")?;
1960 s.end()
1961 }
1962 ListPaperDocsSortBy::Modified => {
1963 let mut s = serializer.serialize_struct("ListPaperDocsSortBy", 1)?;
1965 s.serialize_field(".tag", "modified")?;
1966 s.end()
1967 }
1968 ListPaperDocsSortBy::Created => {
1969 let mut s = serializer.serialize_struct("ListPaperDocsSortBy", 1)?;
1971 s.serialize_field(".tag", "created")?;
1972 s.end()
1973 }
1974 ListPaperDocsSortBy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1975 }
1976 }
1977}
1978
1979#[derive(Debug, Clone, PartialEq, Eq)]
1980#[non_exhaustive] pub enum ListPaperDocsSortOrder {
1982 Ascending,
1984 Descending,
1986 Other,
1989}
1990
1991impl<'de> ::serde::de::Deserialize<'de> for ListPaperDocsSortOrder {
1992 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1993 use serde::de::{self, MapAccess, Visitor};
1995 struct EnumVisitor;
1996 impl<'de> Visitor<'de> for EnumVisitor {
1997 type Value = ListPaperDocsSortOrder;
1998 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1999 f.write_str("a ListPaperDocsSortOrder structure")
2000 }
2001 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2002 let tag: &str = match map.next_key()? {
2003 Some(".tag") => map.next_value()?,
2004 _ => return Err(de::Error::missing_field(".tag"))
2005 };
2006 let value = match tag {
2007 "ascending" => ListPaperDocsSortOrder::Ascending,
2008 "descending" => ListPaperDocsSortOrder::Descending,
2009 _ => ListPaperDocsSortOrder::Other,
2010 };
2011 crate::eat_json_fields(&mut map)?;
2012 Ok(value)
2013 }
2014 }
2015 const VARIANTS: &[&str] = &["ascending",
2016 "descending",
2017 "other"];
2018 deserializer.deserialize_struct("ListPaperDocsSortOrder", VARIANTS, EnumVisitor)
2019 }
2020}
2021
2022impl ::serde::ser::Serialize for ListPaperDocsSortOrder {
2023 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2024 use serde::ser::SerializeStruct;
2026 match self {
2027 ListPaperDocsSortOrder::Ascending => {
2028 let mut s = serializer.serialize_struct("ListPaperDocsSortOrder", 1)?;
2030 s.serialize_field(".tag", "ascending")?;
2031 s.end()
2032 }
2033 ListPaperDocsSortOrder::Descending => {
2034 let mut s = serializer.serialize_struct("ListPaperDocsSortOrder", 1)?;
2036 s.serialize_field(".tag", "descending")?;
2037 s.end()
2038 }
2039 ListPaperDocsSortOrder::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
2040 }
2041 }
2042}
2043
2044#[derive(Debug, Clone, PartialEq, Eq)]
2045#[non_exhaustive] pub enum ListUsersCursorError {
2047 InsufficientPermissions,
2052 DocNotFound,
2054 CursorError(PaperApiCursorError),
2055 Other,
2058}
2059
2060impl<'de> ::serde::de::Deserialize<'de> for ListUsersCursorError {
2061 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2062 use serde::de::{self, MapAccess, Visitor};
2064 struct EnumVisitor;
2065 impl<'de> Visitor<'de> for EnumVisitor {
2066 type Value = ListUsersCursorError;
2067 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2068 f.write_str("a ListUsersCursorError structure")
2069 }
2070 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2071 let tag: &str = match map.next_key()? {
2072 Some(".tag") => map.next_value()?,
2073 _ => return Err(de::Error::missing_field(".tag"))
2074 };
2075 let value = match tag {
2076 "insufficient_permissions" => ListUsersCursorError::InsufficientPermissions,
2077 "doc_not_found" => ListUsersCursorError::DocNotFound,
2078 "cursor_error" => {
2079 match map.next_key()? {
2080 Some("cursor_error") => ListUsersCursorError::CursorError(map.next_value()?),
2081 None => return Err(de::Error::missing_field("cursor_error")),
2082 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2083 }
2084 }
2085 _ => ListUsersCursorError::Other,
2086 };
2087 crate::eat_json_fields(&mut map)?;
2088 Ok(value)
2089 }
2090 }
2091 const VARIANTS: &[&str] = &["insufficient_permissions",
2092 "other",
2093 "doc_not_found",
2094 "cursor_error"];
2095 deserializer.deserialize_struct("ListUsersCursorError", VARIANTS, EnumVisitor)
2096 }
2097}
2098
2099impl ::serde::ser::Serialize for ListUsersCursorError {
2100 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2101 use serde::ser::SerializeStruct;
2103 match self {
2104 ListUsersCursorError::InsufficientPermissions => {
2105 let mut s = serializer.serialize_struct("ListUsersCursorError", 1)?;
2107 s.serialize_field(".tag", "insufficient_permissions")?;
2108 s.end()
2109 }
2110 ListUsersCursorError::DocNotFound => {
2111 let mut s = serializer.serialize_struct("ListUsersCursorError", 1)?;
2113 s.serialize_field(".tag", "doc_not_found")?;
2114 s.end()
2115 }
2116 ListUsersCursorError::CursorError(x) => {
2117 let mut s = serializer.serialize_struct("ListUsersCursorError", 2)?;
2119 s.serialize_field(".tag", "cursor_error")?;
2120 s.serialize_field("cursor_error", x)?;
2121 s.end()
2122 }
2123 ListUsersCursorError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
2124 }
2125 }
2126}
2127
2128impl ::std::error::Error for ListUsersCursorError {
2129 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
2130 match self {
2131 ListUsersCursorError::CursorError(inner) => Some(inner),
2132 _ => None,
2133 }
2134 }
2135}
2136
2137impl ::std::fmt::Display for ListUsersCursorError {
2138 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2139 match self {
2140 ListUsersCursorError::DocNotFound => f.write_str("The required doc was not found."),
2141 ListUsersCursorError::CursorError(inner) => write!(f, "ListUsersCursorError: {}", inner),
2142 _ => write!(f, "{:?}", *self),
2143 }
2144 }
2145}
2146
2147impl From<PaperApiBaseError> for ListUsersCursorError {
2149 fn from(parent: PaperApiBaseError) -> Self {
2150 match parent {
2151 PaperApiBaseError::InsufficientPermissions => ListUsersCursorError::InsufficientPermissions,
2152 PaperApiBaseError::Other => ListUsersCursorError::Other,
2153 }
2154 }
2155}
2156#[derive(Debug, Clone, PartialEq, Eq)]
2157#[non_exhaustive] pub struct ListUsersOnFolderArgs {
2159 pub doc_id: PaperDocId,
2161 pub limit: i32,
2164}
2165
2166impl ListUsersOnFolderArgs {
2167 pub fn new(doc_id: PaperDocId) -> Self {
2168 ListUsersOnFolderArgs {
2169 doc_id,
2170 limit: 1000,
2171 }
2172 }
2173
2174 pub fn with_limit(mut self, value: i32) -> Self {
2175 self.limit = value;
2176 self
2177 }
2178}
2179
2180const LIST_USERS_ON_FOLDER_ARGS_FIELDS: &[&str] = &["doc_id",
2181 "limit"];
2182impl ListUsersOnFolderArgs {
2183 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2184 map: V,
2185 ) -> Result<ListUsersOnFolderArgs, V::Error> {
2186 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2187 }
2188
2189 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2190 mut map: V,
2191 optional: bool,
2192 ) -> Result<Option<ListUsersOnFolderArgs>, V::Error> {
2193 let mut field_doc_id = None;
2194 let mut field_limit = None;
2195 let mut nothing = true;
2196 while let Some(key) = map.next_key::<&str>()? {
2197 nothing = false;
2198 match key {
2199 "doc_id" => {
2200 if field_doc_id.is_some() {
2201 return Err(::serde::de::Error::duplicate_field("doc_id"));
2202 }
2203 field_doc_id = Some(map.next_value()?);
2204 }
2205 "limit" => {
2206 if field_limit.is_some() {
2207 return Err(::serde::de::Error::duplicate_field("limit"));
2208 }
2209 field_limit = Some(map.next_value()?);
2210 }
2211 _ => {
2212 map.next_value::<::serde_json::Value>()?;
2214 }
2215 }
2216 }
2217 if optional && nothing {
2218 return Ok(None);
2219 }
2220 let result = ListUsersOnFolderArgs {
2221 doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?,
2222 limit: field_limit.unwrap_or(1000),
2223 };
2224 Ok(Some(result))
2225 }
2226
2227 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2228 &self,
2229 s: &mut S::SerializeStruct,
2230 ) -> Result<(), S::Error> {
2231 use serde::ser::SerializeStruct;
2232 s.serialize_field("doc_id", &self.doc_id)?;
2233 if self.limit != 1000 {
2234 s.serialize_field("limit", &self.limit)?;
2235 }
2236 Ok(())
2237 }
2238}
2239
2240impl<'de> ::serde::de::Deserialize<'de> for ListUsersOnFolderArgs {
2241 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2242 use serde::de::{MapAccess, Visitor};
2244 struct StructVisitor;
2245 impl<'de> Visitor<'de> for StructVisitor {
2246 type Value = ListUsersOnFolderArgs;
2247 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2248 f.write_str("a ListUsersOnFolderArgs struct")
2249 }
2250 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2251 ListUsersOnFolderArgs::internal_deserialize(map)
2252 }
2253 }
2254 deserializer.deserialize_struct("ListUsersOnFolderArgs", LIST_USERS_ON_FOLDER_ARGS_FIELDS, StructVisitor)
2255 }
2256}
2257
2258impl ::serde::ser::Serialize for ListUsersOnFolderArgs {
2259 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2260 use serde::ser::SerializeStruct;
2262 let mut s = serializer.serialize_struct("ListUsersOnFolderArgs", 2)?;
2263 self.internal_serialize::<S>(&mut s)?;
2264 s.end()
2265 }
2266}
2267
2268impl From<ListUsersOnFolderArgs> for RefPaperDoc {
2270 fn from(subtype: ListUsersOnFolderArgs) -> Self {
2271 Self {
2272 doc_id: subtype.doc_id,
2273 }
2274 }
2275}
2276#[derive(Debug, Clone, PartialEq, Eq)]
2277#[non_exhaustive] pub struct ListUsersOnFolderContinueArgs {
2279 pub doc_id: PaperDocId,
2281 pub cursor: String,
2285}
2286
2287impl ListUsersOnFolderContinueArgs {
2288 pub fn new(doc_id: PaperDocId, cursor: String) -> Self {
2289 ListUsersOnFolderContinueArgs {
2290 doc_id,
2291 cursor,
2292 }
2293 }
2294}
2295
2296const LIST_USERS_ON_FOLDER_CONTINUE_ARGS_FIELDS: &[&str] = &["doc_id",
2297 "cursor"];
2298impl ListUsersOnFolderContinueArgs {
2299 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2300 map: V,
2301 ) -> Result<ListUsersOnFolderContinueArgs, V::Error> {
2302 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2303 }
2304
2305 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2306 mut map: V,
2307 optional: bool,
2308 ) -> Result<Option<ListUsersOnFolderContinueArgs>, V::Error> {
2309 let mut field_doc_id = None;
2310 let mut field_cursor = None;
2311 let mut nothing = true;
2312 while let Some(key) = map.next_key::<&str>()? {
2313 nothing = false;
2314 match key {
2315 "doc_id" => {
2316 if field_doc_id.is_some() {
2317 return Err(::serde::de::Error::duplicate_field("doc_id"));
2318 }
2319 field_doc_id = Some(map.next_value()?);
2320 }
2321 "cursor" => {
2322 if field_cursor.is_some() {
2323 return Err(::serde::de::Error::duplicate_field("cursor"));
2324 }
2325 field_cursor = Some(map.next_value()?);
2326 }
2327 _ => {
2328 map.next_value::<::serde_json::Value>()?;
2330 }
2331 }
2332 }
2333 if optional && nothing {
2334 return Ok(None);
2335 }
2336 let result = ListUsersOnFolderContinueArgs {
2337 doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?,
2338 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
2339 };
2340 Ok(Some(result))
2341 }
2342
2343 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2344 &self,
2345 s: &mut S::SerializeStruct,
2346 ) -> Result<(), S::Error> {
2347 use serde::ser::SerializeStruct;
2348 s.serialize_field("doc_id", &self.doc_id)?;
2349 s.serialize_field("cursor", &self.cursor)?;
2350 Ok(())
2351 }
2352}
2353
2354impl<'de> ::serde::de::Deserialize<'de> for ListUsersOnFolderContinueArgs {
2355 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2356 use serde::de::{MapAccess, Visitor};
2358 struct StructVisitor;
2359 impl<'de> Visitor<'de> for StructVisitor {
2360 type Value = ListUsersOnFolderContinueArgs;
2361 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2362 f.write_str("a ListUsersOnFolderContinueArgs struct")
2363 }
2364 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2365 ListUsersOnFolderContinueArgs::internal_deserialize(map)
2366 }
2367 }
2368 deserializer.deserialize_struct("ListUsersOnFolderContinueArgs", LIST_USERS_ON_FOLDER_CONTINUE_ARGS_FIELDS, StructVisitor)
2369 }
2370}
2371
2372impl ::serde::ser::Serialize for ListUsersOnFolderContinueArgs {
2373 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2374 use serde::ser::SerializeStruct;
2376 let mut s = serializer.serialize_struct("ListUsersOnFolderContinueArgs", 2)?;
2377 self.internal_serialize::<S>(&mut s)?;
2378 s.end()
2379 }
2380}
2381
2382impl From<ListUsersOnFolderContinueArgs> for RefPaperDoc {
2384 fn from(subtype: ListUsersOnFolderContinueArgs) -> Self {
2385 Self {
2386 doc_id: subtype.doc_id,
2387 }
2388 }
2389}
2390#[derive(Debug, Clone, PartialEq, Eq)]
2391#[non_exhaustive] pub struct ListUsersOnFolderResponse {
2393 pub invitees: Vec<crate::types::sharing::InviteeInfo>,
2395 pub users: Vec<crate::types::sharing::UserInfo>,
2397 pub cursor: Cursor,
2402 pub has_more: bool,
2408}
2409
2410impl ListUsersOnFolderResponse {
2411 pub fn new(
2412 invitees: Vec<crate::types::sharing::InviteeInfo>,
2413 users: Vec<crate::types::sharing::UserInfo>,
2414 cursor: Cursor,
2415 has_more: bool,
2416 ) -> Self {
2417 ListUsersOnFolderResponse {
2418 invitees,
2419 users,
2420 cursor,
2421 has_more,
2422 }
2423 }
2424}
2425
2426const LIST_USERS_ON_FOLDER_RESPONSE_FIELDS: &[&str] = &["invitees",
2427 "users",
2428 "cursor",
2429 "has_more"];
2430impl ListUsersOnFolderResponse {
2431 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2432 map: V,
2433 ) -> Result<ListUsersOnFolderResponse, V::Error> {
2434 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2435 }
2436
2437 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2438 mut map: V,
2439 optional: bool,
2440 ) -> Result<Option<ListUsersOnFolderResponse>, V::Error> {
2441 let mut field_invitees = None;
2442 let mut field_users = None;
2443 let mut field_cursor = None;
2444 let mut field_has_more = None;
2445 let mut nothing = true;
2446 while let Some(key) = map.next_key::<&str>()? {
2447 nothing = false;
2448 match key {
2449 "invitees" => {
2450 if field_invitees.is_some() {
2451 return Err(::serde::de::Error::duplicate_field("invitees"));
2452 }
2453 field_invitees = Some(map.next_value()?);
2454 }
2455 "users" => {
2456 if field_users.is_some() {
2457 return Err(::serde::de::Error::duplicate_field("users"));
2458 }
2459 field_users = Some(map.next_value()?);
2460 }
2461 "cursor" => {
2462 if field_cursor.is_some() {
2463 return Err(::serde::de::Error::duplicate_field("cursor"));
2464 }
2465 field_cursor = Some(map.next_value()?);
2466 }
2467 "has_more" => {
2468 if field_has_more.is_some() {
2469 return Err(::serde::de::Error::duplicate_field("has_more"));
2470 }
2471 field_has_more = Some(map.next_value()?);
2472 }
2473 _ => {
2474 map.next_value::<::serde_json::Value>()?;
2476 }
2477 }
2478 }
2479 if optional && nothing {
2480 return Ok(None);
2481 }
2482 let result = ListUsersOnFolderResponse {
2483 invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?,
2484 users: field_users.ok_or_else(|| ::serde::de::Error::missing_field("users"))?,
2485 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
2486 has_more: field_has_more.ok_or_else(|| ::serde::de::Error::missing_field("has_more"))?,
2487 };
2488 Ok(Some(result))
2489 }
2490
2491 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2492 &self,
2493 s: &mut S::SerializeStruct,
2494 ) -> Result<(), S::Error> {
2495 use serde::ser::SerializeStruct;
2496 s.serialize_field("invitees", &self.invitees)?;
2497 s.serialize_field("users", &self.users)?;
2498 s.serialize_field("cursor", &self.cursor)?;
2499 s.serialize_field("has_more", &self.has_more)?;
2500 Ok(())
2501 }
2502}
2503
2504impl<'de> ::serde::de::Deserialize<'de> for ListUsersOnFolderResponse {
2505 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2506 use serde::de::{MapAccess, Visitor};
2508 struct StructVisitor;
2509 impl<'de> Visitor<'de> for StructVisitor {
2510 type Value = ListUsersOnFolderResponse;
2511 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2512 f.write_str("a ListUsersOnFolderResponse struct")
2513 }
2514 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2515 ListUsersOnFolderResponse::internal_deserialize(map)
2516 }
2517 }
2518 deserializer.deserialize_struct("ListUsersOnFolderResponse", LIST_USERS_ON_FOLDER_RESPONSE_FIELDS, StructVisitor)
2519 }
2520}
2521
2522impl ::serde::ser::Serialize for ListUsersOnFolderResponse {
2523 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2524 use serde::ser::SerializeStruct;
2526 let mut s = serializer.serialize_struct("ListUsersOnFolderResponse", 4)?;
2527 self.internal_serialize::<S>(&mut s)?;
2528 s.end()
2529 }
2530}
2531
2532#[derive(Debug, Clone, PartialEq, Eq)]
2533#[non_exhaustive] pub struct ListUsersOnPaperDocArgs {
2535 pub doc_id: PaperDocId,
2537 pub limit: i32,
2540 pub filter_by: UserOnPaperDocFilter,
2542}
2543
2544impl ListUsersOnPaperDocArgs {
2545 pub fn new(doc_id: PaperDocId) -> Self {
2546 ListUsersOnPaperDocArgs {
2547 doc_id,
2548 limit: 1000,
2549 filter_by: UserOnPaperDocFilter::Shared,
2550 }
2551 }
2552
2553 pub fn with_limit(mut self, value: i32) -> Self {
2554 self.limit = value;
2555 self
2556 }
2557
2558 pub fn with_filter_by(mut self, value: UserOnPaperDocFilter) -> Self {
2559 self.filter_by = value;
2560 self
2561 }
2562}
2563
2564const LIST_USERS_ON_PAPER_DOC_ARGS_FIELDS: &[&str] = &["doc_id",
2565 "limit",
2566 "filter_by"];
2567impl ListUsersOnPaperDocArgs {
2568 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2569 map: V,
2570 ) -> Result<ListUsersOnPaperDocArgs, V::Error> {
2571 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2572 }
2573
2574 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2575 mut map: V,
2576 optional: bool,
2577 ) -> Result<Option<ListUsersOnPaperDocArgs>, V::Error> {
2578 let mut field_doc_id = None;
2579 let mut field_limit = None;
2580 let mut field_filter_by = None;
2581 let mut nothing = true;
2582 while let Some(key) = map.next_key::<&str>()? {
2583 nothing = false;
2584 match key {
2585 "doc_id" => {
2586 if field_doc_id.is_some() {
2587 return Err(::serde::de::Error::duplicate_field("doc_id"));
2588 }
2589 field_doc_id = Some(map.next_value()?);
2590 }
2591 "limit" => {
2592 if field_limit.is_some() {
2593 return Err(::serde::de::Error::duplicate_field("limit"));
2594 }
2595 field_limit = Some(map.next_value()?);
2596 }
2597 "filter_by" => {
2598 if field_filter_by.is_some() {
2599 return Err(::serde::de::Error::duplicate_field("filter_by"));
2600 }
2601 field_filter_by = Some(map.next_value()?);
2602 }
2603 _ => {
2604 map.next_value::<::serde_json::Value>()?;
2606 }
2607 }
2608 }
2609 if optional && nothing {
2610 return Ok(None);
2611 }
2612 let result = ListUsersOnPaperDocArgs {
2613 doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?,
2614 limit: field_limit.unwrap_or(1000),
2615 filter_by: field_filter_by.unwrap_or(UserOnPaperDocFilter::Shared),
2616 };
2617 Ok(Some(result))
2618 }
2619
2620 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2621 &self,
2622 s: &mut S::SerializeStruct,
2623 ) -> Result<(), S::Error> {
2624 use serde::ser::SerializeStruct;
2625 s.serialize_field("doc_id", &self.doc_id)?;
2626 if self.limit != 1000 {
2627 s.serialize_field("limit", &self.limit)?;
2628 }
2629 if self.filter_by != UserOnPaperDocFilter::Shared {
2630 s.serialize_field("filter_by", &self.filter_by)?;
2631 }
2632 Ok(())
2633 }
2634}
2635
2636impl<'de> ::serde::de::Deserialize<'de> for ListUsersOnPaperDocArgs {
2637 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2638 use serde::de::{MapAccess, Visitor};
2640 struct StructVisitor;
2641 impl<'de> Visitor<'de> for StructVisitor {
2642 type Value = ListUsersOnPaperDocArgs;
2643 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2644 f.write_str("a ListUsersOnPaperDocArgs struct")
2645 }
2646 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2647 ListUsersOnPaperDocArgs::internal_deserialize(map)
2648 }
2649 }
2650 deserializer.deserialize_struct("ListUsersOnPaperDocArgs", LIST_USERS_ON_PAPER_DOC_ARGS_FIELDS, StructVisitor)
2651 }
2652}
2653
2654impl ::serde::ser::Serialize for ListUsersOnPaperDocArgs {
2655 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2656 use serde::ser::SerializeStruct;
2658 let mut s = serializer.serialize_struct("ListUsersOnPaperDocArgs", 3)?;
2659 self.internal_serialize::<S>(&mut s)?;
2660 s.end()
2661 }
2662}
2663
2664impl From<ListUsersOnPaperDocArgs> for RefPaperDoc {
2666 fn from(subtype: ListUsersOnPaperDocArgs) -> Self {
2667 Self {
2668 doc_id: subtype.doc_id,
2669 }
2670 }
2671}
2672#[derive(Debug, Clone, PartialEq, Eq)]
2673#[non_exhaustive] pub struct ListUsersOnPaperDocContinueArgs {
2675 pub doc_id: PaperDocId,
2677 pub cursor: String,
2681}
2682
2683impl ListUsersOnPaperDocContinueArgs {
2684 pub fn new(doc_id: PaperDocId, cursor: String) -> Self {
2685 ListUsersOnPaperDocContinueArgs {
2686 doc_id,
2687 cursor,
2688 }
2689 }
2690}
2691
2692const LIST_USERS_ON_PAPER_DOC_CONTINUE_ARGS_FIELDS: &[&str] = &["doc_id",
2693 "cursor"];
2694impl ListUsersOnPaperDocContinueArgs {
2695 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2696 map: V,
2697 ) -> Result<ListUsersOnPaperDocContinueArgs, V::Error> {
2698 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2699 }
2700
2701 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2702 mut map: V,
2703 optional: bool,
2704 ) -> Result<Option<ListUsersOnPaperDocContinueArgs>, V::Error> {
2705 let mut field_doc_id = None;
2706 let mut field_cursor = None;
2707 let mut nothing = true;
2708 while let Some(key) = map.next_key::<&str>()? {
2709 nothing = false;
2710 match key {
2711 "doc_id" => {
2712 if field_doc_id.is_some() {
2713 return Err(::serde::de::Error::duplicate_field("doc_id"));
2714 }
2715 field_doc_id = Some(map.next_value()?);
2716 }
2717 "cursor" => {
2718 if field_cursor.is_some() {
2719 return Err(::serde::de::Error::duplicate_field("cursor"));
2720 }
2721 field_cursor = Some(map.next_value()?);
2722 }
2723 _ => {
2724 map.next_value::<::serde_json::Value>()?;
2726 }
2727 }
2728 }
2729 if optional && nothing {
2730 return Ok(None);
2731 }
2732 let result = ListUsersOnPaperDocContinueArgs {
2733 doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?,
2734 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
2735 };
2736 Ok(Some(result))
2737 }
2738
2739 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2740 &self,
2741 s: &mut S::SerializeStruct,
2742 ) -> Result<(), S::Error> {
2743 use serde::ser::SerializeStruct;
2744 s.serialize_field("doc_id", &self.doc_id)?;
2745 s.serialize_field("cursor", &self.cursor)?;
2746 Ok(())
2747 }
2748}
2749
2750impl<'de> ::serde::de::Deserialize<'de> for ListUsersOnPaperDocContinueArgs {
2751 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2752 use serde::de::{MapAccess, Visitor};
2754 struct StructVisitor;
2755 impl<'de> Visitor<'de> for StructVisitor {
2756 type Value = ListUsersOnPaperDocContinueArgs;
2757 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2758 f.write_str("a ListUsersOnPaperDocContinueArgs struct")
2759 }
2760 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2761 ListUsersOnPaperDocContinueArgs::internal_deserialize(map)
2762 }
2763 }
2764 deserializer.deserialize_struct("ListUsersOnPaperDocContinueArgs", LIST_USERS_ON_PAPER_DOC_CONTINUE_ARGS_FIELDS, StructVisitor)
2765 }
2766}
2767
2768impl ::serde::ser::Serialize for ListUsersOnPaperDocContinueArgs {
2769 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2770 use serde::ser::SerializeStruct;
2772 let mut s = serializer.serialize_struct("ListUsersOnPaperDocContinueArgs", 2)?;
2773 self.internal_serialize::<S>(&mut s)?;
2774 s.end()
2775 }
2776}
2777
2778impl From<ListUsersOnPaperDocContinueArgs> for RefPaperDoc {
2780 fn from(subtype: ListUsersOnPaperDocContinueArgs) -> Self {
2781 Self {
2782 doc_id: subtype.doc_id,
2783 }
2784 }
2785}
2786#[derive(Debug, Clone, PartialEq, Eq)]
2787#[non_exhaustive] pub struct ListUsersOnPaperDocResponse {
2789 pub invitees: Vec<InviteeInfoWithPermissionLevel>,
2792 pub users: Vec<UserInfoWithPermissionLevel>,
2794 pub doc_owner: crate::types::sharing::UserInfo,
2796 pub cursor: Cursor,
2800 pub has_more: bool,
2805}
2806
2807impl ListUsersOnPaperDocResponse {
2808 pub fn new(
2809 invitees: Vec<InviteeInfoWithPermissionLevel>,
2810 users: Vec<UserInfoWithPermissionLevel>,
2811 doc_owner: crate::types::sharing::UserInfo,
2812 cursor: Cursor,
2813 has_more: bool,
2814 ) -> Self {
2815 ListUsersOnPaperDocResponse {
2816 invitees,
2817 users,
2818 doc_owner,
2819 cursor,
2820 has_more,
2821 }
2822 }
2823}
2824
2825const LIST_USERS_ON_PAPER_DOC_RESPONSE_FIELDS: &[&str] = &["invitees",
2826 "users",
2827 "doc_owner",
2828 "cursor",
2829 "has_more"];
2830impl ListUsersOnPaperDocResponse {
2831 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2832 map: V,
2833 ) -> Result<ListUsersOnPaperDocResponse, V::Error> {
2834 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2835 }
2836
2837 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2838 mut map: V,
2839 optional: bool,
2840 ) -> Result<Option<ListUsersOnPaperDocResponse>, V::Error> {
2841 let mut field_invitees = None;
2842 let mut field_users = None;
2843 let mut field_doc_owner = None;
2844 let mut field_cursor = None;
2845 let mut field_has_more = None;
2846 let mut nothing = true;
2847 while let Some(key) = map.next_key::<&str>()? {
2848 nothing = false;
2849 match key {
2850 "invitees" => {
2851 if field_invitees.is_some() {
2852 return Err(::serde::de::Error::duplicate_field("invitees"));
2853 }
2854 field_invitees = Some(map.next_value()?);
2855 }
2856 "users" => {
2857 if field_users.is_some() {
2858 return Err(::serde::de::Error::duplicate_field("users"));
2859 }
2860 field_users = Some(map.next_value()?);
2861 }
2862 "doc_owner" => {
2863 if field_doc_owner.is_some() {
2864 return Err(::serde::de::Error::duplicate_field("doc_owner"));
2865 }
2866 field_doc_owner = Some(map.next_value()?);
2867 }
2868 "cursor" => {
2869 if field_cursor.is_some() {
2870 return Err(::serde::de::Error::duplicate_field("cursor"));
2871 }
2872 field_cursor = Some(map.next_value()?);
2873 }
2874 "has_more" => {
2875 if field_has_more.is_some() {
2876 return Err(::serde::de::Error::duplicate_field("has_more"));
2877 }
2878 field_has_more = Some(map.next_value()?);
2879 }
2880 _ => {
2881 map.next_value::<::serde_json::Value>()?;
2883 }
2884 }
2885 }
2886 if optional && nothing {
2887 return Ok(None);
2888 }
2889 let result = ListUsersOnPaperDocResponse {
2890 invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?,
2891 users: field_users.ok_or_else(|| ::serde::de::Error::missing_field("users"))?,
2892 doc_owner: field_doc_owner.ok_or_else(|| ::serde::de::Error::missing_field("doc_owner"))?,
2893 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
2894 has_more: field_has_more.ok_or_else(|| ::serde::de::Error::missing_field("has_more"))?,
2895 };
2896 Ok(Some(result))
2897 }
2898
2899 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2900 &self,
2901 s: &mut S::SerializeStruct,
2902 ) -> Result<(), S::Error> {
2903 use serde::ser::SerializeStruct;
2904 s.serialize_field("invitees", &self.invitees)?;
2905 s.serialize_field("users", &self.users)?;
2906 s.serialize_field("doc_owner", &self.doc_owner)?;
2907 s.serialize_field("cursor", &self.cursor)?;
2908 s.serialize_field("has_more", &self.has_more)?;
2909 Ok(())
2910 }
2911}
2912
2913impl<'de> ::serde::de::Deserialize<'de> for ListUsersOnPaperDocResponse {
2914 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2915 use serde::de::{MapAccess, Visitor};
2917 struct StructVisitor;
2918 impl<'de> Visitor<'de> for StructVisitor {
2919 type Value = ListUsersOnPaperDocResponse;
2920 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2921 f.write_str("a ListUsersOnPaperDocResponse struct")
2922 }
2923 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2924 ListUsersOnPaperDocResponse::internal_deserialize(map)
2925 }
2926 }
2927 deserializer.deserialize_struct("ListUsersOnPaperDocResponse", LIST_USERS_ON_PAPER_DOC_RESPONSE_FIELDS, StructVisitor)
2928 }
2929}
2930
2931impl ::serde::ser::Serialize for ListUsersOnPaperDocResponse {
2932 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2933 use serde::ser::SerializeStruct;
2935 let mut s = serializer.serialize_struct("ListUsersOnPaperDocResponse", 5)?;
2936 self.internal_serialize::<S>(&mut s)?;
2937 s.end()
2938 }
2939}
2940
2941#[derive(Debug, Clone, PartialEq, Eq)]
2942#[non_exhaustive] pub enum PaperApiBaseError {
2944 InsufficientPermissions,
2949 Other,
2952}
2953
2954impl<'de> ::serde::de::Deserialize<'de> for PaperApiBaseError {
2955 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2956 use serde::de::{self, MapAccess, Visitor};
2958 struct EnumVisitor;
2959 impl<'de> Visitor<'de> for EnumVisitor {
2960 type Value = PaperApiBaseError;
2961 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2962 f.write_str("a PaperApiBaseError structure")
2963 }
2964 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2965 let tag: &str = match map.next_key()? {
2966 Some(".tag") => map.next_value()?,
2967 _ => return Err(de::Error::missing_field(".tag"))
2968 };
2969 let value = match tag {
2970 "insufficient_permissions" => PaperApiBaseError::InsufficientPermissions,
2971 _ => PaperApiBaseError::Other,
2972 };
2973 crate::eat_json_fields(&mut map)?;
2974 Ok(value)
2975 }
2976 }
2977 const VARIANTS: &[&str] = &["insufficient_permissions",
2978 "other"];
2979 deserializer.deserialize_struct("PaperApiBaseError", VARIANTS, EnumVisitor)
2980 }
2981}
2982
2983impl ::serde::ser::Serialize for PaperApiBaseError {
2984 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2985 use serde::ser::SerializeStruct;
2987 match self {
2988 PaperApiBaseError::InsufficientPermissions => {
2989 let mut s = serializer.serialize_struct("PaperApiBaseError", 1)?;
2991 s.serialize_field(".tag", "insufficient_permissions")?;
2992 s.end()
2993 }
2994 PaperApiBaseError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
2995 }
2996 }
2997}
2998
2999impl ::std::error::Error for PaperApiBaseError {
3000}
3001
3002impl ::std::fmt::Display for PaperApiBaseError {
3003 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3004 write!(f, "{:?}", *self)
3005 }
3006}
3007
3008#[derive(Debug, Clone, PartialEq, Eq)]
3009#[non_exhaustive] pub enum PaperApiCursorError {
3011 ExpiredCursor,
3013 InvalidCursor,
3015 WrongUserInCursor,
3017 Reset,
3020 Other,
3023}
3024
3025impl<'de> ::serde::de::Deserialize<'de> for PaperApiCursorError {
3026 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3027 use serde::de::{self, MapAccess, Visitor};
3029 struct EnumVisitor;
3030 impl<'de> Visitor<'de> for EnumVisitor {
3031 type Value = PaperApiCursorError;
3032 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3033 f.write_str("a PaperApiCursorError structure")
3034 }
3035 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3036 let tag: &str = match map.next_key()? {
3037 Some(".tag") => map.next_value()?,
3038 _ => return Err(de::Error::missing_field(".tag"))
3039 };
3040 let value = match tag {
3041 "expired_cursor" => PaperApiCursorError::ExpiredCursor,
3042 "invalid_cursor" => PaperApiCursorError::InvalidCursor,
3043 "wrong_user_in_cursor" => PaperApiCursorError::WrongUserInCursor,
3044 "reset" => PaperApiCursorError::Reset,
3045 _ => PaperApiCursorError::Other,
3046 };
3047 crate::eat_json_fields(&mut map)?;
3048 Ok(value)
3049 }
3050 }
3051 const VARIANTS: &[&str] = &["expired_cursor",
3052 "invalid_cursor",
3053 "wrong_user_in_cursor",
3054 "reset",
3055 "other"];
3056 deserializer.deserialize_struct("PaperApiCursorError", VARIANTS, EnumVisitor)
3057 }
3058}
3059
3060impl ::serde::ser::Serialize for PaperApiCursorError {
3061 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3062 use serde::ser::SerializeStruct;
3064 match self {
3065 PaperApiCursorError::ExpiredCursor => {
3066 let mut s = serializer.serialize_struct("PaperApiCursorError", 1)?;
3068 s.serialize_field(".tag", "expired_cursor")?;
3069 s.end()
3070 }
3071 PaperApiCursorError::InvalidCursor => {
3072 let mut s = serializer.serialize_struct("PaperApiCursorError", 1)?;
3074 s.serialize_field(".tag", "invalid_cursor")?;
3075 s.end()
3076 }
3077 PaperApiCursorError::WrongUserInCursor => {
3078 let mut s = serializer.serialize_struct("PaperApiCursorError", 1)?;
3080 s.serialize_field(".tag", "wrong_user_in_cursor")?;
3081 s.end()
3082 }
3083 PaperApiCursorError::Reset => {
3084 let mut s = serializer.serialize_struct("PaperApiCursorError", 1)?;
3086 s.serialize_field(".tag", "reset")?;
3087 s.end()
3088 }
3089 PaperApiCursorError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3090 }
3091 }
3092}
3093
3094impl ::std::error::Error for PaperApiCursorError {
3095}
3096
3097impl ::std::fmt::Display for PaperApiCursorError {
3098 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3099 match self {
3100 PaperApiCursorError::ExpiredCursor => f.write_str("The provided cursor is expired."),
3101 PaperApiCursorError::InvalidCursor => f.write_str("The provided cursor is invalid."),
3102 PaperApiCursorError::WrongUserInCursor => f.write_str("The provided cursor contains invalid user."),
3103 PaperApiCursorError::Reset => f.write_str("Indicates that the cursor has been invalidated. Call the corresponding non-continue endpoint to obtain a new cursor."),
3104 _ => write!(f, "{:?}", *self),
3105 }
3106 }
3107}
3108
3109#[derive(Debug, Clone, PartialEq, Eq)]
3110#[non_exhaustive] pub struct PaperDocCreateArgs {
3112 pub import_format: ImportFormat,
3114 pub parent_folder_id: Option<String>,
3117}
3118
3119impl PaperDocCreateArgs {
3120 pub fn new(import_format: ImportFormat) -> Self {
3121 PaperDocCreateArgs {
3122 import_format,
3123 parent_folder_id: None,
3124 }
3125 }
3126
3127 pub fn with_parent_folder_id(mut self, value: String) -> Self {
3128 self.parent_folder_id = Some(value);
3129 self
3130 }
3131}
3132
3133const PAPER_DOC_CREATE_ARGS_FIELDS: &[&str] = &["import_format",
3134 "parent_folder_id"];
3135impl PaperDocCreateArgs {
3136 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3137 map: V,
3138 ) -> Result<PaperDocCreateArgs, V::Error> {
3139 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3140 }
3141
3142 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3143 mut map: V,
3144 optional: bool,
3145 ) -> Result<Option<PaperDocCreateArgs>, V::Error> {
3146 let mut field_import_format = None;
3147 let mut field_parent_folder_id = None;
3148 let mut nothing = true;
3149 while let Some(key) = map.next_key::<&str>()? {
3150 nothing = false;
3151 match key {
3152 "import_format" => {
3153 if field_import_format.is_some() {
3154 return Err(::serde::de::Error::duplicate_field("import_format"));
3155 }
3156 field_import_format = Some(map.next_value()?);
3157 }
3158 "parent_folder_id" => {
3159 if field_parent_folder_id.is_some() {
3160 return Err(::serde::de::Error::duplicate_field("parent_folder_id"));
3161 }
3162 field_parent_folder_id = Some(map.next_value()?);
3163 }
3164 _ => {
3165 map.next_value::<::serde_json::Value>()?;
3167 }
3168 }
3169 }
3170 if optional && nothing {
3171 return Ok(None);
3172 }
3173 let result = PaperDocCreateArgs {
3174 import_format: field_import_format.ok_or_else(|| ::serde::de::Error::missing_field("import_format"))?,
3175 parent_folder_id: field_parent_folder_id.and_then(Option::flatten),
3176 };
3177 Ok(Some(result))
3178 }
3179
3180 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3181 &self,
3182 s: &mut S::SerializeStruct,
3183 ) -> Result<(), S::Error> {
3184 use serde::ser::SerializeStruct;
3185 s.serialize_field("import_format", &self.import_format)?;
3186 if let Some(val) = &self.parent_folder_id {
3187 s.serialize_field("parent_folder_id", val)?;
3188 }
3189 Ok(())
3190 }
3191}
3192
3193impl<'de> ::serde::de::Deserialize<'de> for PaperDocCreateArgs {
3194 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3195 use serde::de::{MapAccess, Visitor};
3197 struct StructVisitor;
3198 impl<'de> Visitor<'de> for StructVisitor {
3199 type Value = PaperDocCreateArgs;
3200 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3201 f.write_str("a PaperDocCreateArgs struct")
3202 }
3203 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3204 PaperDocCreateArgs::internal_deserialize(map)
3205 }
3206 }
3207 deserializer.deserialize_struct("PaperDocCreateArgs", PAPER_DOC_CREATE_ARGS_FIELDS, StructVisitor)
3208 }
3209}
3210
3211impl ::serde::ser::Serialize for PaperDocCreateArgs {
3212 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3213 use serde::ser::SerializeStruct;
3215 let mut s = serializer.serialize_struct("PaperDocCreateArgs", 2)?;
3216 self.internal_serialize::<S>(&mut s)?;
3217 s.end()
3218 }
3219}
3220
3221#[derive(Debug, Clone, PartialEq, Eq)]
3222#[non_exhaustive] pub enum PaperDocCreateError {
3224 InsufficientPermissions,
3229 ContentMalformed,
3231 FolderNotFound,
3233 DocLengthExceeded,
3235 ImageSizeExceeded,
3238 Other,
3241}
3242
3243impl<'de> ::serde::de::Deserialize<'de> for PaperDocCreateError {
3244 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3245 use serde::de::{self, MapAccess, Visitor};
3247 struct EnumVisitor;
3248 impl<'de> Visitor<'de> for EnumVisitor {
3249 type Value = PaperDocCreateError;
3250 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3251 f.write_str("a PaperDocCreateError structure")
3252 }
3253 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3254 let tag: &str = match map.next_key()? {
3255 Some(".tag") => map.next_value()?,
3256 _ => return Err(de::Error::missing_field(".tag"))
3257 };
3258 let value = match tag {
3259 "insufficient_permissions" => PaperDocCreateError::InsufficientPermissions,
3260 "content_malformed" => PaperDocCreateError::ContentMalformed,
3261 "folder_not_found" => PaperDocCreateError::FolderNotFound,
3262 "doc_length_exceeded" => PaperDocCreateError::DocLengthExceeded,
3263 "image_size_exceeded" => PaperDocCreateError::ImageSizeExceeded,
3264 _ => PaperDocCreateError::Other,
3265 };
3266 crate::eat_json_fields(&mut map)?;
3267 Ok(value)
3268 }
3269 }
3270 const VARIANTS: &[&str] = &["insufficient_permissions",
3271 "other",
3272 "content_malformed",
3273 "folder_not_found",
3274 "doc_length_exceeded",
3275 "image_size_exceeded"];
3276 deserializer.deserialize_struct("PaperDocCreateError", VARIANTS, EnumVisitor)
3277 }
3278}
3279
3280impl ::serde::ser::Serialize for PaperDocCreateError {
3281 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3282 use serde::ser::SerializeStruct;
3284 match self {
3285 PaperDocCreateError::InsufficientPermissions => {
3286 let mut s = serializer.serialize_struct("PaperDocCreateError", 1)?;
3288 s.serialize_field(".tag", "insufficient_permissions")?;
3289 s.end()
3290 }
3291 PaperDocCreateError::ContentMalformed => {
3292 let mut s = serializer.serialize_struct("PaperDocCreateError", 1)?;
3294 s.serialize_field(".tag", "content_malformed")?;
3295 s.end()
3296 }
3297 PaperDocCreateError::FolderNotFound => {
3298 let mut s = serializer.serialize_struct("PaperDocCreateError", 1)?;
3300 s.serialize_field(".tag", "folder_not_found")?;
3301 s.end()
3302 }
3303 PaperDocCreateError::DocLengthExceeded => {
3304 let mut s = serializer.serialize_struct("PaperDocCreateError", 1)?;
3306 s.serialize_field(".tag", "doc_length_exceeded")?;
3307 s.end()
3308 }
3309 PaperDocCreateError::ImageSizeExceeded => {
3310 let mut s = serializer.serialize_struct("PaperDocCreateError", 1)?;
3312 s.serialize_field(".tag", "image_size_exceeded")?;
3313 s.end()
3314 }
3315 PaperDocCreateError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3316 }
3317 }
3318}
3319
3320impl ::std::error::Error for PaperDocCreateError {
3321}
3322
3323impl ::std::fmt::Display for PaperDocCreateError {
3324 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3325 match self {
3326 PaperDocCreateError::ContentMalformed => f.write_str("The provided content was malformed and cannot be imported to Paper."),
3327 PaperDocCreateError::FolderNotFound => f.write_str("The specified Paper folder is cannot be found."),
3328 PaperDocCreateError::DocLengthExceeded => f.write_str("The newly created Paper doc would be too large. Please split the content into multiple docs."),
3329 PaperDocCreateError::ImageSizeExceeded => f.write_str("The imported document contains an image that is too large. The current limit is 1MB. This only applies to HTML with data URI."),
3330 _ => write!(f, "{:?}", *self),
3331 }
3332 }
3333}
3334
3335impl From<PaperApiBaseError> for PaperDocCreateError {
3337 fn from(parent: PaperApiBaseError) -> Self {
3338 match parent {
3339 PaperApiBaseError::InsufficientPermissions => PaperDocCreateError::InsufficientPermissions,
3340 PaperApiBaseError::Other => PaperDocCreateError::Other,
3341 }
3342 }
3343}
3344#[derive(Debug, Clone, PartialEq, Eq)]
3345#[non_exhaustive] pub struct PaperDocCreateUpdateResult {
3347 pub doc_id: String,
3349 pub revision: i64,
3351 pub title: String,
3353}
3354
3355impl PaperDocCreateUpdateResult {
3356 pub fn new(doc_id: String, revision: i64, title: String) -> Self {
3357 PaperDocCreateUpdateResult {
3358 doc_id,
3359 revision,
3360 title,
3361 }
3362 }
3363}
3364
3365const PAPER_DOC_CREATE_UPDATE_RESULT_FIELDS: &[&str] = &["doc_id",
3366 "revision",
3367 "title"];
3368impl PaperDocCreateUpdateResult {
3369 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3370 map: V,
3371 ) -> Result<PaperDocCreateUpdateResult, V::Error> {
3372 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3373 }
3374
3375 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3376 mut map: V,
3377 optional: bool,
3378 ) -> Result<Option<PaperDocCreateUpdateResult>, V::Error> {
3379 let mut field_doc_id = None;
3380 let mut field_revision = None;
3381 let mut field_title = None;
3382 let mut nothing = true;
3383 while let Some(key) = map.next_key::<&str>()? {
3384 nothing = false;
3385 match key {
3386 "doc_id" => {
3387 if field_doc_id.is_some() {
3388 return Err(::serde::de::Error::duplicate_field("doc_id"));
3389 }
3390 field_doc_id = Some(map.next_value()?);
3391 }
3392 "revision" => {
3393 if field_revision.is_some() {
3394 return Err(::serde::de::Error::duplicate_field("revision"));
3395 }
3396 field_revision = Some(map.next_value()?);
3397 }
3398 "title" => {
3399 if field_title.is_some() {
3400 return Err(::serde::de::Error::duplicate_field("title"));
3401 }
3402 field_title = Some(map.next_value()?);
3403 }
3404 _ => {
3405 map.next_value::<::serde_json::Value>()?;
3407 }
3408 }
3409 }
3410 if optional && nothing {
3411 return Ok(None);
3412 }
3413 let result = PaperDocCreateUpdateResult {
3414 doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?,
3415 revision: field_revision.ok_or_else(|| ::serde::de::Error::missing_field("revision"))?,
3416 title: field_title.ok_or_else(|| ::serde::de::Error::missing_field("title"))?,
3417 };
3418 Ok(Some(result))
3419 }
3420
3421 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3422 &self,
3423 s: &mut S::SerializeStruct,
3424 ) -> Result<(), S::Error> {
3425 use serde::ser::SerializeStruct;
3426 s.serialize_field("doc_id", &self.doc_id)?;
3427 s.serialize_field("revision", &self.revision)?;
3428 s.serialize_field("title", &self.title)?;
3429 Ok(())
3430 }
3431}
3432
3433impl<'de> ::serde::de::Deserialize<'de> for PaperDocCreateUpdateResult {
3434 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3435 use serde::de::{MapAccess, Visitor};
3437 struct StructVisitor;
3438 impl<'de> Visitor<'de> for StructVisitor {
3439 type Value = PaperDocCreateUpdateResult;
3440 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3441 f.write_str("a PaperDocCreateUpdateResult struct")
3442 }
3443 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3444 PaperDocCreateUpdateResult::internal_deserialize(map)
3445 }
3446 }
3447 deserializer.deserialize_struct("PaperDocCreateUpdateResult", PAPER_DOC_CREATE_UPDATE_RESULT_FIELDS, StructVisitor)
3448 }
3449}
3450
3451impl ::serde::ser::Serialize for PaperDocCreateUpdateResult {
3452 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3453 use serde::ser::SerializeStruct;
3455 let mut s = serializer.serialize_struct("PaperDocCreateUpdateResult", 3)?;
3456 self.internal_serialize::<S>(&mut s)?;
3457 s.end()
3458 }
3459}
3460
3461#[derive(Debug, Clone, PartialEq, Eq)]
3462#[non_exhaustive] pub struct PaperDocExport {
3464 pub doc_id: PaperDocId,
3466 pub export_format: ExportFormat,
3467}
3468
3469impl PaperDocExport {
3470 pub fn new(doc_id: PaperDocId, export_format: ExportFormat) -> Self {
3471 PaperDocExport {
3472 doc_id,
3473 export_format,
3474 }
3475 }
3476}
3477
3478const PAPER_DOC_EXPORT_FIELDS: &[&str] = &["doc_id",
3479 "export_format"];
3480impl PaperDocExport {
3481 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3482 map: V,
3483 ) -> Result<PaperDocExport, V::Error> {
3484 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3485 }
3486
3487 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3488 mut map: V,
3489 optional: bool,
3490 ) -> Result<Option<PaperDocExport>, V::Error> {
3491 let mut field_doc_id = None;
3492 let mut field_export_format = None;
3493 let mut nothing = true;
3494 while let Some(key) = map.next_key::<&str>()? {
3495 nothing = false;
3496 match key {
3497 "doc_id" => {
3498 if field_doc_id.is_some() {
3499 return Err(::serde::de::Error::duplicate_field("doc_id"));
3500 }
3501 field_doc_id = Some(map.next_value()?);
3502 }
3503 "export_format" => {
3504 if field_export_format.is_some() {
3505 return Err(::serde::de::Error::duplicate_field("export_format"));
3506 }
3507 field_export_format = Some(map.next_value()?);
3508 }
3509 _ => {
3510 map.next_value::<::serde_json::Value>()?;
3512 }
3513 }
3514 }
3515 if optional && nothing {
3516 return Ok(None);
3517 }
3518 let result = PaperDocExport {
3519 doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?,
3520 export_format: field_export_format.ok_or_else(|| ::serde::de::Error::missing_field("export_format"))?,
3521 };
3522 Ok(Some(result))
3523 }
3524
3525 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3526 &self,
3527 s: &mut S::SerializeStruct,
3528 ) -> Result<(), S::Error> {
3529 use serde::ser::SerializeStruct;
3530 s.serialize_field("doc_id", &self.doc_id)?;
3531 s.serialize_field("export_format", &self.export_format)?;
3532 Ok(())
3533 }
3534}
3535
3536impl<'de> ::serde::de::Deserialize<'de> for PaperDocExport {
3537 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3538 use serde::de::{MapAccess, Visitor};
3540 struct StructVisitor;
3541 impl<'de> Visitor<'de> for StructVisitor {
3542 type Value = PaperDocExport;
3543 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3544 f.write_str("a PaperDocExport struct")
3545 }
3546 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3547 PaperDocExport::internal_deserialize(map)
3548 }
3549 }
3550 deserializer.deserialize_struct("PaperDocExport", PAPER_DOC_EXPORT_FIELDS, StructVisitor)
3551 }
3552}
3553
3554impl ::serde::ser::Serialize for PaperDocExport {
3555 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3556 use serde::ser::SerializeStruct;
3558 let mut s = serializer.serialize_struct("PaperDocExport", 2)?;
3559 self.internal_serialize::<S>(&mut s)?;
3560 s.end()
3561 }
3562}
3563
3564impl From<PaperDocExport> for RefPaperDoc {
3566 fn from(subtype: PaperDocExport) -> Self {
3567 Self {
3568 doc_id: subtype.doc_id,
3569 }
3570 }
3571}
3572#[derive(Debug, Clone, PartialEq, Eq)]
3573#[non_exhaustive] pub struct PaperDocExportResult {
3575 pub owner: String,
3577 pub title: String,
3579 pub revision: i64,
3581 pub mime_type: String,
3583}
3584
3585impl PaperDocExportResult {
3586 pub fn new(owner: String, title: String, revision: i64, mime_type: String) -> Self {
3587 PaperDocExportResult {
3588 owner,
3589 title,
3590 revision,
3591 mime_type,
3592 }
3593 }
3594}
3595
3596const PAPER_DOC_EXPORT_RESULT_FIELDS: &[&str] = &["owner",
3597 "title",
3598 "revision",
3599 "mime_type"];
3600impl PaperDocExportResult {
3601 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3602 map: V,
3603 ) -> Result<PaperDocExportResult, V::Error> {
3604 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3605 }
3606
3607 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3608 mut map: V,
3609 optional: bool,
3610 ) -> Result<Option<PaperDocExportResult>, V::Error> {
3611 let mut field_owner = None;
3612 let mut field_title = None;
3613 let mut field_revision = None;
3614 let mut field_mime_type = None;
3615 let mut nothing = true;
3616 while let Some(key) = map.next_key::<&str>()? {
3617 nothing = false;
3618 match key {
3619 "owner" => {
3620 if field_owner.is_some() {
3621 return Err(::serde::de::Error::duplicate_field("owner"));
3622 }
3623 field_owner = Some(map.next_value()?);
3624 }
3625 "title" => {
3626 if field_title.is_some() {
3627 return Err(::serde::de::Error::duplicate_field("title"));
3628 }
3629 field_title = Some(map.next_value()?);
3630 }
3631 "revision" => {
3632 if field_revision.is_some() {
3633 return Err(::serde::de::Error::duplicate_field("revision"));
3634 }
3635 field_revision = Some(map.next_value()?);
3636 }
3637 "mime_type" => {
3638 if field_mime_type.is_some() {
3639 return Err(::serde::de::Error::duplicate_field("mime_type"));
3640 }
3641 field_mime_type = Some(map.next_value()?);
3642 }
3643 _ => {
3644 map.next_value::<::serde_json::Value>()?;
3646 }
3647 }
3648 }
3649 if optional && nothing {
3650 return Ok(None);
3651 }
3652 let result = PaperDocExportResult {
3653 owner: field_owner.ok_or_else(|| ::serde::de::Error::missing_field("owner"))?,
3654 title: field_title.ok_or_else(|| ::serde::de::Error::missing_field("title"))?,
3655 revision: field_revision.ok_or_else(|| ::serde::de::Error::missing_field("revision"))?,
3656 mime_type: field_mime_type.ok_or_else(|| ::serde::de::Error::missing_field("mime_type"))?,
3657 };
3658 Ok(Some(result))
3659 }
3660
3661 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3662 &self,
3663 s: &mut S::SerializeStruct,
3664 ) -> Result<(), S::Error> {
3665 use serde::ser::SerializeStruct;
3666 s.serialize_field("owner", &self.owner)?;
3667 s.serialize_field("title", &self.title)?;
3668 s.serialize_field("revision", &self.revision)?;
3669 s.serialize_field("mime_type", &self.mime_type)?;
3670 Ok(())
3671 }
3672}
3673
3674impl<'de> ::serde::de::Deserialize<'de> for PaperDocExportResult {
3675 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3676 use serde::de::{MapAccess, Visitor};
3678 struct StructVisitor;
3679 impl<'de> Visitor<'de> for StructVisitor {
3680 type Value = PaperDocExportResult;
3681 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3682 f.write_str("a PaperDocExportResult struct")
3683 }
3684 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3685 PaperDocExportResult::internal_deserialize(map)
3686 }
3687 }
3688 deserializer.deserialize_struct("PaperDocExportResult", PAPER_DOC_EXPORT_RESULT_FIELDS, StructVisitor)
3689 }
3690}
3691
3692impl ::serde::ser::Serialize for PaperDocExportResult {
3693 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3694 use serde::ser::SerializeStruct;
3696 let mut s = serializer.serialize_struct("PaperDocExportResult", 4)?;
3697 self.internal_serialize::<S>(&mut s)?;
3698 s.end()
3699 }
3700}
3701
3702#[derive(Debug, Clone, PartialEq, Eq)]
3703#[non_exhaustive] pub enum PaperDocPermissionLevel {
3705 Edit,
3707 ViewAndComment,
3709 Other,
3712}
3713
3714impl<'de> ::serde::de::Deserialize<'de> for PaperDocPermissionLevel {
3715 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3716 use serde::de::{self, MapAccess, Visitor};
3718 struct EnumVisitor;
3719 impl<'de> Visitor<'de> for EnumVisitor {
3720 type Value = PaperDocPermissionLevel;
3721 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3722 f.write_str("a PaperDocPermissionLevel structure")
3723 }
3724 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3725 let tag: &str = match map.next_key()? {
3726 Some(".tag") => map.next_value()?,
3727 _ => return Err(de::Error::missing_field(".tag"))
3728 };
3729 let value = match tag {
3730 "edit" => PaperDocPermissionLevel::Edit,
3731 "view_and_comment" => PaperDocPermissionLevel::ViewAndComment,
3732 _ => PaperDocPermissionLevel::Other,
3733 };
3734 crate::eat_json_fields(&mut map)?;
3735 Ok(value)
3736 }
3737 }
3738 const VARIANTS: &[&str] = &["edit",
3739 "view_and_comment",
3740 "other"];
3741 deserializer.deserialize_struct("PaperDocPermissionLevel", VARIANTS, EnumVisitor)
3742 }
3743}
3744
3745impl ::serde::ser::Serialize for PaperDocPermissionLevel {
3746 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3747 use serde::ser::SerializeStruct;
3749 match self {
3750 PaperDocPermissionLevel::Edit => {
3751 let mut s = serializer.serialize_struct("PaperDocPermissionLevel", 1)?;
3753 s.serialize_field(".tag", "edit")?;
3754 s.end()
3755 }
3756 PaperDocPermissionLevel::ViewAndComment => {
3757 let mut s = serializer.serialize_struct("PaperDocPermissionLevel", 1)?;
3759 s.serialize_field(".tag", "view_and_comment")?;
3760 s.end()
3761 }
3762 PaperDocPermissionLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3763 }
3764 }
3765}
3766
3767#[derive(Debug, Clone, PartialEq, Eq)]
3768#[non_exhaustive] pub struct PaperDocSharingPolicy {
3770 pub doc_id: PaperDocId,
3772 pub sharing_policy: SharingPolicy,
3774}
3775
3776impl PaperDocSharingPolicy {
3777 pub fn new(doc_id: PaperDocId, sharing_policy: SharingPolicy) -> Self {
3778 PaperDocSharingPolicy {
3779 doc_id,
3780 sharing_policy,
3781 }
3782 }
3783}
3784
3785const PAPER_DOC_SHARING_POLICY_FIELDS: &[&str] = &["doc_id",
3786 "sharing_policy"];
3787impl PaperDocSharingPolicy {
3788 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3789 map: V,
3790 ) -> Result<PaperDocSharingPolicy, V::Error> {
3791 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3792 }
3793
3794 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3795 mut map: V,
3796 optional: bool,
3797 ) -> Result<Option<PaperDocSharingPolicy>, V::Error> {
3798 let mut field_doc_id = None;
3799 let mut field_sharing_policy = None;
3800 let mut nothing = true;
3801 while let Some(key) = map.next_key::<&str>()? {
3802 nothing = false;
3803 match key {
3804 "doc_id" => {
3805 if field_doc_id.is_some() {
3806 return Err(::serde::de::Error::duplicate_field("doc_id"));
3807 }
3808 field_doc_id = Some(map.next_value()?);
3809 }
3810 "sharing_policy" => {
3811 if field_sharing_policy.is_some() {
3812 return Err(::serde::de::Error::duplicate_field("sharing_policy"));
3813 }
3814 field_sharing_policy = Some(map.next_value()?);
3815 }
3816 _ => {
3817 map.next_value::<::serde_json::Value>()?;
3819 }
3820 }
3821 }
3822 if optional && nothing {
3823 return Ok(None);
3824 }
3825 let result = PaperDocSharingPolicy {
3826 doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?,
3827 sharing_policy: field_sharing_policy.ok_or_else(|| ::serde::de::Error::missing_field("sharing_policy"))?,
3828 };
3829 Ok(Some(result))
3830 }
3831
3832 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3833 &self,
3834 s: &mut S::SerializeStruct,
3835 ) -> Result<(), S::Error> {
3836 use serde::ser::SerializeStruct;
3837 s.serialize_field("doc_id", &self.doc_id)?;
3838 s.serialize_field("sharing_policy", &self.sharing_policy)?;
3839 Ok(())
3840 }
3841}
3842
3843impl<'de> ::serde::de::Deserialize<'de> for PaperDocSharingPolicy {
3844 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3845 use serde::de::{MapAccess, Visitor};
3847 struct StructVisitor;
3848 impl<'de> Visitor<'de> for StructVisitor {
3849 type Value = PaperDocSharingPolicy;
3850 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3851 f.write_str("a PaperDocSharingPolicy struct")
3852 }
3853 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3854 PaperDocSharingPolicy::internal_deserialize(map)
3855 }
3856 }
3857 deserializer.deserialize_struct("PaperDocSharingPolicy", PAPER_DOC_SHARING_POLICY_FIELDS, StructVisitor)
3858 }
3859}
3860
3861impl ::serde::ser::Serialize for PaperDocSharingPolicy {
3862 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3863 use serde::ser::SerializeStruct;
3865 let mut s = serializer.serialize_struct("PaperDocSharingPolicy", 2)?;
3866 self.internal_serialize::<S>(&mut s)?;
3867 s.end()
3868 }
3869}
3870
3871impl From<PaperDocSharingPolicy> for RefPaperDoc {
3873 fn from(subtype: PaperDocSharingPolicy) -> Self {
3874 Self {
3875 doc_id: subtype.doc_id,
3876 }
3877 }
3878}
3879#[derive(Debug, Clone, PartialEq, Eq)]
3880#[non_exhaustive] pub struct PaperDocUpdateArgs {
3882 pub doc_id: PaperDocId,
3884 pub doc_update_policy: PaperDocUpdatePolicy,
3886 pub revision: i64,
3889 pub import_format: ImportFormat,
3891}
3892
3893impl PaperDocUpdateArgs {
3894 pub fn new(
3895 doc_id: PaperDocId,
3896 doc_update_policy: PaperDocUpdatePolicy,
3897 revision: i64,
3898 import_format: ImportFormat,
3899 ) -> Self {
3900 PaperDocUpdateArgs {
3901 doc_id,
3902 doc_update_policy,
3903 revision,
3904 import_format,
3905 }
3906 }
3907}
3908
3909const PAPER_DOC_UPDATE_ARGS_FIELDS: &[&str] = &["doc_id",
3910 "doc_update_policy",
3911 "revision",
3912 "import_format"];
3913impl PaperDocUpdateArgs {
3914 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3915 map: V,
3916 ) -> Result<PaperDocUpdateArgs, V::Error> {
3917 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3918 }
3919
3920 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3921 mut map: V,
3922 optional: bool,
3923 ) -> Result<Option<PaperDocUpdateArgs>, V::Error> {
3924 let mut field_doc_id = None;
3925 let mut field_doc_update_policy = None;
3926 let mut field_revision = None;
3927 let mut field_import_format = None;
3928 let mut nothing = true;
3929 while let Some(key) = map.next_key::<&str>()? {
3930 nothing = false;
3931 match key {
3932 "doc_id" => {
3933 if field_doc_id.is_some() {
3934 return Err(::serde::de::Error::duplicate_field("doc_id"));
3935 }
3936 field_doc_id = Some(map.next_value()?);
3937 }
3938 "doc_update_policy" => {
3939 if field_doc_update_policy.is_some() {
3940 return Err(::serde::de::Error::duplicate_field("doc_update_policy"));
3941 }
3942 field_doc_update_policy = Some(map.next_value()?);
3943 }
3944 "revision" => {
3945 if field_revision.is_some() {
3946 return Err(::serde::de::Error::duplicate_field("revision"));
3947 }
3948 field_revision = Some(map.next_value()?);
3949 }
3950 "import_format" => {
3951 if field_import_format.is_some() {
3952 return Err(::serde::de::Error::duplicate_field("import_format"));
3953 }
3954 field_import_format = Some(map.next_value()?);
3955 }
3956 _ => {
3957 map.next_value::<::serde_json::Value>()?;
3959 }
3960 }
3961 }
3962 if optional && nothing {
3963 return Ok(None);
3964 }
3965 let result = PaperDocUpdateArgs {
3966 doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?,
3967 doc_update_policy: field_doc_update_policy.ok_or_else(|| ::serde::de::Error::missing_field("doc_update_policy"))?,
3968 revision: field_revision.ok_or_else(|| ::serde::de::Error::missing_field("revision"))?,
3969 import_format: field_import_format.ok_or_else(|| ::serde::de::Error::missing_field("import_format"))?,
3970 };
3971 Ok(Some(result))
3972 }
3973
3974 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3975 &self,
3976 s: &mut S::SerializeStruct,
3977 ) -> Result<(), S::Error> {
3978 use serde::ser::SerializeStruct;
3979 s.serialize_field("doc_id", &self.doc_id)?;
3980 s.serialize_field("doc_update_policy", &self.doc_update_policy)?;
3981 s.serialize_field("revision", &self.revision)?;
3982 s.serialize_field("import_format", &self.import_format)?;
3983 Ok(())
3984 }
3985}
3986
3987impl<'de> ::serde::de::Deserialize<'de> for PaperDocUpdateArgs {
3988 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3989 use serde::de::{MapAccess, Visitor};
3991 struct StructVisitor;
3992 impl<'de> Visitor<'de> for StructVisitor {
3993 type Value = PaperDocUpdateArgs;
3994 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3995 f.write_str("a PaperDocUpdateArgs struct")
3996 }
3997 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3998 PaperDocUpdateArgs::internal_deserialize(map)
3999 }
4000 }
4001 deserializer.deserialize_struct("PaperDocUpdateArgs", PAPER_DOC_UPDATE_ARGS_FIELDS, StructVisitor)
4002 }
4003}
4004
4005impl ::serde::ser::Serialize for PaperDocUpdateArgs {
4006 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4007 use serde::ser::SerializeStruct;
4009 let mut s = serializer.serialize_struct("PaperDocUpdateArgs", 4)?;
4010 self.internal_serialize::<S>(&mut s)?;
4011 s.end()
4012 }
4013}
4014
4015impl From<PaperDocUpdateArgs> for RefPaperDoc {
4017 fn from(subtype: PaperDocUpdateArgs) -> Self {
4018 Self {
4019 doc_id: subtype.doc_id,
4020 }
4021 }
4022}
4023#[derive(Debug, Clone, PartialEq, Eq)]
4024#[non_exhaustive] pub enum PaperDocUpdateError {
4026 InsufficientPermissions,
4031 DocNotFound,
4033 ContentMalformed,
4035 RevisionMismatch,
4037 DocLengthExceeded,
4039 ImageSizeExceeded,
4042 DocArchived,
4044 DocDeleted,
4046 Other,
4049}
4050
4051impl<'de> ::serde::de::Deserialize<'de> for PaperDocUpdateError {
4052 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4053 use serde::de::{self, MapAccess, Visitor};
4055 struct EnumVisitor;
4056 impl<'de> Visitor<'de> for EnumVisitor {
4057 type Value = PaperDocUpdateError;
4058 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4059 f.write_str("a PaperDocUpdateError structure")
4060 }
4061 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4062 let tag: &str = match map.next_key()? {
4063 Some(".tag") => map.next_value()?,
4064 _ => return Err(de::Error::missing_field(".tag"))
4065 };
4066 let value = match tag {
4067 "insufficient_permissions" => PaperDocUpdateError::InsufficientPermissions,
4068 "doc_not_found" => PaperDocUpdateError::DocNotFound,
4069 "content_malformed" => PaperDocUpdateError::ContentMalformed,
4070 "revision_mismatch" => PaperDocUpdateError::RevisionMismatch,
4071 "doc_length_exceeded" => PaperDocUpdateError::DocLengthExceeded,
4072 "image_size_exceeded" => PaperDocUpdateError::ImageSizeExceeded,
4073 "doc_archived" => PaperDocUpdateError::DocArchived,
4074 "doc_deleted" => PaperDocUpdateError::DocDeleted,
4075 _ => PaperDocUpdateError::Other,
4076 };
4077 crate::eat_json_fields(&mut map)?;
4078 Ok(value)
4079 }
4080 }
4081 const VARIANTS: &[&str] = &["insufficient_permissions",
4082 "other",
4083 "doc_not_found",
4084 "content_malformed",
4085 "revision_mismatch",
4086 "doc_length_exceeded",
4087 "image_size_exceeded",
4088 "doc_archived",
4089 "doc_deleted"];
4090 deserializer.deserialize_struct("PaperDocUpdateError", VARIANTS, EnumVisitor)
4091 }
4092}
4093
4094impl ::serde::ser::Serialize for PaperDocUpdateError {
4095 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4096 use serde::ser::SerializeStruct;
4098 match self {
4099 PaperDocUpdateError::InsufficientPermissions => {
4100 let mut s = serializer.serialize_struct("PaperDocUpdateError", 1)?;
4102 s.serialize_field(".tag", "insufficient_permissions")?;
4103 s.end()
4104 }
4105 PaperDocUpdateError::DocNotFound => {
4106 let mut s = serializer.serialize_struct("PaperDocUpdateError", 1)?;
4108 s.serialize_field(".tag", "doc_not_found")?;
4109 s.end()
4110 }
4111 PaperDocUpdateError::ContentMalformed => {
4112 let mut s = serializer.serialize_struct("PaperDocUpdateError", 1)?;
4114 s.serialize_field(".tag", "content_malformed")?;
4115 s.end()
4116 }
4117 PaperDocUpdateError::RevisionMismatch => {
4118 let mut s = serializer.serialize_struct("PaperDocUpdateError", 1)?;
4120 s.serialize_field(".tag", "revision_mismatch")?;
4121 s.end()
4122 }
4123 PaperDocUpdateError::DocLengthExceeded => {
4124 let mut s = serializer.serialize_struct("PaperDocUpdateError", 1)?;
4126 s.serialize_field(".tag", "doc_length_exceeded")?;
4127 s.end()
4128 }
4129 PaperDocUpdateError::ImageSizeExceeded => {
4130 let mut s = serializer.serialize_struct("PaperDocUpdateError", 1)?;
4132 s.serialize_field(".tag", "image_size_exceeded")?;
4133 s.end()
4134 }
4135 PaperDocUpdateError::DocArchived => {
4136 let mut s = serializer.serialize_struct("PaperDocUpdateError", 1)?;
4138 s.serialize_field(".tag", "doc_archived")?;
4139 s.end()
4140 }
4141 PaperDocUpdateError::DocDeleted => {
4142 let mut s = serializer.serialize_struct("PaperDocUpdateError", 1)?;
4144 s.serialize_field(".tag", "doc_deleted")?;
4145 s.end()
4146 }
4147 PaperDocUpdateError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
4148 }
4149 }
4150}
4151
4152impl ::std::error::Error for PaperDocUpdateError {
4153}
4154
4155impl ::std::fmt::Display for PaperDocUpdateError {
4156 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4157 match self {
4158 PaperDocUpdateError::DocNotFound => f.write_str("The required doc was not found."),
4159 PaperDocUpdateError::ContentMalformed => f.write_str("The provided content was malformed and cannot be imported to Paper."),
4160 PaperDocUpdateError::RevisionMismatch => f.write_str("The provided revision does not match the document head."),
4161 PaperDocUpdateError::DocLengthExceeded => f.write_str("The newly created Paper doc would be too large, split the content into multiple docs."),
4162 PaperDocUpdateError::ImageSizeExceeded => f.write_str("The imported document contains an image that is too large. The current limit is 1MB. This only applies to HTML with data URI."),
4163 PaperDocUpdateError::DocArchived => f.write_str("This operation is not allowed on archived Paper docs."),
4164 PaperDocUpdateError::DocDeleted => f.write_str("This operation is not allowed on deleted Paper docs."),
4165 _ => write!(f, "{:?}", *self),
4166 }
4167 }
4168}
4169
4170impl From<DocLookupError> for PaperDocUpdateError {
4172 fn from(parent: DocLookupError) -> Self {
4173 match parent {
4174 DocLookupError::InsufficientPermissions => PaperDocUpdateError::InsufficientPermissions,
4175 DocLookupError::Other => PaperDocUpdateError::Other,
4176 DocLookupError::DocNotFound => PaperDocUpdateError::DocNotFound,
4177 }
4178 }
4179}
4180#[derive(Debug, Clone, PartialEq, Eq)]
4181#[non_exhaustive] pub enum PaperDocUpdatePolicy {
4183 Append,
4185 Prepend,
4187 OverwriteAll,
4189 Other,
4192}
4193
4194impl<'de> ::serde::de::Deserialize<'de> for PaperDocUpdatePolicy {
4195 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4196 use serde::de::{self, MapAccess, Visitor};
4198 struct EnumVisitor;
4199 impl<'de> Visitor<'de> for EnumVisitor {
4200 type Value = PaperDocUpdatePolicy;
4201 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4202 f.write_str("a PaperDocUpdatePolicy structure")
4203 }
4204 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4205 let tag: &str = match map.next_key()? {
4206 Some(".tag") => map.next_value()?,
4207 _ => return Err(de::Error::missing_field(".tag"))
4208 };
4209 let value = match tag {
4210 "append" => PaperDocUpdatePolicy::Append,
4211 "prepend" => PaperDocUpdatePolicy::Prepend,
4212 "overwrite_all" => PaperDocUpdatePolicy::OverwriteAll,
4213 _ => PaperDocUpdatePolicy::Other,
4214 };
4215 crate::eat_json_fields(&mut map)?;
4216 Ok(value)
4217 }
4218 }
4219 const VARIANTS: &[&str] = &["append",
4220 "prepend",
4221 "overwrite_all",
4222 "other"];
4223 deserializer.deserialize_struct("PaperDocUpdatePolicy", VARIANTS, EnumVisitor)
4224 }
4225}
4226
4227impl ::serde::ser::Serialize for PaperDocUpdatePolicy {
4228 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4229 use serde::ser::SerializeStruct;
4231 match self {
4232 PaperDocUpdatePolicy::Append => {
4233 let mut s = serializer.serialize_struct("PaperDocUpdatePolicy", 1)?;
4235 s.serialize_field(".tag", "append")?;
4236 s.end()
4237 }
4238 PaperDocUpdatePolicy::Prepend => {
4239 let mut s = serializer.serialize_struct("PaperDocUpdatePolicy", 1)?;
4241 s.serialize_field(".tag", "prepend")?;
4242 s.end()
4243 }
4244 PaperDocUpdatePolicy::OverwriteAll => {
4245 let mut s = serializer.serialize_struct("PaperDocUpdatePolicy", 1)?;
4247 s.serialize_field(".tag", "overwrite_all")?;
4248 s.end()
4249 }
4250 PaperDocUpdatePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
4251 }
4252 }
4253}
4254
4255#[derive(Debug, Clone, PartialEq, Eq)]
4256#[non_exhaustive] pub struct PaperFolderCreateArg {
4258 pub name: String,
4260 pub parent_folder_id: Option<String>,
4264 pub is_team_folder: Option<bool>,
4269}
4270
4271impl PaperFolderCreateArg {
4272 pub fn new(name: String) -> Self {
4273 PaperFolderCreateArg {
4274 name,
4275 parent_folder_id: None,
4276 is_team_folder: None,
4277 }
4278 }
4279
4280 pub fn with_parent_folder_id(mut self, value: String) -> Self {
4281 self.parent_folder_id = Some(value);
4282 self
4283 }
4284
4285 pub fn with_is_team_folder(mut self, value: bool) -> Self {
4286 self.is_team_folder = Some(value);
4287 self
4288 }
4289}
4290
4291const PAPER_FOLDER_CREATE_ARG_FIELDS: &[&str] = &["name",
4292 "parent_folder_id",
4293 "is_team_folder"];
4294impl PaperFolderCreateArg {
4295 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4296 map: V,
4297 ) -> Result<PaperFolderCreateArg, V::Error> {
4298 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4299 }
4300
4301 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4302 mut map: V,
4303 optional: bool,
4304 ) -> Result<Option<PaperFolderCreateArg>, V::Error> {
4305 let mut field_name = None;
4306 let mut field_parent_folder_id = None;
4307 let mut field_is_team_folder = None;
4308 let mut nothing = true;
4309 while let Some(key) = map.next_key::<&str>()? {
4310 nothing = false;
4311 match key {
4312 "name" => {
4313 if field_name.is_some() {
4314 return Err(::serde::de::Error::duplicate_field("name"));
4315 }
4316 field_name = Some(map.next_value()?);
4317 }
4318 "parent_folder_id" => {
4319 if field_parent_folder_id.is_some() {
4320 return Err(::serde::de::Error::duplicate_field("parent_folder_id"));
4321 }
4322 field_parent_folder_id = Some(map.next_value()?);
4323 }
4324 "is_team_folder" => {
4325 if field_is_team_folder.is_some() {
4326 return Err(::serde::de::Error::duplicate_field("is_team_folder"));
4327 }
4328 field_is_team_folder = Some(map.next_value()?);
4329 }
4330 _ => {
4331 map.next_value::<::serde_json::Value>()?;
4333 }
4334 }
4335 }
4336 if optional && nothing {
4337 return Ok(None);
4338 }
4339 let result = PaperFolderCreateArg {
4340 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
4341 parent_folder_id: field_parent_folder_id.and_then(Option::flatten),
4342 is_team_folder: field_is_team_folder.and_then(Option::flatten),
4343 };
4344 Ok(Some(result))
4345 }
4346
4347 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4348 &self,
4349 s: &mut S::SerializeStruct,
4350 ) -> Result<(), S::Error> {
4351 use serde::ser::SerializeStruct;
4352 s.serialize_field("name", &self.name)?;
4353 if let Some(val) = &self.parent_folder_id {
4354 s.serialize_field("parent_folder_id", val)?;
4355 }
4356 if let Some(val) = &self.is_team_folder {
4357 s.serialize_field("is_team_folder", val)?;
4358 }
4359 Ok(())
4360 }
4361}
4362
4363impl<'de> ::serde::de::Deserialize<'de> for PaperFolderCreateArg {
4364 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4365 use serde::de::{MapAccess, Visitor};
4367 struct StructVisitor;
4368 impl<'de> Visitor<'de> for StructVisitor {
4369 type Value = PaperFolderCreateArg;
4370 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4371 f.write_str("a PaperFolderCreateArg struct")
4372 }
4373 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4374 PaperFolderCreateArg::internal_deserialize(map)
4375 }
4376 }
4377 deserializer.deserialize_struct("PaperFolderCreateArg", PAPER_FOLDER_CREATE_ARG_FIELDS, StructVisitor)
4378 }
4379}
4380
4381impl ::serde::ser::Serialize for PaperFolderCreateArg {
4382 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4383 use serde::ser::SerializeStruct;
4385 let mut s = serializer.serialize_struct("PaperFolderCreateArg", 3)?;
4386 self.internal_serialize::<S>(&mut s)?;
4387 s.end()
4388 }
4389}
4390
4391#[derive(Debug, Clone, PartialEq, Eq)]
4392#[non_exhaustive] pub enum PaperFolderCreateError {
4394 InsufficientPermissions,
4399 FolderNotFound,
4401 InvalidFolderId,
4403 Other,
4406}
4407
4408impl<'de> ::serde::de::Deserialize<'de> for PaperFolderCreateError {
4409 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4410 use serde::de::{self, MapAccess, Visitor};
4412 struct EnumVisitor;
4413 impl<'de> Visitor<'de> for EnumVisitor {
4414 type Value = PaperFolderCreateError;
4415 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4416 f.write_str("a PaperFolderCreateError structure")
4417 }
4418 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4419 let tag: &str = match map.next_key()? {
4420 Some(".tag") => map.next_value()?,
4421 _ => return Err(de::Error::missing_field(".tag"))
4422 };
4423 let value = match tag {
4424 "insufficient_permissions" => PaperFolderCreateError::InsufficientPermissions,
4425 "folder_not_found" => PaperFolderCreateError::FolderNotFound,
4426 "invalid_folder_id" => PaperFolderCreateError::InvalidFolderId,
4427 _ => PaperFolderCreateError::Other,
4428 };
4429 crate::eat_json_fields(&mut map)?;
4430 Ok(value)
4431 }
4432 }
4433 const VARIANTS: &[&str] = &["insufficient_permissions",
4434 "other",
4435 "folder_not_found",
4436 "invalid_folder_id"];
4437 deserializer.deserialize_struct("PaperFolderCreateError", VARIANTS, EnumVisitor)
4438 }
4439}
4440
4441impl ::serde::ser::Serialize for PaperFolderCreateError {
4442 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4443 use serde::ser::SerializeStruct;
4445 match self {
4446 PaperFolderCreateError::InsufficientPermissions => {
4447 let mut s = serializer.serialize_struct("PaperFolderCreateError", 1)?;
4449 s.serialize_field(".tag", "insufficient_permissions")?;
4450 s.end()
4451 }
4452 PaperFolderCreateError::FolderNotFound => {
4453 let mut s = serializer.serialize_struct("PaperFolderCreateError", 1)?;
4455 s.serialize_field(".tag", "folder_not_found")?;
4456 s.end()
4457 }
4458 PaperFolderCreateError::InvalidFolderId => {
4459 let mut s = serializer.serialize_struct("PaperFolderCreateError", 1)?;
4461 s.serialize_field(".tag", "invalid_folder_id")?;
4462 s.end()
4463 }
4464 PaperFolderCreateError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
4465 }
4466 }
4467}
4468
4469impl ::std::error::Error for PaperFolderCreateError {
4470}
4471
4472impl ::std::fmt::Display for PaperFolderCreateError {
4473 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4474 match self {
4475 PaperFolderCreateError::FolderNotFound => f.write_str("The specified parent Paper folder cannot be found."),
4476 PaperFolderCreateError::InvalidFolderId => f.write_str("The folder id cannot be decrypted to valid folder id."),
4477 _ => write!(f, "{:?}", *self),
4478 }
4479 }
4480}
4481
4482impl From<PaperApiBaseError> for PaperFolderCreateError {
4484 fn from(parent: PaperApiBaseError) -> Self {
4485 match parent {
4486 PaperApiBaseError::InsufficientPermissions => PaperFolderCreateError::InsufficientPermissions,
4487 PaperApiBaseError::Other => PaperFolderCreateError::Other,
4488 }
4489 }
4490}
4491#[derive(Debug, Clone, PartialEq, Eq)]
4492#[non_exhaustive] pub struct PaperFolderCreateResult {
4494 pub folder_id: String,
4496}
4497
4498impl PaperFolderCreateResult {
4499 pub fn new(folder_id: String) -> Self {
4500 PaperFolderCreateResult {
4501 folder_id,
4502 }
4503 }
4504}
4505
4506const PAPER_FOLDER_CREATE_RESULT_FIELDS: &[&str] = &["folder_id"];
4507impl PaperFolderCreateResult {
4508 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4509 map: V,
4510 ) -> Result<PaperFolderCreateResult, V::Error> {
4511 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4512 }
4513
4514 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4515 mut map: V,
4516 optional: bool,
4517 ) -> Result<Option<PaperFolderCreateResult>, V::Error> {
4518 let mut field_folder_id = None;
4519 let mut nothing = true;
4520 while let Some(key) = map.next_key::<&str>()? {
4521 nothing = false;
4522 match key {
4523 "folder_id" => {
4524 if field_folder_id.is_some() {
4525 return Err(::serde::de::Error::duplicate_field("folder_id"));
4526 }
4527 field_folder_id = Some(map.next_value()?);
4528 }
4529 _ => {
4530 map.next_value::<::serde_json::Value>()?;
4532 }
4533 }
4534 }
4535 if optional && nothing {
4536 return Ok(None);
4537 }
4538 let result = PaperFolderCreateResult {
4539 folder_id: field_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("folder_id"))?,
4540 };
4541 Ok(Some(result))
4542 }
4543
4544 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4545 &self,
4546 s: &mut S::SerializeStruct,
4547 ) -> Result<(), S::Error> {
4548 use serde::ser::SerializeStruct;
4549 s.serialize_field("folder_id", &self.folder_id)?;
4550 Ok(())
4551 }
4552}
4553
4554impl<'de> ::serde::de::Deserialize<'de> for PaperFolderCreateResult {
4555 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4556 use serde::de::{MapAccess, Visitor};
4558 struct StructVisitor;
4559 impl<'de> Visitor<'de> for StructVisitor {
4560 type Value = PaperFolderCreateResult;
4561 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4562 f.write_str("a PaperFolderCreateResult struct")
4563 }
4564 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4565 PaperFolderCreateResult::internal_deserialize(map)
4566 }
4567 }
4568 deserializer.deserialize_struct("PaperFolderCreateResult", PAPER_FOLDER_CREATE_RESULT_FIELDS, StructVisitor)
4569 }
4570}
4571
4572impl ::serde::ser::Serialize for PaperFolderCreateResult {
4573 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4574 use serde::ser::SerializeStruct;
4576 let mut s = serializer.serialize_struct("PaperFolderCreateResult", 1)?;
4577 self.internal_serialize::<S>(&mut s)?;
4578 s.end()
4579 }
4580}
4581
4582#[derive(Debug, Clone, PartialEq, Eq)]
4583#[non_exhaustive] pub struct RefPaperDoc {
4585 pub doc_id: PaperDocId,
4587}
4588
4589impl RefPaperDoc {
4590 pub fn new(doc_id: PaperDocId) -> Self {
4591 RefPaperDoc {
4592 doc_id,
4593 }
4594 }
4595}
4596
4597const REF_PAPER_DOC_FIELDS: &[&str] = &["doc_id"];
4598impl RefPaperDoc {
4599 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4600 map: V,
4601 ) -> Result<RefPaperDoc, V::Error> {
4602 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4603 }
4604
4605 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4606 mut map: V,
4607 optional: bool,
4608 ) -> Result<Option<RefPaperDoc>, V::Error> {
4609 let mut field_doc_id = None;
4610 let mut nothing = true;
4611 while let Some(key) = map.next_key::<&str>()? {
4612 nothing = false;
4613 match key {
4614 "doc_id" => {
4615 if field_doc_id.is_some() {
4616 return Err(::serde::de::Error::duplicate_field("doc_id"));
4617 }
4618 field_doc_id = Some(map.next_value()?);
4619 }
4620 _ => {
4621 map.next_value::<::serde_json::Value>()?;
4623 }
4624 }
4625 }
4626 if optional && nothing {
4627 return Ok(None);
4628 }
4629 let result = RefPaperDoc {
4630 doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?,
4631 };
4632 Ok(Some(result))
4633 }
4634
4635 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4636 &self,
4637 s: &mut S::SerializeStruct,
4638 ) -> Result<(), S::Error> {
4639 use serde::ser::SerializeStruct;
4640 s.serialize_field("doc_id", &self.doc_id)?;
4641 Ok(())
4642 }
4643}
4644
4645impl<'de> ::serde::de::Deserialize<'de> for RefPaperDoc {
4646 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4647 use serde::de::{MapAccess, Visitor};
4649 struct StructVisitor;
4650 impl<'de> Visitor<'de> for StructVisitor {
4651 type Value = RefPaperDoc;
4652 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4653 f.write_str("a RefPaperDoc struct")
4654 }
4655 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4656 RefPaperDoc::internal_deserialize(map)
4657 }
4658 }
4659 deserializer.deserialize_struct("RefPaperDoc", REF_PAPER_DOC_FIELDS, StructVisitor)
4660 }
4661}
4662
4663impl ::serde::ser::Serialize for RefPaperDoc {
4664 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4665 use serde::ser::SerializeStruct;
4667 let mut s = serializer.serialize_struct("RefPaperDoc", 1)?;
4668 self.internal_serialize::<S>(&mut s)?;
4669 s.end()
4670 }
4671}
4672
4673#[derive(Debug, Clone, PartialEq, Eq)]
4674#[non_exhaustive] pub struct RemovePaperDocUser {
4676 pub doc_id: PaperDocId,
4678 pub member: crate::types::sharing::MemberSelector,
4681}
4682
4683impl RemovePaperDocUser {
4684 pub fn new(doc_id: PaperDocId, member: crate::types::sharing::MemberSelector) -> Self {
4685 RemovePaperDocUser {
4686 doc_id,
4687 member,
4688 }
4689 }
4690}
4691
4692const REMOVE_PAPER_DOC_USER_FIELDS: &[&str] = &["doc_id",
4693 "member"];
4694impl RemovePaperDocUser {
4695 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4696 map: V,
4697 ) -> Result<RemovePaperDocUser, V::Error> {
4698 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4699 }
4700
4701 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4702 mut map: V,
4703 optional: bool,
4704 ) -> Result<Option<RemovePaperDocUser>, V::Error> {
4705 let mut field_doc_id = None;
4706 let mut field_member = None;
4707 let mut nothing = true;
4708 while let Some(key) = map.next_key::<&str>()? {
4709 nothing = false;
4710 match key {
4711 "doc_id" => {
4712 if field_doc_id.is_some() {
4713 return Err(::serde::de::Error::duplicate_field("doc_id"));
4714 }
4715 field_doc_id = Some(map.next_value()?);
4716 }
4717 "member" => {
4718 if field_member.is_some() {
4719 return Err(::serde::de::Error::duplicate_field("member"));
4720 }
4721 field_member = Some(map.next_value()?);
4722 }
4723 _ => {
4724 map.next_value::<::serde_json::Value>()?;
4726 }
4727 }
4728 }
4729 if optional && nothing {
4730 return Ok(None);
4731 }
4732 let result = RemovePaperDocUser {
4733 doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?,
4734 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
4735 };
4736 Ok(Some(result))
4737 }
4738
4739 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4740 &self,
4741 s: &mut S::SerializeStruct,
4742 ) -> Result<(), S::Error> {
4743 use serde::ser::SerializeStruct;
4744 s.serialize_field("doc_id", &self.doc_id)?;
4745 s.serialize_field("member", &self.member)?;
4746 Ok(())
4747 }
4748}
4749
4750impl<'de> ::serde::de::Deserialize<'de> for RemovePaperDocUser {
4751 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4752 use serde::de::{MapAccess, Visitor};
4754 struct StructVisitor;
4755 impl<'de> Visitor<'de> for StructVisitor {
4756 type Value = RemovePaperDocUser;
4757 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4758 f.write_str("a RemovePaperDocUser struct")
4759 }
4760 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4761 RemovePaperDocUser::internal_deserialize(map)
4762 }
4763 }
4764 deserializer.deserialize_struct("RemovePaperDocUser", REMOVE_PAPER_DOC_USER_FIELDS, StructVisitor)
4765 }
4766}
4767
4768impl ::serde::ser::Serialize for RemovePaperDocUser {
4769 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4770 use serde::ser::SerializeStruct;
4772 let mut s = serializer.serialize_struct("RemovePaperDocUser", 2)?;
4773 self.internal_serialize::<S>(&mut s)?;
4774 s.end()
4775 }
4776}
4777
4778impl From<RemovePaperDocUser> for RefPaperDoc {
4780 fn from(subtype: RemovePaperDocUser) -> Self {
4781 Self {
4782 doc_id: subtype.doc_id,
4783 }
4784 }
4785}
4786#[derive(Debug, Clone, PartialEq, Eq, Default)]
4788#[non_exhaustive] pub struct SharingPolicy {
4790 pub public_sharing_policy: Option<SharingPublicPolicyType>,
4792 pub team_sharing_policy: Option<SharingTeamPolicyType>,
4794}
4795
4796impl SharingPolicy {
4797 pub fn with_public_sharing_policy(mut self, value: SharingPublicPolicyType) -> Self {
4798 self.public_sharing_policy = Some(value);
4799 self
4800 }
4801
4802 pub fn with_team_sharing_policy(mut self, value: SharingTeamPolicyType) -> Self {
4803 self.team_sharing_policy = Some(value);
4804 self
4805 }
4806}
4807
4808const SHARING_POLICY_FIELDS: &[&str] = &["public_sharing_policy",
4809 "team_sharing_policy"];
4810impl SharingPolicy {
4811 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4813 mut map: V,
4814 ) -> Result<SharingPolicy, V::Error> {
4815 let mut field_public_sharing_policy = None;
4816 let mut field_team_sharing_policy = None;
4817 while let Some(key) = map.next_key::<&str>()? {
4818 match key {
4819 "public_sharing_policy" => {
4820 if field_public_sharing_policy.is_some() {
4821 return Err(::serde::de::Error::duplicate_field("public_sharing_policy"));
4822 }
4823 field_public_sharing_policy = Some(map.next_value()?);
4824 }
4825 "team_sharing_policy" => {
4826 if field_team_sharing_policy.is_some() {
4827 return Err(::serde::de::Error::duplicate_field("team_sharing_policy"));
4828 }
4829 field_team_sharing_policy = Some(map.next_value()?);
4830 }
4831 _ => {
4832 map.next_value::<::serde_json::Value>()?;
4834 }
4835 }
4836 }
4837 let result = SharingPolicy {
4838 public_sharing_policy: field_public_sharing_policy.and_then(Option::flatten),
4839 team_sharing_policy: field_team_sharing_policy.and_then(Option::flatten),
4840 };
4841 Ok(result)
4842 }
4843
4844 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4845 &self,
4846 s: &mut S::SerializeStruct,
4847 ) -> Result<(), S::Error> {
4848 use serde::ser::SerializeStruct;
4849 if let Some(val) = &self.public_sharing_policy {
4850 s.serialize_field("public_sharing_policy", val)?;
4851 }
4852 if let Some(val) = &self.team_sharing_policy {
4853 s.serialize_field("team_sharing_policy", val)?;
4854 }
4855 Ok(())
4856 }
4857}
4858
4859impl<'de> ::serde::de::Deserialize<'de> for SharingPolicy {
4860 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4861 use serde::de::{MapAccess, Visitor};
4863 struct StructVisitor;
4864 impl<'de> Visitor<'de> for StructVisitor {
4865 type Value = SharingPolicy;
4866 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4867 f.write_str("a SharingPolicy struct")
4868 }
4869 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4870 SharingPolicy::internal_deserialize(map)
4871 }
4872 }
4873 deserializer.deserialize_struct("SharingPolicy", SHARING_POLICY_FIELDS, StructVisitor)
4874 }
4875}
4876
4877impl ::serde::ser::Serialize for SharingPolicy {
4878 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4879 use serde::ser::SerializeStruct;
4881 let mut s = serializer.serialize_struct("SharingPolicy", 2)?;
4882 self.internal_serialize::<S>(&mut s)?;
4883 s.end()
4884 }
4885}
4886
4887#[derive(Debug, Clone, PartialEq, Eq)]
4888pub enum SharingPublicPolicyType {
4889 PeopleWithLinkCanEdit,
4891 PeopleWithLinkCanViewAndComment,
4893 InviteOnly,
4895 Disabled,
4897}
4898
4899impl<'de> ::serde::de::Deserialize<'de> for SharingPublicPolicyType {
4900 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4901 use serde::de::{self, MapAccess, Visitor};
4903 struct EnumVisitor;
4904 impl<'de> Visitor<'de> for EnumVisitor {
4905 type Value = SharingPublicPolicyType;
4906 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4907 f.write_str("a SharingPublicPolicyType structure")
4908 }
4909 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4910 let tag: &str = match map.next_key()? {
4911 Some(".tag") => map.next_value()?,
4912 _ => return Err(de::Error::missing_field(".tag"))
4913 };
4914 let value = match tag {
4915 "people_with_link_can_edit" => SharingPublicPolicyType::PeopleWithLinkCanEdit,
4916 "people_with_link_can_view_and_comment" => SharingPublicPolicyType::PeopleWithLinkCanViewAndComment,
4917 "invite_only" => SharingPublicPolicyType::InviteOnly,
4918 "disabled" => SharingPublicPolicyType::Disabled,
4919 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
4920 };
4921 crate::eat_json_fields(&mut map)?;
4922 Ok(value)
4923 }
4924 }
4925 const VARIANTS: &[&str] = &["people_with_link_can_edit",
4926 "people_with_link_can_view_and_comment",
4927 "invite_only",
4928 "disabled"];
4929 deserializer.deserialize_struct("SharingPublicPolicyType", VARIANTS, EnumVisitor)
4930 }
4931}
4932
4933impl ::serde::ser::Serialize for SharingPublicPolicyType {
4934 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4935 use serde::ser::SerializeStruct;
4937 match self {
4938 SharingPublicPolicyType::PeopleWithLinkCanEdit => {
4939 let mut s = serializer.serialize_struct("SharingPublicPolicyType", 1)?;
4941 s.serialize_field(".tag", "people_with_link_can_edit")?;
4942 s.end()
4943 }
4944 SharingPublicPolicyType::PeopleWithLinkCanViewAndComment => {
4945 let mut s = serializer.serialize_struct("SharingPublicPolicyType", 1)?;
4947 s.serialize_field(".tag", "people_with_link_can_view_and_comment")?;
4948 s.end()
4949 }
4950 SharingPublicPolicyType::InviteOnly => {
4951 let mut s = serializer.serialize_struct("SharingPublicPolicyType", 1)?;
4953 s.serialize_field(".tag", "invite_only")?;
4954 s.end()
4955 }
4956 SharingPublicPolicyType::Disabled => {
4957 let mut s = serializer.serialize_struct("SharingPublicPolicyType", 1)?;
4959 s.serialize_field(".tag", "disabled")?;
4960 s.end()
4961 }
4962 }
4963 }
4964}
4965
4966impl From<SharingTeamPolicyType> for SharingPublicPolicyType {
4968 fn from(parent: SharingTeamPolicyType) -> Self {
4969 match parent {
4970 SharingTeamPolicyType::PeopleWithLinkCanEdit => SharingPublicPolicyType::PeopleWithLinkCanEdit,
4971 SharingTeamPolicyType::PeopleWithLinkCanViewAndComment => SharingPublicPolicyType::PeopleWithLinkCanViewAndComment,
4972 SharingTeamPolicyType::InviteOnly => SharingPublicPolicyType::InviteOnly,
4973 }
4974 }
4975}
4976#[derive(Debug, Clone, PartialEq, Eq)]
4978pub enum SharingTeamPolicyType {
4979 PeopleWithLinkCanEdit,
4981 PeopleWithLinkCanViewAndComment,
4983 InviteOnly,
4985}
4986
4987impl<'de> ::serde::de::Deserialize<'de> for SharingTeamPolicyType {
4988 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4989 use serde::de::{self, MapAccess, Visitor};
4991 struct EnumVisitor;
4992 impl<'de> Visitor<'de> for EnumVisitor {
4993 type Value = SharingTeamPolicyType;
4994 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4995 f.write_str("a SharingTeamPolicyType structure")
4996 }
4997 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4998 let tag: &str = match map.next_key()? {
4999 Some(".tag") => map.next_value()?,
5000 _ => return Err(de::Error::missing_field(".tag"))
5001 };
5002 let value = match tag {
5003 "people_with_link_can_edit" => SharingTeamPolicyType::PeopleWithLinkCanEdit,
5004 "people_with_link_can_view_and_comment" => SharingTeamPolicyType::PeopleWithLinkCanViewAndComment,
5005 "invite_only" => SharingTeamPolicyType::InviteOnly,
5006 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
5007 };
5008 crate::eat_json_fields(&mut map)?;
5009 Ok(value)
5010 }
5011 }
5012 const VARIANTS: &[&str] = &["people_with_link_can_edit",
5013 "people_with_link_can_view_and_comment",
5014 "invite_only"];
5015 deserializer.deserialize_struct("SharingTeamPolicyType", VARIANTS, EnumVisitor)
5016 }
5017}
5018
5019impl ::serde::ser::Serialize for SharingTeamPolicyType {
5020 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5021 use serde::ser::SerializeStruct;
5023 match self {
5024 SharingTeamPolicyType::PeopleWithLinkCanEdit => {
5025 let mut s = serializer.serialize_struct("SharingTeamPolicyType", 1)?;
5027 s.serialize_field(".tag", "people_with_link_can_edit")?;
5028 s.end()
5029 }
5030 SharingTeamPolicyType::PeopleWithLinkCanViewAndComment => {
5031 let mut s = serializer.serialize_struct("SharingTeamPolicyType", 1)?;
5033 s.serialize_field(".tag", "people_with_link_can_view_and_comment")?;
5034 s.end()
5035 }
5036 SharingTeamPolicyType::InviteOnly => {
5037 let mut s = serializer.serialize_struct("SharingTeamPolicyType", 1)?;
5039 s.serialize_field(".tag", "invite_only")?;
5040 s.end()
5041 }
5042 }
5043 }
5044}
5045
5046#[derive(Debug, Clone, PartialEq, Eq)]
5047#[non_exhaustive] pub struct UserInfoWithPermissionLevel {
5049 pub user: crate::types::sharing::UserInfo,
5051 pub permission_level: PaperDocPermissionLevel,
5053}
5054
5055impl UserInfoWithPermissionLevel {
5056 pub fn new(
5057 user: crate::types::sharing::UserInfo,
5058 permission_level: PaperDocPermissionLevel,
5059 ) -> Self {
5060 UserInfoWithPermissionLevel {
5061 user,
5062 permission_level,
5063 }
5064 }
5065}
5066
5067const USER_INFO_WITH_PERMISSION_LEVEL_FIELDS: &[&str] = &["user",
5068 "permission_level"];
5069impl UserInfoWithPermissionLevel {
5070 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5071 map: V,
5072 ) -> Result<UserInfoWithPermissionLevel, V::Error> {
5073 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5074 }
5075
5076 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5077 mut map: V,
5078 optional: bool,
5079 ) -> Result<Option<UserInfoWithPermissionLevel>, V::Error> {
5080 let mut field_user = None;
5081 let mut field_permission_level = None;
5082 let mut nothing = true;
5083 while let Some(key) = map.next_key::<&str>()? {
5084 nothing = false;
5085 match key {
5086 "user" => {
5087 if field_user.is_some() {
5088 return Err(::serde::de::Error::duplicate_field("user"));
5089 }
5090 field_user = Some(map.next_value()?);
5091 }
5092 "permission_level" => {
5093 if field_permission_level.is_some() {
5094 return Err(::serde::de::Error::duplicate_field("permission_level"));
5095 }
5096 field_permission_level = Some(map.next_value()?);
5097 }
5098 _ => {
5099 map.next_value::<::serde_json::Value>()?;
5101 }
5102 }
5103 }
5104 if optional && nothing {
5105 return Ok(None);
5106 }
5107 let result = UserInfoWithPermissionLevel {
5108 user: field_user.ok_or_else(|| ::serde::de::Error::missing_field("user"))?,
5109 permission_level: field_permission_level.ok_or_else(|| ::serde::de::Error::missing_field("permission_level"))?,
5110 };
5111 Ok(Some(result))
5112 }
5113
5114 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5115 &self,
5116 s: &mut S::SerializeStruct,
5117 ) -> Result<(), S::Error> {
5118 use serde::ser::SerializeStruct;
5119 s.serialize_field("user", &self.user)?;
5120 s.serialize_field("permission_level", &self.permission_level)?;
5121 Ok(())
5122 }
5123}
5124
5125impl<'de> ::serde::de::Deserialize<'de> for UserInfoWithPermissionLevel {
5126 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5127 use serde::de::{MapAccess, Visitor};
5129 struct StructVisitor;
5130 impl<'de> Visitor<'de> for StructVisitor {
5131 type Value = UserInfoWithPermissionLevel;
5132 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5133 f.write_str("a UserInfoWithPermissionLevel struct")
5134 }
5135 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5136 UserInfoWithPermissionLevel::internal_deserialize(map)
5137 }
5138 }
5139 deserializer.deserialize_struct("UserInfoWithPermissionLevel", USER_INFO_WITH_PERMISSION_LEVEL_FIELDS, StructVisitor)
5140 }
5141}
5142
5143impl ::serde::ser::Serialize for UserInfoWithPermissionLevel {
5144 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5145 use serde::ser::SerializeStruct;
5147 let mut s = serializer.serialize_struct("UserInfoWithPermissionLevel", 2)?;
5148 self.internal_serialize::<S>(&mut s)?;
5149 s.end()
5150 }
5151}
5152
5153#[derive(Debug, Clone, PartialEq, Eq)]
5154#[non_exhaustive] pub enum UserOnPaperDocFilter {
5156 Visited,
5158 Shared,
5161 Other,
5164}
5165
5166impl<'de> ::serde::de::Deserialize<'de> for UserOnPaperDocFilter {
5167 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5168 use serde::de::{self, MapAccess, Visitor};
5170 struct EnumVisitor;
5171 impl<'de> Visitor<'de> for EnumVisitor {
5172 type Value = UserOnPaperDocFilter;
5173 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5174 f.write_str("a UserOnPaperDocFilter structure")
5175 }
5176 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
5177 let tag: &str = match map.next_key()? {
5178 Some(".tag") => map.next_value()?,
5179 _ => return Err(de::Error::missing_field(".tag"))
5180 };
5181 let value = match tag {
5182 "visited" => UserOnPaperDocFilter::Visited,
5183 "shared" => UserOnPaperDocFilter::Shared,
5184 _ => UserOnPaperDocFilter::Other,
5185 };
5186 crate::eat_json_fields(&mut map)?;
5187 Ok(value)
5188 }
5189 }
5190 const VARIANTS: &[&str] = &["visited",
5191 "shared",
5192 "other"];
5193 deserializer.deserialize_struct("UserOnPaperDocFilter", VARIANTS, EnumVisitor)
5194 }
5195}
5196
5197impl ::serde::ser::Serialize for UserOnPaperDocFilter {
5198 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5199 use serde::ser::SerializeStruct;
5201 match self {
5202 UserOnPaperDocFilter::Visited => {
5203 let mut s = serializer.serialize_struct("UserOnPaperDocFilter", 1)?;
5205 s.serialize_field(".tag", "visited")?;
5206 s.end()
5207 }
5208 UserOnPaperDocFilter::Shared => {
5209 let mut s = serializer.serialize_struct("UserOnPaperDocFilter", 1)?;
5211 s.serialize_field(".tag", "shared")?;
5212 s.end()
5213 }
5214 UserOnPaperDocFilter::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
5215 }
5216 }
5217}
5218