1#![allow(
5 clippy::too_many_arguments,
6 clippy::large_enum_variant,
7 clippy::result_large_err,
8 clippy::doc_markdown,
9 clippy::doc_lazy_continuation,
10)]
11
12pub type DropboxId = String;
16pub type GetSharedLinkFileArg = GetSharedLinkMetadataArg;
17pub type Id = crate::types::files::Id;
18pub type Path = crate::types::files::Path;
19pub type PathOrId = String;
20pub type ReadPath = crate::types::files::ReadPath;
21pub type Rev = crate::types::files::Rev;
22pub type TeamInfo = crate::types::users::Team;
23
24#[derive(Debug, Clone, PartialEq, Eq)]
26#[non_exhaustive] pub enum AccessInheritance {
28 Inherit,
30 NoInherit,
32 Other,
35}
36
37impl<'de> ::serde::de::Deserialize<'de> for AccessInheritance {
38 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
39 use serde::de::{self, MapAccess, Visitor};
41 struct EnumVisitor;
42 impl<'de> Visitor<'de> for EnumVisitor {
43 type Value = AccessInheritance;
44 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
45 f.write_str("a AccessInheritance structure")
46 }
47 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
48 let tag: &str = match map.next_key()? {
49 Some(".tag") => map.next_value()?,
50 _ => return Err(de::Error::missing_field(".tag"))
51 };
52 let value = match tag {
53 "inherit" => AccessInheritance::Inherit,
54 "no_inherit" => AccessInheritance::NoInherit,
55 _ => AccessInheritance::Other,
56 };
57 crate::eat_json_fields(&mut map)?;
58 Ok(value)
59 }
60 }
61 const VARIANTS: &[&str] = &["inherit",
62 "no_inherit",
63 "other"];
64 deserializer.deserialize_struct("AccessInheritance", VARIANTS, EnumVisitor)
65 }
66}
67
68impl ::serde::ser::Serialize for AccessInheritance {
69 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
70 use serde::ser::SerializeStruct;
72 match self {
73 AccessInheritance::Inherit => {
74 let mut s = serializer.serialize_struct("AccessInheritance", 1)?;
76 s.serialize_field(".tag", "inherit")?;
77 s.end()
78 }
79 AccessInheritance::NoInherit => {
80 let mut s = serializer.serialize_struct("AccessInheritance", 1)?;
82 s.serialize_field(".tag", "no_inherit")?;
83 s.end()
84 }
85 AccessInheritance::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
86 }
87 }
88}
89
90#[derive(Debug, Clone, PartialEq, Eq)]
92#[non_exhaustive] pub enum AccessLevel {
94 Owner,
98 Editor,
100 Viewer,
102 ViewerNoComment,
104 Traverse,
106 NoAccess,
110 Other,
113}
114
115impl<'de> ::serde::de::Deserialize<'de> for AccessLevel {
116 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
117 use serde::de::{self, MapAccess, Visitor};
119 struct EnumVisitor;
120 impl<'de> Visitor<'de> for EnumVisitor {
121 type Value = AccessLevel;
122 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
123 f.write_str("a AccessLevel structure")
124 }
125 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
126 let tag: &str = match map.next_key()? {
127 Some(".tag") => map.next_value()?,
128 _ => return Err(de::Error::missing_field(".tag"))
129 };
130 let value = match tag {
131 "owner" => AccessLevel::Owner,
132 "editor" => AccessLevel::Editor,
133 "viewer" => AccessLevel::Viewer,
134 "viewer_no_comment" => AccessLevel::ViewerNoComment,
135 "traverse" => AccessLevel::Traverse,
136 "no_access" => AccessLevel::NoAccess,
137 _ => AccessLevel::Other,
138 };
139 crate::eat_json_fields(&mut map)?;
140 Ok(value)
141 }
142 }
143 const VARIANTS: &[&str] = &["owner",
144 "editor",
145 "viewer",
146 "viewer_no_comment",
147 "traverse",
148 "no_access",
149 "other"];
150 deserializer.deserialize_struct("AccessLevel", VARIANTS, EnumVisitor)
151 }
152}
153
154impl ::serde::ser::Serialize for AccessLevel {
155 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
156 use serde::ser::SerializeStruct;
158 match self {
159 AccessLevel::Owner => {
160 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
162 s.serialize_field(".tag", "owner")?;
163 s.end()
164 }
165 AccessLevel::Editor => {
166 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
168 s.serialize_field(".tag", "editor")?;
169 s.end()
170 }
171 AccessLevel::Viewer => {
172 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
174 s.serialize_field(".tag", "viewer")?;
175 s.end()
176 }
177 AccessLevel::ViewerNoComment => {
178 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
180 s.serialize_field(".tag", "viewer_no_comment")?;
181 s.end()
182 }
183 AccessLevel::Traverse => {
184 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
186 s.serialize_field(".tag", "traverse")?;
187 s.end()
188 }
189 AccessLevel::NoAccess => {
190 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
192 s.serialize_field(".tag", "no_access")?;
193 s.end()
194 }
195 AccessLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
196 }
197 }
198}
199
200#[derive(Debug, Clone, PartialEq, Eq)]
203#[non_exhaustive] pub enum AclUpdatePolicy {
205 Owner,
207 Editors,
209 Other,
212}
213
214impl<'de> ::serde::de::Deserialize<'de> for AclUpdatePolicy {
215 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
216 use serde::de::{self, MapAccess, Visitor};
218 struct EnumVisitor;
219 impl<'de> Visitor<'de> for EnumVisitor {
220 type Value = AclUpdatePolicy;
221 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
222 f.write_str("a AclUpdatePolicy structure")
223 }
224 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
225 let tag: &str = match map.next_key()? {
226 Some(".tag") => map.next_value()?,
227 _ => return Err(de::Error::missing_field(".tag"))
228 };
229 let value = match tag {
230 "owner" => AclUpdatePolicy::Owner,
231 "editors" => AclUpdatePolicy::Editors,
232 _ => AclUpdatePolicy::Other,
233 };
234 crate::eat_json_fields(&mut map)?;
235 Ok(value)
236 }
237 }
238 const VARIANTS: &[&str] = &["owner",
239 "editors",
240 "other"];
241 deserializer.deserialize_struct("AclUpdatePolicy", VARIANTS, EnumVisitor)
242 }
243}
244
245impl ::serde::ser::Serialize for AclUpdatePolicy {
246 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
247 use serde::ser::SerializeStruct;
249 match self {
250 AclUpdatePolicy::Owner => {
251 let mut s = serializer.serialize_struct("AclUpdatePolicy", 1)?;
253 s.serialize_field(".tag", "owner")?;
254 s.end()
255 }
256 AclUpdatePolicy::Editors => {
257 let mut s = serializer.serialize_struct("AclUpdatePolicy", 1)?;
259 s.serialize_field(".tag", "editors")?;
260 s.end()
261 }
262 AclUpdatePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
263 }
264 }
265}
266
267#[derive(Debug, Clone, PartialEq, Eq)]
269#[non_exhaustive] pub struct AddFileMemberArgs {
271 pub file: PathOrId,
273 pub members: Vec<MemberSelector>,
276 pub custom_message: Option<String>,
278 pub quiet: bool,
281 pub access_level: Option<AccessLevel>,
283 pub add_message_as_comment: bool,
285 pub fp_sealed_result: Option<String>,
287}
288
289impl AddFileMemberArgs {
290 pub fn new(file: PathOrId, members: Vec<MemberSelector>) -> Self {
291 AddFileMemberArgs {
292 file,
293 members,
294 custom_message: None,
295 quiet: false,
296 access_level: None,
297 add_message_as_comment: false,
298 fp_sealed_result: None,
299 }
300 }
301
302 pub fn with_custom_message(mut self, value: String) -> Self {
303 self.custom_message = Some(value);
304 self
305 }
306
307 pub fn with_quiet(mut self, value: bool) -> Self {
308 self.quiet = value;
309 self
310 }
311
312 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
313 self.access_level = Some(value);
314 self
315 }
316
317 pub fn with_add_message_as_comment(mut self, value: bool) -> Self {
318 self.add_message_as_comment = value;
319 self
320 }
321
322 pub fn with_fp_sealed_result(mut self, value: String) -> Self {
323 self.fp_sealed_result = Some(value);
324 self
325 }
326}
327
328const ADD_FILE_MEMBER_ARGS_FIELDS: &[&str] = &["file",
329 "members",
330 "custom_message",
331 "quiet",
332 "access_level",
333 "add_message_as_comment",
334 "fp_sealed_result"];
335impl AddFileMemberArgs {
336 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
337 map: V,
338 ) -> Result<AddFileMemberArgs, V::Error> {
339 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
340 }
341
342 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
343 mut map: V,
344 optional: bool,
345 ) -> Result<Option<AddFileMemberArgs>, V::Error> {
346 let mut field_file = None;
347 let mut field_members = None;
348 let mut field_custom_message = None;
349 let mut field_quiet = None;
350 let mut field_access_level = None;
351 let mut field_add_message_as_comment = None;
352 let mut field_fp_sealed_result = None;
353 let mut nothing = true;
354 while let Some(key) = map.next_key::<&str>()? {
355 nothing = false;
356 match key {
357 "file" => {
358 if field_file.is_some() {
359 return Err(::serde::de::Error::duplicate_field("file"));
360 }
361 field_file = Some(map.next_value()?);
362 }
363 "members" => {
364 if field_members.is_some() {
365 return Err(::serde::de::Error::duplicate_field("members"));
366 }
367 field_members = Some(map.next_value()?);
368 }
369 "custom_message" => {
370 if field_custom_message.is_some() {
371 return Err(::serde::de::Error::duplicate_field("custom_message"));
372 }
373 field_custom_message = Some(map.next_value()?);
374 }
375 "quiet" => {
376 if field_quiet.is_some() {
377 return Err(::serde::de::Error::duplicate_field("quiet"));
378 }
379 field_quiet = Some(map.next_value()?);
380 }
381 "access_level" => {
382 if field_access_level.is_some() {
383 return Err(::serde::de::Error::duplicate_field("access_level"));
384 }
385 field_access_level = Some(map.next_value()?);
386 }
387 "add_message_as_comment" => {
388 if field_add_message_as_comment.is_some() {
389 return Err(::serde::de::Error::duplicate_field("add_message_as_comment"));
390 }
391 field_add_message_as_comment = Some(map.next_value()?);
392 }
393 "fp_sealed_result" => {
394 if field_fp_sealed_result.is_some() {
395 return Err(::serde::de::Error::duplicate_field("fp_sealed_result"));
396 }
397 field_fp_sealed_result = Some(map.next_value()?);
398 }
399 _ => {
400 map.next_value::<::serde_json::Value>()?;
402 }
403 }
404 }
405 if optional && nothing {
406 return Ok(None);
407 }
408 let result = AddFileMemberArgs {
409 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
410 members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?,
411 custom_message: field_custom_message.and_then(Option::flatten),
412 quiet: field_quiet.unwrap_or(false),
413 access_level: field_access_level.and_then(Option::flatten),
414 add_message_as_comment: field_add_message_as_comment.unwrap_or(false),
415 fp_sealed_result: field_fp_sealed_result.and_then(Option::flatten),
416 };
417 Ok(Some(result))
418 }
419
420 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
421 &self,
422 s: &mut S::SerializeStruct,
423 ) -> Result<(), S::Error> {
424 use serde::ser::SerializeStruct;
425 s.serialize_field("file", &self.file)?;
426 s.serialize_field("members", &self.members)?;
427 if let Some(val) = &self.custom_message {
428 s.serialize_field("custom_message", val)?;
429 }
430 if self.quiet {
431 s.serialize_field("quiet", &self.quiet)?;
432 }
433 if let Some(val) = &self.access_level {
434 s.serialize_field("access_level", val)?;
435 }
436 if self.add_message_as_comment {
437 s.serialize_field("add_message_as_comment", &self.add_message_as_comment)?;
438 }
439 if let Some(val) = &self.fp_sealed_result {
440 s.serialize_field("fp_sealed_result", val)?;
441 }
442 Ok(())
443 }
444}
445
446impl<'de> ::serde::de::Deserialize<'de> for AddFileMemberArgs {
447 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
448 use serde::de::{MapAccess, Visitor};
450 struct StructVisitor;
451 impl<'de> Visitor<'de> for StructVisitor {
452 type Value = AddFileMemberArgs;
453 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
454 f.write_str("a AddFileMemberArgs struct")
455 }
456 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
457 AddFileMemberArgs::internal_deserialize(map)
458 }
459 }
460 deserializer.deserialize_struct("AddFileMemberArgs", ADD_FILE_MEMBER_ARGS_FIELDS, StructVisitor)
461 }
462}
463
464impl ::serde::ser::Serialize for AddFileMemberArgs {
465 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
466 use serde::ser::SerializeStruct;
468 let mut s = serializer.serialize_struct("AddFileMemberArgs", 7)?;
469 self.internal_serialize::<S>(&mut s)?;
470 s.end()
471 }
472}
473
474#[derive(Debug, Clone, PartialEq, Eq)]
476#[non_exhaustive] pub enum AddFileMemberError {
478 UserError(SharingUserError),
479 AccessError(SharingFileAccessError),
480 RateLimit,
482 InvalidComment,
484 BannedMember,
486 Other,
489}
490
491impl<'de> ::serde::de::Deserialize<'de> for AddFileMemberError {
492 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
493 use serde::de::{self, MapAccess, Visitor};
495 struct EnumVisitor;
496 impl<'de> Visitor<'de> for EnumVisitor {
497 type Value = AddFileMemberError;
498 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
499 f.write_str("a AddFileMemberError structure")
500 }
501 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
502 let tag: &str = match map.next_key()? {
503 Some(".tag") => map.next_value()?,
504 _ => return Err(de::Error::missing_field(".tag"))
505 };
506 let value = match tag {
507 "user_error" => {
508 match map.next_key()? {
509 Some("user_error") => AddFileMemberError::UserError(map.next_value()?),
510 None => return Err(de::Error::missing_field("user_error")),
511 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
512 }
513 }
514 "access_error" => {
515 match map.next_key()? {
516 Some("access_error") => AddFileMemberError::AccessError(map.next_value()?),
517 None => return Err(de::Error::missing_field("access_error")),
518 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
519 }
520 }
521 "rate_limit" => AddFileMemberError::RateLimit,
522 "invalid_comment" => AddFileMemberError::InvalidComment,
523 "banned_member" => AddFileMemberError::BannedMember,
524 _ => AddFileMemberError::Other,
525 };
526 crate::eat_json_fields(&mut map)?;
527 Ok(value)
528 }
529 }
530 const VARIANTS: &[&str] = &["user_error",
531 "access_error",
532 "rate_limit",
533 "invalid_comment",
534 "banned_member",
535 "other"];
536 deserializer.deserialize_struct("AddFileMemberError", VARIANTS, EnumVisitor)
537 }
538}
539
540impl ::serde::ser::Serialize for AddFileMemberError {
541 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
542 use serde::ser::SerializeStruct;
544 match self {
545 AddFileMemberError::UserError(x) => {
546 let mut s = serializer.serialize_struct("AddFileMemberError", 2)?;
548 s.serialize_field(".tag", "user_error")?;
549 s.serialize_field("user_error", x)?;
550 s.end()
551 }
552 AddFileMemberError::AccessError(x) => {
553 let mut s = serializer.serialize_struct("AddFileMemberError", 2)?;
555 s.serialize_field(".tag", "access_error")?;
556 s.serialize_field("access_error", x)?;
557 s.end()
558 }
559 AddFileMemberError::RateLimit => {
560 let mut s = serializer.serialize_struct("AddFileMemberError", 1)?;
562 s.serialize_field(".tag", "rate_limit")?;
563 s.end()
564 }
565 AddFileMemberError::InvalidComment => {
566 let mut s = serializer.serialize_struct("AddFileMemberError", 1)?;
568 s.serialize_field(".tag", "invalid_comment")?;
569 s.end()
570 }
571 AddFileMemberError::BannedMember => {
572 let mut s = serializer.serialize_struct("AddFileMemberError", 1)?;
574 s.serialize_field(".tag", "banned_member")?;
575 s.end()
576 }
577 AddFileMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
578 }
579 }
580}
581
582impl ::std::error::Error for AddFileMemberError {
583 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
584 match self {
585 AddFileMemberError::UserError(inner) => Some(inner),
586 AddFileMemberError::AccessError(inner) => Some(inner),
587 _ => None,
588 }
589 }
590}
591
592impl ::std::fmt::Display for AddFileMemberError {
593 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
594 match self {
595 AddFileMemberError::UserError(inner) => write!(f, "AddFileMemberError: {}", inner),
596 AddFileMemberError::AccessError(inner) => write!(f, "AddFileMemberError: {}", inner),
597 AddFileMemberError::RateLimit => f.write_str("The user has reached the rate limit for invitations."),
598 AddFileMemberError::InvalidComment => f.write_str("The custom message did not pass comment permissions checks."),
599 AddFileMemberError::BannedMember => f.write_str("The current user has been banned for abuse reasons."),
600 _ => write!(f, "{:?}", *self),
601 }
602 }
603}
604
605#[derive(Debug, Clone, PartialEq, Eq)]
606#[non_exhaustive] pub struct AddFolderMemberArg {
608 pub shared_folder_id: crate::types::common::SharedFolderId,
610 pub members: Vec<AddMember>,
613 pub quiet: bool,
615 pub custom_message: Option<String>,
617 pub fp_sealed_result: Option<String>,
619}
620
621impl AddFolderMemberArg {
622 pub fn new(
623 shared_folder_id: crate::types::common::SharedFolderId,
624 members: Vec<AddMember>,
625 ) -> Self {
626 AddFolderMemberArg {
627 shared_folder_id,
628 members,
629 quiet: false,
630 custom_message: None,
631 fp_sealed_result: None,
632 }
633 }
634
635 pub fn with_quiet(mut self, value: bool) -> Self {
636 self.quiet = value;
637 self
638 }
639
640 pub fn with_custom_message(mut self, value: String) -> Self {
641 self.custom_message = Some(value);
642 self
643 }
644
645 pub fn with_fp_sealed_result(mut self, value: String) -> Self {
646 self.fp_sealed_result = Some(value);
647 self
648 }
649}
650
651const ADD_FOLDER_MEMBER_ARG_FIELDS: &[&str] = &["shared_folder_id",
652 "members",
653 "quiet",
654 "custom_message",
655 "fp_sealed_result"];
656impl AddFolderMemberArg {
657 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
658 map: V,
659 ) -> Result<AddFolderMemberArg, V::Error> {
660 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
661 }
662
663 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
664 mut map: V,
665 optional: bool,
666 ) -> Result<Option<AddFolderMemberArg>, V::Error> {
667 let mut field_shared_folder_id = None;
668 let mut field_members = None;
669 let mut field_quiet = None;
670 let mut field_custom_message = None;
671 let mut field_fp_sealed_result = None;
672 let mut nothing = true;
673 while let Some(key) = map.next_key::<&str>()? {
674 nothing = false;
675 match key {
676 "shared_folder_id" => {
677 if field_shared_folder_id.is_some() {
678 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
679 }
680 field_shared_folder_id = Some(map.next_value()?);
681 }
682 "members" => {
683 if field_members.is_some() {
684 return Err(::serde::de::Error::duplicate_field("members"));
685 }
686 field_members = Some(map.next_value()?);
687 }
688 "quiet" => {
689 if field_quiet.is_some() {
690 return Err(::serde::de::Error::duplicate_field("quiet"));
691 }
692 field_quiet = Some(map.next_value()?);
693 }
694 "custom_message" => {
695 if field_custom_message.is_some() {
696 return Err(::serde::de::Error::duplicate_field("custom_message"));
697 }
698 field_custom_message = Some(map.next_value()?);
699 }
700 "fp_sealed_result" => {
701 if field_fp_sealed_result.is_some() {
702 return Err(::serde::de::Error::duplicate_field("fp_sealed_result"));
703 }
704 field_fp_sealed_result = Some(map.next_value()?);
705 }
706 _ => {
707 map.next_value::<::serde_json::Value>()?;
709 }
710 }
711 }
712 if optional && nothing {
713 return Ok(None);
714 }
715 let result = AddFolderMemberArg {
716 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
717 members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?,
718 quiet: field_quiet.unwrap_or(false),
719 custom_message: field_custom_message.and_then(Option::flatten),
720 fp_sealed_result: field_fp_sealed_result.and_then(Option::flatten),
721 };
722 Ok(Some(result))
723 }
724
725 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
726 &self,
727 s: &mut S::SerializeStruct,
728 ) -> Result<(), S::Error> {
729 use serde::ser::SerializeStruct;
730 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
731 s.serialize_field("members", &self.members)?;
732 if self.quiet {
733 s.serialize_field("quiet", &self.quiet)?;
734 }
735 if let Some(val) = &self.custom_message {
736 s.serialize_field("custom_message", val)?;
737 }
738 if let Some(val) = &self.fp_sealed_result {
739 s.serialize_field("fp_sealed_result", val)?;
740 }
741 Ok(())
742 }
743}
744
745impl<'de> ::serde::de::Deserialize<'de> for AddFolderMemberArg {
746 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
747 use serde::de::{MapAccess, Visitor};
749 struct StructVisitor;
750 impl<'de> Visitor<'de> for StructVisitor {
751 type Value = AddFolderMemberArg;
752 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
753 f.write_str("a AddFolderMemberArg struct")
754 }
755 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
756 AddFolderMemberArg::internal_deserialize(map)
757 }
758 }
759 deserializer.deserialize_struct("AddFolderMemberArg", ADD_FOLDER_MEMBER_ARG_FIELDS, StructVisitor)
760 }
761}
762
763impl ::serde::ser::Serialize for AddFolderMemberArg {
764 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
765 use serde::ser::SerializeStruct;
767 let mut s = serializer.serialize_struct("AddFolderMemberArg", 5)?;
768 self.internal_serialize::<S>(&mut s)?;
769 s.end()
770 }
771}
772
773#[derive(Debug, Clone, PartialEq, Eq)]
774#[non_exhaustive] pub enum AddFolderMemberError {
776 AccessError(SharedFolderAccessError),
778 EmailUnverified,
782 BannedMember,
784 BadMember(AddMemberSelectorError),
786 CantShareOutsideTeam,
788 TooManyMembers(u64),
790 TooManyPendingInvites(u64),
792 RateLimit,
794 TooManyInvitees,
796 InsufficientPlan,
800 TeamFolder,
802 NoPermission,
804 InvalidSharedFolder,
806 Other,
809}
810
811impl<'de> ::serde::de::Deserialize<'de> for AddFolderMemberError {
812 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
813 use serde::de::{self, MapAccess, Visitor};
815 struct EnumVisitor;
816 impl<'de> Visitor<'de> for EnumVisitor {
817 type Value = AddFolderMemberError;
818 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
819 f.write_str("a AddFolderMemberError structure")
820 }
821 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
822 let tag: &str = match map.next_key()? {
823 Some(".tag") => map.next_value()?,
824 _ => return Err(de::Error::missing_field(".tag"))
825 };
826 let value = match tag {
827 "access_error" => {
828 match map.next_key()? {
829 Some("access_error") => AddFolderMemberError::AccessError(map.next_value()?),
830 None => return Err(de::Error::missing_field("access_error")),
831 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
832 }
833 }
834 "email_unverified" => AddFolderMemberError::EmailUnverified,
835 "banned_member" => AddFolderMemberError::BannedMember,
836 "bad_member" => {
837 match map.next_key()? {
838 Some("bad_member") => AddFolderMemberError::BadMember(map.next_value()?),
839 None => return Err(de::Error::missing_field("bad_member")),
840 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
841 }
842 }
843 "cant_share_outside_team" => AddFolderMemberError::CantShareOutsideTeam,
844 "too_many_members" => {
845 match map.next_key()? {
846 Some("too_many_members") => AddFolderMemberError::TooManyMembers(map.next_value()?),
847 None => return Err(de::Error::missing_field("too_many_members")),
848 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
849 }
850 }
851 "too_many_pending_invites" => {
852 match map.next_key()? {
853 Some("too_many_pending_invites") => AddFolderMemberError::TooManyPendingInvites(map.next_value()?),
854 None => return Err(de::Error::missing_field("too_many_pending_invites")),
855 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
856 }
857 }
858 "rate_limit" => AddFolderMemberError::RateLimit,
859 "too_many_invitees" => AddFolderMemberError::TooManyInvitees,
860 "insufficient_plan" => AddFolderMemberError::InsufficientPlan,
861 "team_folder" => AddFolderMemberError::TeamFolder,
862 "no_permission" => AddFolderMemberError::NoPermission,
863 "invalid_shared_folder" => AddFolderMemberError::InvalidSharedFolder,
864 _ => AddFolderMemberError::Other,
865 };
866 crate::eat_json_fields(&mut map)?;
867 Ok(value)
868 }
869 }
870 const VARIANTS: &[&str] = &["access_error",
871 "email_unverified",
872 "banned_member",
873 "bad_member",
874 "cant_share_outside_team",
875 "too_many_members",
876 "too_many_pending_invites",
877 "rate_limit",
878 "too_many_invitees",
879 "insufficient_plan",
880 "team_folder",
881 "no_permission",
882 "invalid_shared_folder",
883 "other"];
884 deserializer.deserialize_struct("AddFolderMemberError", VARIANTS, EnumVisitor)
885 }
886}
887
888impl ::serde::ser::Serialize for AddFolderMemberError {
889 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
890 use serde::ser::SerializeStruct;
892 match self {
893 AddFolderMemberError::AccessError(x) => {
894 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
896 s.serialize_field(".tag", "access_error")?;
897 s.serialize_field("access_error", x)?;
898 s.end()
899 }
900 AddFolderMemberError::EmailUnverified => {
901 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
903 s.serialize_field(".tag", "email_unverified")?;
904 s.end()
905 }
906 AddFolderMemberError::BannedMember => {
907 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
909 s.serialize_field(".tag", "banned_member")?;
910 s.end()
911 }
912 AddFolderMemberError::BadMember(x) => {
913 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
915 s.serialize_field(".tag", "bad_member")?;
916 s.serialize_field("bad_member", x)?;
917 s.end()
918 }
919 AddFolderMemberError::CantShareOutsideTeam => {
920 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
922 s.serialize_field(".tag", "cant_share_outside_team")?;
923 s.end()
924 }
925 AddFolderMemberError::TooManyMembers(x) => {
926 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
928 s.serialize_field(".tag", "too_many_members")?;
929 s.serialize_field("too_many_members", x)?;
930 s.end()
931 }
932 AddFolderMemberError::TooManyPendingInvites(x) => {
933 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
935 s.serialize_field(".tag", "too_many_pending_invites")?;
936 s.serialize_field("too_many_pending_invites", x)?;
937 s.end()
938 }
939 AddFolderMemberError::RateLimit => {
940 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
942 s.serialize_field(".tag", "rate_limit")?;
943 s.end()
944 }
945 AddFolderMemberError::TooManyInvitees => {
946 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
948 s.serialize_field(".tag", "too_many_invitees")?;
949 s.end()
950 }
951 AddFolderMemberError::InsufficientPlan => {
952 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
954 s.serialize_field(".tag", "insufficient_plan")?;
955 s.end()
956 }
957 AddFolderMemberError::TeamFolder => {
958 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
960 s.serialize_field(".tag", "team_folder")?;
961 s.end()
962 }
963 AddFolderMemberError::NoPermission => {
964 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
966 s.serialize_field(".tag", "no_permission")?;
967 s.end()
968 }
969 AddFolderMemberError::InvalidSharedFolder => {
970 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
972 s.serialize_field(".tag", "invalid_shared_folder")?;
973 s.end()
974 }
975 AddFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
976 }
977 }
978}
979
980impl ::std::error::Error for AddFolderMemberError {
981 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
982 match self {
983 AddFolderMemberError::AccessError(inner) => Some(inner),
984 AddFolderMemberError::BadMember(inner) => Some(inner),
985 _ => None,
986 }
987 }
988}
989
990impl ::std::fmt::Display for AddFolderMemberError {
991 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
992 match self {
993 AddFolderMemberError::AccessError(inner) => write!(f, "Unable to access shared folder: {}", inner),
994 AddFolderMemberError::BannedMember => f.write_str("The current user has been banned."),
995 AddFolderMemberError::BadMember(inner) => write!(f, "AddFolderMemberError: {}", inner),
996 AddFolderMemberError::CantShareOutsideTeam => f.write_str("Your team policy does not allow sharing outside of the team."),
997 AddFolderMemberError::TooManyMembers(inner) => write!(f, "The value is the member limit that was reached: {:?}", inner),
998 AddFolderMemberError::TooManyPendingInvites(inner) => write!(f, "The value is the pending invite limit that was reached: {:?}", inner),
999 AddFolderMemberError::RateLimit => f.write_str("The current user has hit the limit of invites they can send per day. Try again in 24 hours."),
1000 AddFolderMemberError::TooManyInvitees => f.write_str("The current user is trying to share with too many people at once."),
1001 AddFolderMemberError::InsufficientPlan => f.write_str("The current user's account doesn't support this action. An example of this is when adding a read-only member. This action can only be performed by users that have upgraded to a Pro or Business plan."),
1002 AddFolderMemberError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
1003 AddFolderMemberError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
1004 AddFolderMemberError::InvalidSharedFolder => f.write_str("Invalid shared folder error will be returned as an access_error."),
1005 _ => write!(f, "{:?}", *self),
1006 }
1007 }
1008}
1009
1010#[derive(Debug, Clone, PartialEq, Eq)]
1012#[non_exhaustive] pub struct AddMember {
1014 pub member: MemberSelector,
1016 pub access_level: Option<AccessLevel>,
1019}
1020
1021impl AddMember {
1022 pub fn new(member: MemberSelector) -> Self {
1023 AddMember {
1024 member,
1025 access_level: None,
1026 }
1027 }
1028
1029 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
1030 self.access_level = Some(value);
1031 self
1032 }
1033}
1034
1035const ADD_MEMBER_FIELDS: &[&str] = &["member",
1036 "access_level"];
1037impl AddMember {
1038 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1039 map: V,
1040 ) -> Result<AddMember, V::Error> {
1041 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1042 }
1043
1044 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1045 mut map: V,
1046 optional: bool,
1047 ) -> Result<Option<AddMember>, V::Error> {
1048 let mut field_member = None;
1049 let mut field_access_level = None;
1050 let mut nothing = true;
1051 while let Some(key) = map.next_key::<&str>()? {
1052 nothing = false;
1053 match key {
1054 "member" => {
1055 if field_member.is_some() {
1056 return Err(::serde::de::Error::duplicate_field("member"));
1057 }
1058 field_member = Some(map.next_value()?);
1059 }
1060 "access_level" => {
1061 if field_access_level.is_some() {
1062 return Err(::serde::de::Error::duplicate_field("access_level"));
1063 }
1064 field_access_level = Some(map.next_value()?);
1065 }
1066 _ => {
1067 map.next_value::<::serde_json::Value>()?;
1069 }
1070 }
1071 }
1072 if optional && nothing {
1073 return Ok(None);
1074 }
1075 let result = AddMember {
1076 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
1077 access_level: field_access_level.and_then(Option::flatten),
1078 };
1079 Ok(Some(result))
1080 }
1081
1082 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1083 &self,
1084 s: &mut S::SerializeStruct,
1085 ) -> Result<(), S::Error> {
1086 use serde::ser::SerializeStruct;
1087 s.serialize_field("member", &self.member)?;
1088 if let Some(val) = &self.access_level {
1089 s.serialize_field("access_level", val)?;
1090 }
1091 Ok(())
1092 }
1093}
1094
1095impl<'de> ::serde::de::Deserialize<'de> for AddMember {
1096 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1097 use serde::de::{MapAccess, Visitor};
1099 struct StructVisitor;
1100 impl<'de> Visitor<'de> for StructVisitor {
1101 type Value = AddMember;
1102 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1103 f.write_str("a AddMember struct")
1104 }
1105 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1106 AddMember::internal_deserialize(map)
1107 }
1108 }
1109 deserializer.deserialize_struct("AddMember", ADD_MEMBER_FIELDS, StructVisitor)
1110 }
1111}
1112
1113impl ::serde::ser::Serialize for AddMember {
1114 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1115 use serde::ser::SerializeStruct;
1117 let mut s = serializer.serialize_struct("AddMember", 2)?;
1118 self.internal_serialize::<S>(&mut s)?;
1119 s.end()
1120 }
1121}
1122
1123#[derive(Debug, Clone, PartialEq, Eq)]
1124#[non_exhaustive] pub enum AddMemberSelectorError {
1126 AutomaticGroup,
1128 InvalidDropboxId(DropboxId),
1130 InvalidEmail(crate::types::common::EmailAddress),
1132 InvalidGroup,
1134 UnverifiedDropboxId(DropboxId),
1137 GroupDeleted,
1140 GroupNotOnTeam,
1142 Other,
1145}
1146
1147impl<'de> ::serde::de::Deserialize<'de> for AddMemberSelectorError {
1148 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1149 use serde::de::{self, MapAccess, Visitor};
1151 struct EnumVisitor;
1152 impl<'de> Visitor<'de> for EnumVisitor {
1153 type Value = AddMemberSelectorError;
1154 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1155 f.write_str("a AddMemberSelectorError structure")
1156 }
1157 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1158 let tag: &str = match map.next_key()? {
1159 Some(".tag") => map.next_value()?,
1160 _ => return Err(de::Error::missing_field(".tag"))
1161 };
1162 let value = match tag {
1163 "automatic_group" => AddMemberSelectorError::AutomaticGroup,
1164 "invalid_dropbox_id" => {
1165 match map.next_key()? {
1166 Some("invalid_dropbox_id") => AddMemberSelectorError::InvalidDropboxId(map.next_value()?),
1167 None => return Err(de::Error::missing_field("invalid_dropbox_id")),
1168 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
1169 }
1170 }
1171 "invalid_email" => {
1172 match map.next_key()? {
1173 Some("invalid_email") => AddMemberSelectorError::InvalidEmail(map.next_value()?),
1174 None => return Err(de::Error::missing_field("invalid_email")),
1175 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
1176 }
1177 }
1178 "invalid_group" => AddMemberSelectorError::InvalidGroup,
1179 "unverified_dropbox_id" => {
1180 match map.next_key()? {
1181 Some("unverified_dropbox_id") => AddMemberSelectorError::UnverifiedDropboxId(map.next_value()?),
1182 None => return Err(de::Error::missing_field("unverified_dropbox_id")),
1183 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
1184 }
1185 }
1186 "group_deleted" => AddMemberSelectorError::GroupDeleted,
1187 "group_not_on_team" => AddMemberSelectorError::GroupNotOnTeam,
1188 _ => AddMemberSelectorError::Other,
1189 };
1190 crate::eat_json_fields(&mut map)?;
1191 Ok(value)
1192 }
1193 }
1194 const VARIANTS: &[&str] = &["automatic_group",
1195 "invalid_dropbox_id",
1196 "invalid_email",
1197 "invalid_group",
1198 "unverified_dropbox_id",
1199 "group_deleted",
1200 "group_not_on_team",
1201 "other"];
1202 deserializer.deserialize_struct("AddMemberSelectorError", VARIANTS, EnumVisitor)
1203 }
1204}
1205
1206impl ::serde::ser::Serialize for AddMemberSelectorError {
1207 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1208 use serde::ser::SerializeStruct;
1210 match self {
1211 AddMemberSelectorError::AutomaticGroup => {
1212 let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?;
1214 s.serialize_field(".tag", "automatic_group")?;
1215 s.end()
1216 }
1217 AddMemberSelectorError::InvalidDropboxId(x) => {
1218 let mut s = serializer.serialize_struct("AddMemberSelectorError", 2)?;
1220 s.serialize_field(".tag", "invalid_dropbox_id")?;
1221 s.serialize_field("invalid_dropbox_id", x)?;
1222 s.end()
1223 }
1224 AddMemberSelectorError::InvalidEmail(x) => {
1225 let mut s = serializer.serialize_struct("AddMemberSelectorError", 2)?;
1227 s.serialize_field(".tag", "invalid_email")?;
1228 s.serialize_field("invalid_email", x)?;
1229 s.end()
1230 }
1231 AddMemberSelectorError::InvalidGroup => {
1232 let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?;
1234 s.serialize_field(".tag", "invalid_group")?;
1235 s.end()
1236 }
1237 AddMemberSelectorError::UnverifiedDropboxId(x) => {
1238 let mut s = serializer.serialize_struct("AddMemberSelectorError", 2)?;
1240 s.serialize_field(".tag", "unverified_dropbox_id")?;
1241 s.serialize_field("unverified_dropbox_id", x)?;
1242 s.end()
1243 }
1244 AddMemberSelectorError::GroupDeleted => {
1245 let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?;
1247 s.serialize_field(".tag", "group_deleted")?;
1248 s.end()
1249 }
1250 AddMemberSelectorError::GroupNotOnTeam => {
1251 let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?;
1253 s.serialize_field(".tag", "group_not_on_team")?;
1254 s.end()
1255 }
1256 AddMemberSelectorError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1257 }
1258 }
1259}
1260
1261impl ::std::error::Error for AddMemberSelectorError {
1262}
1263
1264impl ::std::fmt::Display for AddMemberSelectorError {
1265 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1266 match self {
1267 AddMemberSelectorError::AutomaticGroup => f.write_str("Automatically created groups can only be added to team folders."),
1268 AddMemberSelectorError::InvalidDropboxId(inner) => write!(f, "The value is the ID that could not be identified: {:?}", inner),
1269 AddMemberSelectorError::InvalidEmail(inner) => write!(f, "The value is the e-email address that is malformed: {:?}", inner),
1270 AddMemberSelectorError::InvalidGroup => f.write_str("Provided group is invalid."),
1271 AddMemberSelectorError::UnverifiedDropboxId(inner) => write!(f, "The value is the ID of the Dropbox user with an unverified email address. Invite unverified users by email address instead of by their Dropbox ID: {:?}", inner),
1272 AddMemberSelectorError::GroupNotOnTeam => f.write_str("Sharing to a group that is not on the current user's team."),
1273 _ => write!(f, "{:?}", *self),
1274 }
1275 }
1276}
1277
1278#[derive(Debug, Clone, PartialEq, Eq)]
1280#[non_exhaustive] pub enum AlphaResolvedVisibility {
1282 Public,
1284 TeamOnly,
1286 Password,
1288 TeamAndPassword,
1291 SharedFolderOnly,
1294 NoOne,
1298 OnlyYou,
1300 Other,
1303}
1304
1305impl<'de> ::serde::de::Deserialize<'de> for AlphaResolvedVisibility {
1306 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1307 use serde::de::{self, MapAccess, Visitor};
1309 struct EnumVisitor;
1310 impl<'de> Visitor<'de> for EnumVisitor {
1311 type Value = AlphaResolvedVisibility;
1312 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1313 f.write_str("a AlphaResolvedVisibility structure")
1314 }
1315 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1316 let tag: &str = match map.next_key()? {
1317 Some(".tag") => map.next_value()?,
1318 _ => return Err(de::Error::missing_field(".tag"))
1319 };
1320 let value = match tag {
1321 "public" => AlphaResolvedVisibility::Public,
1322 "team_only" => AlphaResolvedVisibility::TeamOnly,
1323 "password" => AlphaResolvedVisibility::Password,
1324 "team_and_password" => AlphaResolvedVisibility::TeamAndPassword,
1325 "shared_folder_only" => AlphaResolvedVisibility::SharedFolderOnly,
1326 "no_one" => AlphaResolvedVisibility::NoOne,
1327 "only_you" => AlphaResolvedVisibility::OnlyYou,
1328 _ => AlphaResolvedVisibility::Other,
1329 };
1330 crate::eat_json_fields(&mut map)?;
1331 Ok(value)
1332 }
1333 }
1334 const VARIANTS: &[&str] = &["public",
1335 "team_only",
1336 "password",
1337 "team_and_password",
1338 "shared_folder_only",
1339 "no_one",
1340 "only_you",
1341 "other"];
1342 deserializer.deserialize_struct("AlphaResolvedVisibility", VARIANTS, EnumVisitor)
1343 }
1344}
1345
1346impl ::serde::ser::Serialize for AlphaResolvedVisibility {
1347 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1348 use serde::ser::SerializeStruct;
1350 match self {
1351 AlphaResolvedVisibility::Public => {
1352 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1354 s.serialize_field(".tag", "public")?;
1355 s.end()
1356 }
1357 AlphaResolvedVisibility::TeamOnly => {
1358 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1360 s.serialize_field(".tag", "team_only")?;
1361 s.end()
1362 }
1363 AlphaResolvedVisibility::Password => {
1364 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1366 s.serialize_field(".tag", "password")?;
1367 s.end()
1368 }
1369 AlphaResolvedVisibility::TeamAndPassword => {
1370 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1372 s.serialize_field(".tag", "team_and_password")?;
1373 s.end()
1374 }
1375 AlphaResolvedVisibility::SharedFolderOnly => {
1376 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1378 s.serialize_field(".tag", "shared_folder_only")?;
1379 s.end()
1380 }
1381 AlphaResolvedVisibility::NoOne => {
1382 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1384 s.serialize_field(".tag", "no_one")?;
1385 s.end()
1386 }
1387 AlphaResolvedVisibility::OnlyYou => {
1388 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1390 s.serialize_field(".tag", "only_you")?;
1391 s.end()
1392 }
1393 AlphaResolvedVisibility::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1394 }
1395 }
1396}
1397
1398impl From<ResolvedVisibility> for AlphaResolvedVisibility {
1400 fn from(parent: ResolvedVisibility) -> Self {
1401 match parent {
1402 ResolvedVisibility::Public => AlphaResolvedVisibility::Public,
1403 ResolvedVisibility::TeamOnly => AlphaResolvedVisibility::TeamOnly,
1404 ResolvedVisibility::Password => AlphaResolvedVisibility::Password,
1405 ResolvedVisibility::TeamAndPassword => AlphaResolvedVisibility::TeamAndPassword,
1406 ResolvedVisibility::SharedFolderOnly => AlphaResolvedVisibility::SharedFolderOnly,
1407 ResolvedVisibility::NoOne => AlphaResolvedVisibility::NoOne,
1408 ResolvedVisibility::OnlyYou => AlphaResolvedVisibility::OnlyYou,
1409 ResolvedVisibility::Other => AlphaResolvedVisibility::Other,
1410 }
1411 }
1412}
1413#[derive(Debug, Clone, PartialEq, Eq)]
1415#[non_exhaustive] pub struct AudienceExceptionContentInfo {
1417 pub name: String,
1419}
1420
1421impl AudienceExceptionContentInfo {
1422 pub fn new(name: String) -> Self {
1423 AudienceExceptionContentInfo {
1424 name,
1425 }
1426 }
1427}
1428
1429const AUDIENCE_EXCEPTION_CONTENT_INFO_FIELDS: &[&str] = &["name"];
1430impl AudienceExceptionContentInfo {
1431 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1432 map: V,
1433 ) -> Result<AudienceExceptionContentInfo, V::Error> {
1434 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1435 }
1436
1437 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1438 mut map: V,
1439 optional: bool,
1440 ) -> Result<Option<AudienceExceptionContentInfo>, V::Error> {
1441 let mut field_name = None;
1442 let mut nothing = true;
1443 while let Some(key) = map.next_key::<&str>()? {
1444 nothing = false;
1445 match key {
1446 "name" => {
1447 if field_name.is_some() {
1448 return Err(::serde::de::Error::duplicate_field("name"));
1449 }
1450 field_name = Some(map.next_value()?);
1451 }
1452 _ => {
1453 map.next_value::<::serde_json::Value>()?;
1455 }
1456 }
1457 }
1458 if optional && nothing {
1459 return Ok(None);
1460 }
1461 let result = AudienceExceptionContentInfo {
1462 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
1463 };
1464 Ok(Some(result))
1465 }
1466
1467 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1468 &self,
1469 s: &mut S::SerializeStruct,
1470 ) -> Result<(), S::Error> {
1471 use serde::ser::SerializeStruct;
1472 s.serialize_field("name", &self.name)?;
1473 Ok(())
1474 }
1475}
1476
1477impl<'de> ::serde::de::Deserialize<'de> for AudienceExceptionContentInfo {
1478 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1479 use serde::de::{MapAccess, Visitor};
1481 struct StructVisitor;
1482 impl<'de> Visitor<'de> for StructVisitor {
1483 type Value = AudienceExceptionContentInfo;
1484 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1485 f.write_str("a AudienceExceptionContentInfo struct")
1486 }
1487 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1488 AudienceExceptionContentInfo::internal_deserialize(map)
1489 }
1490 }
1491 deserializer.deserialize_struct("AudienceExceptionContentInfo", AUDIENCE_EXCEPTION_CONTENT_INFO_FIELDS, StructVisitor)
1492 }
1493}
1494
1495impl ::serde::ser::Serialize for AudienceExceptionContentInfo {
1496 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1497 use serde::ser::SerializeStruct;
1499 let mut s = serializer.serialize_struct("AudienceExceptionContentInfo", 1)?;
1500 self.internal_serialize::<S>(&mut s)?;
1501 s.end()
1502 }
1503}
1504
1505#[derive(Debug, Clone, PartialEq, Eq)]
1508#[non_exhaustive] pub struct AudienceExceptions {
1510 pub count: u32,
1511 pub exceptions: Vec<AudienceExceptionContentInfo>,
1515}
1516
1517impl AudienceExceptions {
1518 pub fn new(count: u32, exceptions: Vec<AudienceExceptionContentInfo>) -> Self {
1519 AudienceExceptions {
1520 count,
1521 exceptions,
1522 }
1523 }
1524}
1525
1526const AUDIENCE_EXCEPTIONS_FIELDS: &[&str] = &["count",
1527 "exceptions"];
1528impl AudienceExceptions {
1529 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1530 map: V,
1531 ) -> Result<AudienceExceptions, V::Error> {
1532 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1533 }
1534
1535 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1536 mut map: V,
1537 optional: bool,
1538 ) -> Result<Option<AudienceExceptions>, V::Error> {
1539 let mut field_count = None;
1540 let mut field_exceptions = None;
1541 let mut nothing = true;
1542 while let Some(key) = map.next_key::<&str>()? {
1543 nothing = false;
1544 match key {
1545 "count" => {
1546 if field_count.is_some() {
1547 return Err(::serde::de::Error::duplicate_field("count"));
1548 }
1549 field_count = Some(map.next_value()?);
1550 }
1551 "exceptions" => {
1552 if field_exceptions.is_some() {
1553 return Err(::serde::de::Error::duplicate_field("exceptions"));
1554 }
1555 field_exceptions = Some(map.next_value()?);
1556 }
1557 _ => {
1558 map.next_value::<::serde_json::Value>()?;
1560 }
1561 }
1562 }
1563 if optional && nothing {
1564 return Ok(None);
1565 }
1566 let result = AudienceExceptions {
1567 count: field_count.ok_or_else(|| ::serde::de::Error::missing_field("count"))?,
1568 exceptions: field_exceptions.ok_or_else(|| ::serde::de::Error::missing_field("exceptions"))?,
1569 };
1570 Ok(Some(result))
1571 }
1572
1573 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1574 &self,
1575 s: &mut S::SerializeStruct,
1576 ) -> Result<(), S::Error> {
1577 use serde::ser::SerializeStruct;
1578 s.serialize_field("count", &self.count)?;
1579 s.serialize_field("exceptions", &self.exceptions)?;
1580 Ok(())
1581 }
1582}
1583
1584impl<'de> ::serde::de::Deserialize<'de> for AudienceExceptions {
1585 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1586 use serde::de::{MapAccess, Visitor};
1588 struct StructVisitor;
1589 impl<'de> Visitor<'de> for StructVisitor {
1590 type Value = AudienceExceptions;
1591 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1592 f.write_str("a AudienceExceptions struct")
1593 }
1594 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1595 AudienceExceptions::internal_deserialize(map)
1596 }
1597 }
1598 deserializer.deserialize_struct("AudienceExceptions", AUDIENCE_EXCEPTIONS_FIELDS, StructVisitor)
1599 }
1600}
1601
1602impl ::serde::ser::Serialize for AudienceExceptions {
1603 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1604 use serde::ser::SerializeStruct;
1606 let mut s = serializer.serialize_struct("AudienceExceptions", 2)?;
1607 self.internal_serialize::<S>(&mut s)?;
1608 s.end()
1609 }
1610}
1611
1612#[derive(Debug, Clone, PartialEq, Eq)]
1615#[non_exhaustive] pub struct AudienceRestrictingSharedFolder {
1617 pub shared_folder_id: crate::types::common::SharedFolderId,
1619 pub name: String,
1621 pub audience: LinkAudience,
1623}
1624
1625impl AudienceRestrictingSharedFolder {
1626 pub fn new(
1627 shared_folder_id: crate::types::common::SharedFolderId,
1628 name: String,
1629 audience: LinkAudience,
1630 ) -> Self {
1631 AudienceRestrictingSharedFolder {
1632 shared_folder_id,
1633 name,
1634 audience,
1635 }
1636 }
1637}
1638
1639const AUDIENCE_RESTRICTING_SHARED_FOLDER_FIELDS: &[&str] = &["shared_folder_id",
1640 "name",
1641 "audience"];
1642impl AudienceRestrictingSharedFolder {
1643 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1644 map: V,
1645 ) -> Result<AudienceRestrictingSharedFolder, V::Error> {
1646 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1647 }
1648
1649 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1650 mut map: V,
1651 optional: bool,
1652 ) -> Result<Option<AudienceRestrictingSharedFolder>, V::Error> {
1653 let mut field_shared_folder_id = None;
1654 let mut field_name = None;
1655 let mut field_audience = None;
1656 let mut nothing = true;
1657 while let Some(key) = map.next_key::<&str>()? {
1658 nothing = false;
1659 match key {
1660 "shared_folder_id" => {
1661 if field_shared_folder_id.is_some() {
1662 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
1663 }
1664 field_shared_folder_id = Some(map.next_value()?);
1665 }
1666 "name" => {
1667 if field_name.is_some() {
1668 return Err(::serde::de::Error::duplicate_field("name"));
1669 }
1670 field_name = Some(map.next_value()?);
1671 }
1672 "audience" => {
1673 if field_audience.is_some() {
1674 return Err(::serde::de::Error::duplicate_field("audience"));
1675 }
1676 field_audience = Some(map.next_value()?);
1677 }
1678 _ => {
1679 map.next_value::<::serde_json::Value>()?;
1681 }
1682 }
1683 }
1684 if optional && nothing {
1685 return Ok(None);
1686 }
1687 let result = AudienceRestrictingSharedFolder {
1688 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
1689 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
1690 audience: field_audience.ok_or_else(|| ::serde::de::Error::missing_field("audience"))?,
1691 };
1692 Ok(Some(result))
1693 }
1694
1695 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1696 &self,
1697 s: &mut S::SerializeStruct,
1698 ) -> Result<(), S::Error> {
1699 use serde::ser::SerializeStruct;
1700 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
1701 s.serialize_field("name", &self.name)?;
1702 s.serialize_field("audience", &self.audience)?;
1703 Ok(())
1704 }
1705}
1706
1707impl<'de> ::serde::de::Deserialize<'de> for AudienceRestrictingSharedFolder {
1708 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1709 use serde::de::{MapAccess, Visitor};
1711 struct StructVisitor;
1712 impl<'de> Visitor<'de> for StructVisitor {
1713 type Value = AudienceRestrictingSharedFolder;
1714 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1715 f.write_str("a AudienceRestrictingSharedFolder struct")
1716 }
1717 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1718 AudienceRestrictingSharedFolder::internal_deserialize(map)
1719 }
1720 }
1721 deserializer.deserialize_struct("AudienceRestrictingSharedFolder", AUDIENCE_RESTRICTING_SHARED_FOLDER_FIELDS, StructVisitor)
1722 }
1723}
1724
1725impl ::serde::ser::Serialize for AudienceRestrictingSharedFolder {
1726 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1727 use serde::ser::SerializeStruct;
1729 let mut s = serializer.serialize_struct("AudienceRestrictingSharedFolder", 3)?;
1730 self.internal_serialize::<S>(&mut s)?;
1731 s.end()
1732 }
1733}
1734
1735#[derive(Debug, Clone, PartialEq, Eq)]
1737#[non_exhaustive] pub enum ChangeLinkExpirationPolicy {
1739 Allowed,
1740 NotAllowed,
1741 Other,
1744}
1745
1746impl<'de> ::serde::de::Deserialize<'de> for ChangeLinkExpirationPolicy {
1747 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1748 use serde::de::{self, MapAccess, Visitor};
1750 struct EnumVisitor;
1751 impl<'de> Visitor<'de> for EnumVisitor {
1752 type Value = ChangeLinkExpirationPolicy;
1753 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1754 f.write_str("a ChangeLinkExpirationPolicy structure")
1755 }
1756 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1757 let tag: &str = match map.next_key()? {
1758 Some(".tag") => map.next_value()?,
1759 _ => return Err(de::Error::missing_field(".tag"))
1760 };
1761 let value = match tag {
1762 "allowed" => ChangeLinkExpirationPolicy::Allowed,
1763 "not_allowed" => ChangeLinkExpirationPolicy::NotAllowed,
1764 _ => ChangeLinkExpirationPolicy::Other,
1765 };
1766 crate::eat_json_fields(&mut map)?;
1767 Ok(value)
1768 }
1769 }
1770 const VARIANTS: &[&str] = &["allowed",
1771 "not_allowed",
1772 "other"];
1773 deserializer.deserialize_struct("ChangeLinkExpirationPolicy", VARIANTS, EnumVisitor)
1774 }
1775}
1776
1777impl ::serde::ser::Serialize for ChangeLinkExpirationPolicy {
1778 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1779 use serde::ser::SerializeStruct;
1781 match self {
1782 ChangeLinkExpirationPolicy::Allowed => {
1783 let mut s = serializer.serialize_struct("ChangeLinkExpirationPolicy", 1)?;
1785 s.serialize_field(".tag", "allowed")?;
1786 s.end()
1787 }
1788 ChangeLinkExpirationPolicy::NotAllowed => {
1789 let mut s = serializer.serialize_struct("ChangeLinkExpirationPolicy", 1)?;
1791 s.serialize_field(".tag", "not_allowed")?;
1792 s.end()
1793 }
1794 ChangeLinkExpirationPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1795 }
1796 }
1797}
1798
1799#[derive(Debug, Clone, PartialEq, Eq)]
1801#[non_exhaustive] pub struct CollectionLinkMetadata {
1803 pub url: String,
1805 pub visibility: Visibility,
1807 pub expires: Option<crate::types::common::DropboxTimestamp>,
1809}
1810
1811impl CollectionLinkMetadata {
1812 pub fn new(url: String, visibility: Visibility) -> Self {
1813 CollectionLinkMetadata {
1814 url,
1815 visibility,
1816 expires: None,
1817 }
1818 }
1819
1820 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
1821 self.expires = Some(value);
1822 self
1823 }
1824}
1825
1826const COLLECTION_LINK_METADATA_FIELDS: &[&str] = &["url",
1827 "visibility",
1828 "expires"];
1829impl CollectionLinkMetadata {
1830 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1831 map: V,
1832 ) -> Result<CollectionLinkMetadata, V::Error> {
1833 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1834 }
1835
1836 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1837 mut map: V,
1838 optional: bool,
1839 ) -> Result<Option<CollectionLinkMetadata>, V::Error> {
1840 let mut field_url = None;
1841 let mut field_visibility = None;
1842 let mut field_expires = None;
1843 let mut nothing = true;
1844 while let Some(key) = map.next_key::<&str>()? {
1845 nothing = false;
1846 match key {
1847 "url" => {
1848 if field_url.is_some() {
1849 return Err(::serde::de::Error::duplicate_field("url"));
1850 }
1851 field_url = Some(map.next_value()?);
1852 }
1853 "visibility" => {
1854 if field_visibility.is_some() {
1855 return Err(::serde::de::Error::duplicate_field("visibility"));
1856 }
1857 field_visibility = Some(map.next_value()?);
1858 }
1859 "expires" => {
1860 if field_expires.is_some() {
1861 return Err(::serde::de::Error::duplicate_field("expires"));
1862 }
1863 field_expires = Some(map.next_value()?);
1864 }
1865 _ => {
1866 map.next_value::<::serde_json::Value>()?;
1868 }
1869 }
1870 }
1871 if optional && nothing {
1872 return Ok(None);
1873 }
1874 let result = CollectionLinkMetadata {
1875 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
1876 visibility: field_visibility.ok_or_else(|| ::serde::de::Error::missing_field("visibility"))?,
1877 expires: field_expires.and_then(Option::flatten),
1878 };
1879 Ok(Some(result))
1880 }
1881
1882 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1883 &self,
1884 s: &mut S::SerializeStruct,
1885 ) -> Result<(), S::Error> {
1886 use serde::ser::SerializeStruct;
1887 s.serialize_field("url", &self.url)?;
1888 s.serialize_field("visibility", &self.visibility)?;
1889 if let Some(val) = &self.expires {
1890 s.serialize_field("expires", val)?;
1891 }
1892 Ok(())
1893 }
1894}
1895
1896impl<'de> ::serde::de::Deserialize<'de> for CollectionLinkMetadata {
1897 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1898 use serde::de::{MapAccess, Visitor};
1900 struct StructVisitor;
1901 impl<'de> Visitor<'de> for StructVisitor {
1902 type Value = CollectionLinkMetadata;
1903 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1904 f.write_str("a CollectionLinkMetadata struct")
1905 }
1906 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1907 CollectionLinkMetadata::internal_deserialize(map)
1908 }
1909 }
1910 deserializer.deserialize_struct("CollectionLinkMetadata", COLLECTION_LINK_METADATA_FIELDS, StructVisitor)
1911 }
1912}
1913
1914impl ::serde::ser::Serialize for CollectionLinkMetadata {
1915 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1916 use serde::ser::SerializeStruct;
1918 let mut s = serializer.serialize_struct("CollectionLinkMetadata", 3)?;
1919 self.internal_serialize::<S>(&mut s)?;
1920 s.end()
1921 }
1922}
1923
1924impl From<CollectionLinkMetadata> for LinkMetadata {
1926 fn from(subtype: CollectionLinkMetadata) -> Self {
1927 LinkMetadata::Collection(subtype)
1928 }
1929}
1930#[derive(Debug, Clone, PartialEq, Eq)]
1931#[non_exhaustive] pub struct CreateSharedLinkArg {
1933 pub path: String,
1935 pub short_url: bool,
1936 pub pending_upload: Option<PendingUploadMode>,
1940}
1941
1942impl CreateSharedLinkArg {
1943 pub fn new(path: String) -> Self {
1944 CreateSharedLinkArg {
1945 path,
1946 short_url: false,
1947 pending_upload: None,
1948 }
1949 }
1950
1951 pub fn with_short_url(mut self, value: bool) -> Self {
1952 self.short_url = value;
1953 self
1954 }
1955
1956 pub fn with_pending_upload(mut self, value: PendingUploadMode) -> Self {
1957 self.pending_upload = Some(value);
1958 self
1959 }
1960}
1961
1962const CREATE_SHARED_LINK_ARG_FIELDS: &[&str] = &["path",
1963 "short_url",
1964 "pending_upload"];
1965impl CreateSharedLinkArg {
1966 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1967 map: V,
1968 ) -> Result<CreateSharedLinkArg, V::Error> {
1969 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1970 }
1971
1972 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1973 mut map: V,
1974 optional: bool,
1975 ) -> Result<Option<CreateSharedLinkArg>, V::Error> {
1976 let mut field_path = None;
1977 let mut field_short_url = None;
1978 let mut field_pending_upload = None;
1979 let mut nothing = true;
1980 while let Some(key) = map.next_key::<&str>()? {
1981 nothing = false;
1982 match key {
1983 "path" => {
1984 if field_path.is_some() {
1985 return Err(::serde::de::Error::duplicate_field("path"));
1986 }
1987 field_path = Some(map.next_value()?);
1988 }
1989 "short_url" => {
1990 if field_short_url.is_some() {
1991 return Err(::serde::de::Error::duplicate_field("short_url"));
1992 }
1993 field_short_url = Some(map.next_value()?);
1994 }
1995 "pending_upload" => {
1996 if field_pending_upload.is_some() {
1997 return Err(::serde::de::Error::duplicate_field("pending_upload"));
1998 }
1999 field_pending_upload = Some(map.next_value()?);
2000 }
2001 _ => {
2002 map.next_value::<::serde_json::Value>()?;
2004 }
2005 }
2006 }
2007 if optional && nothing {
2008 return Ok(None);
2009 }
2010 let result = CreateSharedLinkArg {
2011 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
2012 short_url: field_short_url.unwrap_or(false),
2013 pending_upload: field_pending_upload.and_then(Option::flatten),
2014 };
2015 Ok(Some(result))
2016 }
2017
2018 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2019 &self,
2020 s: &mut S::SerializeStruct,
2021 ) -> Result<(), S::Error> {
2022 use serde::ser::SerializeStruct;
2023 s.serialize_field("path", &self.path)?;
2024 if self.short_url {
2025 s.serialize_field("short_url", &self.short_url)?;
2026 }
2027 if let Some(val) = &self.pending_upload {
2028 s.serialize_field("pending_upload", val)?;
2029 }
2030 Ok(())
2031 }
2032}
2033
2034impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkArg {
2035 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2036 use serde::de::{MapAccess, Visitor};
2038 struct StructVisitor;
2039 impl<'de> Visitor<'de> for StructVisitor {
2040 type Value = CreateSharedLinkArg;
2041 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2042 f.write_str("a CreateSharedLinkArg struct")
2043 }
2044 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2045 CreateSharedLinkArg::internal_deserialize(map)
2046 }
2047 }
2048 deserializer.deserialize_struct("CreateSharedLinkArg", CREATE_SHARED_LINK_ARG_FIELDS, StructVisitor)
2049 }
2050}
2051
2052impl ::serde::ser::Serialize for CreateSharedLinkArg {
2053 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2054 use serde::ser::SerializeStruct;
2056 let mut s = serializer.serialize_struct("CreateSharedLinkArg", 3)?;
2057 self.internal_serialize::<S>(&mut s)?;
2058 s.end()
2059 }
2060}
2061
2062#[derive(Debug, Clone, PartialEq, Eq)]
2063#[non_exhaustive] pub enum CreateSharedLinkError {
2065 Path(crate::types::files::LookupError),
2066 Other,
2069}
2070
2071impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkError {
2072 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2073 use serde::de::{self, MapAccess, Visitor};
2075 struct EnumVisitor;
2076 impl<'de> Visitor<'de> for EnumVisitor {
2077 type Value = CreateSharedLinkError;
2078 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2079 f.write_str("a CreateSharedLinkError structure")
2080 }
2081 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2082 let tag: &str = match map.next_key()? {
2083 Some(".tag") => map.next_value()?,
2084 _ => return Err(de::Error::missing_field(".tag"))
2085 };
2086 let value = match tag {
2087 "path" => {
2088 match map.next_key()? {
2089 Some("path") => CreateSharedLinkError::Path(map.next_value()?),
2090 None => return Err(de::Error::missing_field("path")),
2091 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2092 }
2093 }
2094 _ => CreateSharedLinkError::Other,
2095 };
2096 crate::eat_json_fields(&mut map)?;
2097 Ok(value)
2098 }
2099 }
2100 const VARIANTS: &[&str] = &["path",
2101 "other"];
2102 deserializer.deserialize_struct("CreateSharedLinkError", VARIANTS, EnumVisitor)
2103 }
2104}
2105
2106impl ::serde::ser::Serialize for CreateSharedLinkError {
2107 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2108 use serde::ser::SerializeStruct;
2110 match self {
2111 CreateSharedLinkError::Path(x) => {
2112 let mut s = serializer.serialize_struct("CreateSharedLinkError", 2)?;
2114 s.serialize_field(".tag", "path")?;
2115 s.serialize_field("path", x)?;
2116 s.end()
2117 }
2118 CreateSharedLinkError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
2119 }
2120 }
2121}
2122
2123impl ::std::error::Error for CreateSharedLinkError {
2124 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
2125 match self {
2126 CreateSharedLinkError::Path(inner) => Some(inner),
2127 _ => None,
2128 }
2129 }
2130}
2131
2132impl ::std::fmt::Display for CreateSharedLinkError {
2133 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2134 match self {
2135 CreateSharedLinkError::Path(inner) => write!(f, "CreateSharedLinkError: {}", inner),
2136 _ => write!(f, "{:?}", *self),
2137 }
2138 }
2139}
2140
2141#[derive(Debug, Clone, PartialEq, Eq)]
2142#[non_exhaustive] pub struct CreateSharedLinkWithSettingsArg {
2144 pub path: ReadPath,
2146 pub settings: Option<SharedLinkSettings>,
2148}
2149
2150impl CreateSharedLinkWithSettingsArg {
2151 pub fn new(path: ReadPath) -> Self {
2152 CreateSharedLinkWithSettingsArg {
2153 path,
2154 settings: None,
2155 }
2156 }
2157
2158 pub fn with_settings(mut self, value: SharedLinkSettings) -> Self {
2159 self.settings = Some(value);
2160 self
2161 }
2162}
2163
2164const CREATE_SHARED_LINK_WITH_SETTINGS_ARG_FIELDS: &[&str] = &["path",
2165 "settings"];
2166impl CreateSharedLinkWithSettingsArg {
2167 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2168 map: V,
2169 ) -> Result<CreateSharedLinkWithSettingsArg, V::Error> {
2170 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2171 }
2172
2173 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2174 mut map: V,
2175 optional: bool,
2176 ) -> Result<Option<CreateSharedLinkWithSettingsArg>, V::Error> {
2177 let mut field_path = None;
2178 let mut field_settings = None;
2179 let mut nothing = true;
2180 while let Some(key) = map.next_key::<&str>()? {
2181 nothing = false;
2182 match key {
2183 "path" => {
2184 if field_path.is_some() {
2185 return Err(::serde::de::Error::duplicate_field("path"));
2186 }
2187 field_path = Some(map.next_value()?);
2188 }
2189 "settings" => {
2190 if field_settings.is_some() {
2191 return Err(::serde::de::Error::duplicate_field("settings"));
2192 }
2193 field_settings = Some(map.next_value()?);
2194 }
2195 _ => {
2196 map.next_value::<::serde_json::Value>()?;
2198 }
2199 }
2200 }
2201 if optional && nothing {
2202 return Ok(None);
2203 }
2204 let result = CreateSharedLinkWithSettingsArg {
2205 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
2206 settings: field_settings.and_then(Option::flatten),
2207 };
2208 Ok(Some(result))
2209 }
2210
2211 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2212 &self,
2213 s: &mut S::SerializeStruct,
2214 ) -> Result<(), S::Error> {
2215 use serde::ser::SerializeStruct;
2216 s.serialize_field("path", &self.path)?;
2217 if let Some(val) = &self.settings {
2218 s.serialize_field("settings", val)?;
2219 }
2220 Ok(())
2221 }
2222}
2223
2224impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkWithSettingsArg {
2225 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2226 use serde::de::{MapAccess, Visitor};
2228 struct StructVisitor;
2229 impl<'de> Visitor<'de> for StructVisitor {
2230 type Value = CreateSharedLinkWithSettingsArg;
2231 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2232 f.write_str("a CreateSharedLinkWithSettingsArg struct")
2233 }
2234 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2235 CreateSharedLinkWithSettingsArg::internal_deserialize(map)
2236 }
2237 }
2238 deserializer.deserialize_struct("CreateSharedLinkWithSettingsArg", CREATE_SHARED_LINK_WITH_SETTINGS_ARG_FIELDS, StructVisitor)
2239 }
2240}
2241
2242impl ::serde::ser::Serialize for CreateSharedLinkWithSettingsArg {
2243 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2244 use serde::ser::SerializeStruct;
2246 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsArg", 2)?;
2247 self.internal_serialize::<S>(&mut s)?;
2248 s.end()
2249 }
2250}
2251
2252#[derive(Debug, Clone, PartialEq, Eq)]
2253pub enum CreateSharedLinkWithSettingsError {
2254 Path(crate::types::files::LookupError),
2255 EmailNotVerified,
2259 SharedLinkAlreadyExists(Option<SharedLinkAlreadyExistsMetadata>),
2265 SettingsError(SharedLinkSettingsError),
2267 AccessDenied,
2271 BannedMember,
2274 TooManySharedFolders,
2277}
2278
2279impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkWithSettingsError {
2280 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2281 use serde::de::{self, MapAccess, Visitor};
2283 struct EnumVisitor;
2284 impl<'de> Visitor<'de> for EnumVisitor {
2285 type Value = CreateSharedLinkWithSettingsError;
2286 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2287 f.write_str("a CreateSharedLinkWithSettingsError structure")
2288 }
2289 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2290 let tag: &str = match map.next_key()? {
2291 Some(".tag") => map.next_value()?,
2292 _ => return Err(de::Error::missing_field(".tag"))
2293 };
2294 let value = match tag {
2295 "path" => {
2296 match map.next_key()? {
2297 Some("path") => CreateSharedLinkWithSettingsError::Path(map.next_value()?),
2298 None => return Err(de::Error::missing_field("path")),
2299 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2300 }
2301 }
2302 "email_not_verified" => CreateSharedLinkWithSettingsError::EmailNotVerified,
2303 "shared_link_already_exists" => {
2304 match map.next_key()? {
2305 Some("shared_link_already_exists") => CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(map.next_value()?),
2306 None => CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(None),
2307 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2308 }
2309 }
2310 "settings_error" => {
2311 match map.next_key()? {
2312 Some("settings_error") => CreateSharedLinkWithSettingsError::SettingsError(map.next_value()?),
2313 None => return Err(de::Error::missing_field("settings_error")),
2314 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2315 }
2316 }
2317 "access_denied" => CreateSharedLinkWithSettingsError::AccessDenied,
2318 "banned_member" => CreateSharedLinkWithSettingsError::BannedMember,
2319 "too_many_shared_folders" => CreateSharedLinkWithSettingsError::TooManySharedFolders,
2320 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
2321 };
2322 crate::eat_json_fields(&mut map)?;
2323 Ok(value)
2324 }
2325 }
2326 const VARIANTS: &[&str] = &["path",
2327 "email_not_verified",
2328 "shared_link_already_exists",
2329 "settings_error",
2330 "access_denied",
2331 "banned_member",
2332 "too_many_shared_folders"];
2333 deserializer.deserialize_struct("CreateSharedLinkWithSettingsError", VARIANTS, EnumVisitor)
2334 }
2335}
2336
2337impl ::serde::ser::Serialize for CreateSharedLinkWithSettingsError {
2338 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2339 use serde::ser::SerializeStruct;
2341 match self {
2342 CreateSharedLinkWithSettingsError::Path(x) => {
2343 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 2)?;
2345 s.serialize_field(".tag", "path")?;
2346 s.serialize_field("path", x)?;
2347 s.end()
2348 }
2349 CreateSharedLinkWithSettingsError::EmailNotVerified => {
2350 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?;
2352 s.serialize_field(".tag", "email_not_verified")?;
2353 s.end()
2354 }
2355 CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(x) => {
2356 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 2)?;
2358 s.serialize_field(".tag", "shared_link_already_exists")?;
2359 s.serialize_field("shared_link_already_exists", x)?;
2360 s.end()
2361 }
2362 CreateSharedLinkWithSettingsError::SettingsError(x) => {
2363 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 2)?;
2365 s.serialize_field(".tag", "settings_error")?;
2366 s.serialize_field("settings_error", x)?;
2367 s.end()
2368 }
2369 CreateSharedLinkWithSettingsError::AccessDenied => {
2370 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?;
2372 s.serialize_field(".tag", "access_denied")?;
2373 s.end()
2374 }
2375 CreateSharedLinkWithSettingsError::BannedMember => {
2376 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?;
2378 s.serialize_field(".tag", "banned_member")?;
2379 s.end()
2380 }
2381 CreateSharedLinkWithSettingsError::TooManySharedFolders => {
2382 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?;
2384 s.serialize_field(".tag", "too_many_shared_folders")?;
2385 s.end()
2386 }
2387 }
2388 }
2389}
2390
2391impl ::std::error::Error for CreateSharedLinkWithSettingsError {
2392 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
2393 match self {
2394 CreateSharedLinkWithSettingsError::Path(inner) => Some(inner),
2395 CreateSharedLinkWithSettingsError::SettingsError(inner) => Some(inner),
2396 _ => None,
2397 }
2398 }
2399}
2400
2401impl ::std::fmt::Display for CreateSharedLinkWithSettingsError {
2402 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2403 match self {
2404 CreateSharedLinkWithSettingsError::Path(inner) => write!(f, "CreateSharedLinkWithSettingsError: {}", inner),
2405 CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(None) => f.write_str("shared_link_already_exists"),
2406 CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(Some(inner)) => write!(f, "shared_link_already_exists: {:?}", inner),
2407 CreateSharedLinkWithSettingsError::SettingsError(inner) => write!(f, "There is an error with the given settings: {}", inner),
2408 CreateSharedLinkWithSettingsError::TooManySharedFolders => f.write_str("Your Dropbox folder will have too many shared folders after the operation. https://help.dropbox.com/share/shared-folder-faq#Is-there-a-limit-to-the-number-of-shared-folders-I-can-create"),
2409 _ => write!(f, "{:?}", *self),
2410 }
2411 }
2412}
2413
2414#[derive(Debug, Clone, PartialEq, Eq)]
2417#[non_exhaustive] pub struct ExpectedSharedContentLinkMetadata {
2419 pub audience_options: Vec<LinkAudience>,
2424 pub current_audience: LinkAudience,
2426 pub link_permissions: Vec<LinkPermission>,
2428 pub password_protected: bool,
2430 pub access_level: Option<AccessLevel>,
2432 pub audience_restricting_shared_folder: Option<AudienceRestrictingSharedFolder>,
2434 pub expiry: Option<crate::types::common::DropboxTimestamp>,
2437}
2438
2439impl ExpectedSharedContentLinkMetadata {
2440 pub fn new(
2441 audience_options: Vec<LinkAudience>,
2442 current_audience: LinkAudience,
2443 link_permissions: Vec<LinkPermission>,
2444 password_protected: bool,
2445 ) -> Self {
2446 ExpectedSharedContentLinkMetadata {
2447 audience_options,
2448 current_audience,
2449 link_permissions,
2450 password_protected,
2451 access_level: None,
2452 audience_restricting_shared_folder: None,
2453 expiry: None,
2454 }
2455 }
2456
2457 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
2458 self.access_level = Some(value);
2459 self
2460 }
2461
2462 pub fn with_audience_restricting_shared_folder(
2463 mut self,
2464 value: AudienceRestrictingSharedFolder,
2465 ) -> Self {
2466 self.audience_restricting_shared_folder = Some(value);
2467 self
2468 }
2469
2470 pub fn with_expiry(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
2471 self.expiry = Some(value);
2472 self
2473 }
2474}
2475
2476const EXPECTED_SHARED_CONTENT_LINK_METADATA_FIELDS: &[&str] = &["audience_options",
2477 "current_audience",
2478 "link_permissions",
2479 "password_protected",
2480 "access_level",
2481 "audience_restricting_shared_folder",
2482 "expiry"];
2483impl ExpectedSharedContentLinkMetadata {
2484 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2485 map: V,
2486 ) -> Result<ExpectedSharedContentLinkMetadata, V::Error> {
2487 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2488 }
2489
2490 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2491 mut map: V,
2492 optional: bool,
2493 ) -> Result<Option<ExpectedSharedContentLinkMetadata>, V::Error> {
2494 let mut field_audience_options = None;
2495 let mut field_current_audience = None;
2496 let mut field_link_permissions = None;
2497 let mut field_password_protected = None;
2498 let mut field_access_level = None;
2499 let mut field_audience_restricting_shared_folder = None;
2500 let mut field_expiry = None;
2501 let mut nothing = true;
2502 while let Some(key) = map.next_key::<&str>()? {
2503 nothing = false;
2504 match key {
2505 "audience_options" => {
2506 if field_audience_options.is_some() {
2507 return Err(::serde::de::Error::duplicate_field("audience_options"));
2508 }
2509 field_audience_options = Some(map.next_value()?);
2510 }
2511 "current_audience" => {
2512 if field_current_audience.is_some() {
2513 return Err(::serde::de::Error::duplicate_field("current_audience"));
2514 }
2515 field_current_audience = Some(map.next_value()?);
2516 }
2517 "link_permissions" => {
2518 if field_link_permissions.is_some() {
2519 return Err(::serde::de::Error::duplicate_field("link_permissions"));
2520 }
2521 field_link_permissions = Some(map.next_value()?);
2522 }
2523 "password_protected" => {
2524 if field_password_protected.is_some() {
2525 return Err(::serde::de::Error::duplicate_field("password_protected"));
2526 }
2527 field_password_protected = Some(map.next_value()?);
2528 }
2529 "access_level" => {
2530 if field_access_level.is_some() {
2531 return Err(::serde::de::Error::duplicate_field("access_level"));
2532 }
2533 field_access_level = Some(map.next_value()?);
2534 }
2535 "audience_restricting_shared_folder" => {
2536 if field_audience_restricting_shared_folder.is_some() {
2537 return Err(::serde::de::Error::duplicate_field("audience_restricting_shared_folder"));
2538 }
2539 field_audience_restricting_shared_folder = Some(map.next_value()?);
2540 }
2541 "expiry" => {
2542 if field_expiry.is_some() {
2543 return Err(::serde::de::Error::duplicate_field("expiry"));
2544 }
2545 field_expiry = Some(map.next_value()?);
2546 }
2547 _ => {
2548 map.next_value::<::serde_json::Value>()?;
2550 }
2551 }
2552 }
2553 if optional && nothing {
2554 return Ok(None);
2555 }
2556 let result = ExpectedSharedContentLinkMetadata {
2557 audience_options: field_audience_options.ok_or_else(|| ::serde::de::Error::missing_field("audience_options"))?,
2558 current_audience: field_current_audience.ok_or_else(|| ::serde::de::Error::missing_field("current_audience"))?,
2559 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
2560 password_protected: field_password_protected.ok_or_else(|| ::serde::de::Error::missing_field("password_protected"))?,
2561 access_level: field_access_level.and_then(Option::flatten),
2562 audience_restricting_shared_folder: field_audience_restricting_shared_folder.and_then(Option::flatten),
2563 expiry: field_expiry.and_then(Option::flatten),
2564 };
2565 Ok(Some(result))
2566 }
2567
2568 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2569 &self,
2570 s: &mut S::SerializeStruct,
2571 ) -> Result<(), S::Error> {
2572 use serde::ser::SerializeStruct;
2573 s.serialize_field("audience_options", &self.audience_options)?;
2574 s.serialize_field("current_audience", &self.current_audience)?;
2575 s.serialize_field("link_permissions", &self.link_permissions)?;
2576 s.serialize_field("password_protected", &self.password_protected)?;
2577 if let Some(val) = &self.access_level {
2578 s.serialize_field("access_level", val)?;
2579 }
2580 if let Some(val) = &self.audience_restricting_shared_folder {
2581 s.serialize_field("audience_restricting_shared_folder", val)?;
2582 }
2583 if let Some(val) = &self.expiry {
2584 s.serialize_field("expiry", val)?;
2585 }
2586 Ok(())
2587 }
2588}
2589
2590impl<'de> ::serde::de::Deserialize<'de> for ExpectedSharedContentLinkMetadata {
2591 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2592 use serde::de::{MapAccess, Visitor};
2594 struct StructVisitor;
2595 impl<'de> Visitor<'de> for StructVisitor {
2596 type Value = ExpectedSharedContentLinkMetadata;
2597 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2598 f.write_str("a ExpectedSharedContentLinkMetadata struct")
2599 }
2600 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2601 ExpectedSharedContentLinkMetadata::internal_deserialize(map)
2602 }
2603 }
2604 deserializer.deserialize_struct("ExpectedSharedContentLinkMetadata", EXPECTED_SHARED_CONTENT_LINK_METADATA_FIELDS, StructVisitor)
2605 }
2606}
2607
2608impl ::serde::ser::Serialize for ExpectedSharedContentLinkMetadata {
2609 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2610 use serde::ser::SerializeStruct;
2612 let mut s = serializer.serialize_struct("ExpectedSharedContentLinkMetadata", 7)?;
2613 self.internal_serialize::<S>(&mut s)?;
2614 s.end()
2615 }
2616}
2617
2618impl From<ExpectedSharedContentLinkMetadata> for SharedContentLinkMetadataBase {
2620 fn from(subtype: ExpectedSharedContentLinkMetadata) -> Self {
2621 Self {
2622 audience_options: subtype.audience_options,
2623 current_audience: subtype.current_audience,
2624 link_permissions: subtype.link_permissions,
2625 password_protected: subtype.password_protected,
2626 access_level: subtype.access_level,
2627 audience_restricting_shared_folder: subtype.audience_restricting_shared_folder,
2628 expiry: subtype.expiry,
2629 }
2630 }
2631}
2632#[derive(Debug, Clone, PartialEq, Eq)]
2634#[non_exhaustive] pub enum FileAction {
2636 DisableViewerInfo,
2638 EditContents,
2640 EnableViewerInfo,
2642 InviteViewer,
2644 InviteViewerNoComment,
2646 InviteEditor,
2648 Unshare,
2650 RelinquishMembership,
2652 ShareLink,
2654 CreateLink,
2656 CreateViewLink,
2658 CreateEditLink,
2660 Other,
2663}
2664
2665impl<'de> ::serde::de::Deserialize<'de> for FileAction {
2666 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2667 use serde::de::{self, MapAccess, Visitor};
2669 struct EnumVisitor;
2670 impl<'de> Visitor<'de> for EnumVisitor {
2671 type Value = FileAction;
2672 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2673 f.write_str("a FileAction structure")
2674 }
2675 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2676 let tag: &str = match map.next_key()? {
2677 Some(".tag") => map.next_value()?,
2678 _ => return Err(de::Error::missing_field(".tag"))
2679 };
2680 let value = match tag {
2681 "disable_viewer_info" => FileAction::DisableViewerInfo,
2682 "edit_contents" => FileAction::EditContents,
2683 "enable_viewer_info" => FileAction::EnableViewerInfo,
2684 "invite_viewer" => FileAction::InviteViewer,
2685 "invite_viewer_no_comment" => FileAction::InviteViewerNoComment,
2686 "invite_editor" => FileAction::InviteEditor,
2687 "unshare" => FileAction::Unshare,
2688 "relinquish_membership" => FileAction::RelinquishMembership,
2689 "share_link" => FileAction::ShareLink,
2690 "create_link" => FileAction::CreateLink,
2691 "create_view_link" => FileAction::CreateViewLink,
2692 "create_edit_link" => FileAction::CreateEditLink,
2693 _ => FileAction::Other,
2694 };
2695 crate::eat_json_fields(&mut map)?;
2696 Ok(value)
2697 }
2698 }
2699 const VARIANTS: &[&str] = &["disable_viewer_info",
2700 "edit_contents",
2701 "enable_viewer_info",
2702 "invite_viewer",
2703 "invite_viewer_no_comment",
2704 "invite_editor",
2705 "unshare",
2706 "relinquish_membership",
2707 "share_link",
2708 "create_link",
2709 "create_view_link",
2710 "create_edit_link",
2711 "other"];
2712 deserializer.deserialize_struct("FileAction", VARIANTS, EnumVisitor)
2713 }
2714}
2715
2716impl ::serde::ser::Serialize for FileAction {
2717 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2718 use serde::ser::SerializeStruct;
2720 match self {
2721 FileAction::DisableViewerInfo => {
2722 let mut s = serializer.serialize_struct("FileAction", 1)?;
2724 s.serialize_field(".tag", "disable_viewer_info")?;
2725 s.end()
2726 }
2727 FileAction::EditContents => {
2728 let mut s = serializer.serialize_struct("FileAction", 1)?;
2730 s.serialize_field(".tag", "edit_contents")?;
2731 s.end()
2732 }
2733 FileAction::EnableViewerInfo => {
2734 let mut s = serializer.serialize_struct("FileAction", 1)?;
2736 s.serialize_field(".tag", "enable_viewer_info")?;
2737 s.end()
2738 }
2739 FileAction::InviteViewer => {
2740 let mut s = serializer.serialize_struct("FileAction", 1)?;
2742 s.serialize_field(".tag", "invite_viewer")?;
2743 s.end()
2744 }
2745 FileAction::InviteViewerNoComment => {
2746 let mut s = serializer.serialize_struct("FileAction", 1)?;
2748 s.serialize_field(".tag", "invite_viewer_no_comment")?;
2749 s.end()
2750 }
2751 FileAction::InviteEditor => {
2752 let mut s = serializer.serialize_struct("FileAction", 1)?;
2754 s.serialize_field(".tag", "invite_editor")?;
2755 s.end()
2756 }
2757 FileAction::Unshare => {
2758 let mut s = serializer.serialize_struct("FileAction", 1)?;
2760 s.serialize_field(".tag", "unshare")?;
2761 s.end()
2762 }
2763 FileAction::RelinquishMembership => {
2764 let mut s = serializer.serialize_struct("FileAction", 1)?;
2766 s.serialize_field(".tag", "relinquish_membership")?;
2767 s.end()
2768 }
2769 FileAction::ShareLink => {
2770 let mut s = serializer.serialize_struct("FileAction", 1)?;
2772 s.serialize_field(".tag", "share_link")?;
2773 s.end()
2774 }
2775 FileAction::CreateLink => {
2776 let mut s = serializer.serialize_struct("FileAction", 1)?;
2778 s.serialize_field(".tag", "create_link")?;
2779 s.end()
2780 }
2781 FileAction::CreateViewLink => {
2782 let mut s = serializer.serialize_struct("FileAction", 1)?;
2784 s.serialize_field(".tag", "create_view_link")?;
2785 s.end()
2786 }
2787 FileAction::CreateEditLink => {
2788 let mut s = serializer.serialize_struct("FileAction", 1)?;
2790 s.serialize_field(".tag", "create_edit_link")?;
2791 s.end()
2792 }
2793 FileAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
2794 }
2795 }
2796}
2797
2798#[derive(Debug, Clone, PartialEq, Eq)]
2799#[non_exhaustive] pub enum FileErrorResult {
2801 FileNotFoundError(crate::types::files::Id),
2803 InvalidFileActionError(crate::types::files::Id),
2805 PermissionDeniedError(crate::types::files::Id),
2807 Other,
2810}
2811
2812impl<'de> ::serde::de::Deserialize<'de> for FileErrorResult {
2813 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2814 use serde::de::{self, MapAccess, Visitor};
2816 struct EnumVisitor;
2817 impl<'de> Visitor<'de> for EnumVisitor {
2818 type Value = FileErrorResult;
2819 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2820 f.write_str("a FileErrorResult structure")
2821 }
2822 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2823 let tag: &str = match map.next_key()? {
2824 Some(".tag") => map.next_value()?,
2825 _ => return Err(de::Error::missing_field(".tag"))
2826 };
2827 let value = match tag {
2828 "file_not_found_error" => {
2829 match map.next_key()? {
2830 Some("file_not_found_error") => FileErrorResult::FileNotFoundError(map.next_value()?),
2831 None => return Err(de::Error::missing_field("file_not_found_error")),
2832 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2833 }
2834 }
2835 "invalid_file_action_error" => {
2836 match map.next_key()? {
2837 Some("invalid_file_action_error") => FileErrorResult::InvalidFileActionError(map.next_value()?),
2838 None => return Err(de::Error::missing_field("invalid_file_action_error")),
2839 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2840 }
2841 }
2842 "permission_denied_error" => {
2843 match map.next_key()? {
2844 Some("permission_denied_error") => FileErrorResult::PermissionDeniedError(map.next_value()?),
2845 None => return Err(de::Error::missing_field("permission_denied_error")),
2846 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2847 }
2848 }
2849 _ => FileErrorResult::Other,
2850 };
2851 crate::eat_json_fields(&mut map)?;
2852 Ok(value)
2853 }
2854 }
2855 const VARIANTS: &[&str] = &["file_not_found_error",
2856 "invalid_file_action_error",
2857 "permission_denied_error",
2858 "other"];
2859 deserializer.deserialize_struct("FileErrorResult", VARIANTS, EnumVisitor)
2860 }
2861}
2862
2863impl ::serde::ser::Serialize for FileErrorResult {
2864 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2865 use serde::ser::SerializeStruct;
2867 match self {
2868 FileErrorResult::FileNotFoundError(x) => {
2869 let mut s = serializer.serialize_struct("FileErrorResult", 2)?;
2871 s.serialize_field(".tag", "file_not_found_error")?;
2872 s.serialize_field("file_not_found_error", x)?;
2873 s.end()
2874 }
2875 FileErrorResult::InvalidFileActionError(x) => {
2876 let mut s = serializer.serialize_struct("FileErrorResult", 2)?;
2878 s.serialize_field(".tag", "invalid_file_action_error")?;
2879 s.serialize_field("invalid_file_action_error", x)?;
2880 s.end()
2881 }
2882 FileErrorResult::PermissionDeniedError(x) => {
2883 let mut s = serializer.serialize_struct("FileErrorResult", 2)?;
2885 s.serialize_field(".tag", "permission_denied_error")?;
2886 s.serialize_field("permission_denied_error", x)?;
2887 s.end()
2888 }
2889 FileErrorResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
2890 }
2891 }
2892}
2893
2894#[derive(Debug, Clone, PartialEq, Eq)]
2896#[non_exhaustive] pub struct FileLinkMetadata {
2898 pub url: String,
2900 pub name: String,
2902 pub link_permissions: LinkPermissions,
2904 pub client_modified: crate::types::common::DropboxTimestamp,
2909 pub server_modified: crate::types::common::DropboxTimestamp,
2911 pub rev: Rev,
2914 pub size: u64,
2916 pub id: Option<Id>,
2918 pub expires: Option<crate::types::common::DropboxTimestamp>,
2920 pub path_lower: Option<String>,
2924 pub team_member_info: Option<TeamMemberInfo>,
2927 pub content_owner_team_info: Option<TeamInfo>,
2931}
2932
2933impl FileLinkMetadata {
2934 pub fn new(
2935 url: String,
2936 name: String,
2937 link_permissions: LinkPermissions,
2938 client_modified: crate::types::common::DropboxTimestamp,
2939 server_modified: crate::types::common::DropboxTimestamp,
2940 rev: Rev,
2941 size: u64,
2942 ) -> Self {
2943 FileLinkMetadata {
2944 url,
2945 name,
2946 link_permissions,
2947 client_modified,
2948 server_modified,
2949 rev,
2950 size,
2951 id: None,
2952 expires: None,
2953 path_lower: None,
2954 team_member_info: None,
2955 content_owner_team_info: None,
2956 }
2957 }
2958
2959 pub fn with_id(mut self, value: Id) -> Self {
2960 self.id = Some(value);
2961 self
2962 }
2963
2964 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
2965 self.expires = Some(value);
2966 self
2967 }
2968
2969 pub fn with_path_lower(mut self, value: String) -> Self {
2970 self.path_lower = Some(value);
2971 self
2972 }
2973
2974 pub fn with_team_member_info(mut self, value: TeamMemberInfo) -> Self {
2975 self.team_member_info = Some(value);
2976 self
2977 }
2978
2979 pub fn with_content_owner_team_info(mut self, value: TeamInfo) -> Self {
2980 self.content_owner_team_info = Some(value);
2981 self
2982 }
2983}
2984
2985const FILE_LINK_METADATA_FIELDS: &[&str] = &["url",
2986 "name",
2987 "link_permissions",
2988 "client_modified",
2989 "server_modified",
2990 "rev",
2991 "size",
2992 "id",
2993 "expires",
2994 "path_lower",
2995 "team_member_info",
2996 "content_owner_team_info"];
2997impl FileLinkMetadata {
2998 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2999 map: V,
3000 ) -> Result<FileLinkMetadata, V::Error> {
3001 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3002 }
3003
3004 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3005 mut map: V,
3006 optional: bool,
3007 ) -> Result<Option<FileLinkMetadata>, V::Error> {
3008 let mut field_url = None;
3009 let mut field_name = None;
3010 let mut field_link_permissions = None;
3011 let mut field_client_modified = None;
3012 let mut field_server_modified = None;
3013 let mut field_rev = None;
3014 let mut field_size = None;
3015 let mut field_id = None;
3016 let mut field_expires = None;
3017 let mut field_path_lower = None;
3018 let mut field_team_member_info = None;
3019 let mut field_content_owner_team_info = None;
3020 let mut nothing = true;
3021 while let Some(key) = map.next_key::<&str>()? {
3022 nothing = false;
3023 match key {
3024 "url" => {
3025 if field_url.is_some() {
3026 return Err(::serde::de::Error::duplicate_field("url"));
3027 }
3028 field_url = Some(map.next_value()?);
3029 }
3030 "name" => {
3031 if field_name.is_some() {
3032 return Err(::serde::de::Error::duplicate_field("name"));
3033 }
3034 field_name = Some(map.next_value()?);
3035 }
3036 "link_permissions" => {
3037 if field_link_permissions.is_some() {
3038 return Err(::serde::de::Error::duplicate_field("link_permissions"));
3039 }
3040 field_link_permissions = Some(map.next_value()?);
3041 }
3042 "client_modified" => {
3043 if field_client_modified.is_some() {
3044 return Err(::serde::de::Error::duplicate_field("client_modified"));
3045 }
3046 field_client_modified = Some(map.next_value()?);
3047 }
3048 "server_modified" => {
3049 if field_server_modified.is_some() {
3050 return Err(::serde::de::Error::duplicate_field("server_modified"));
3051 }
3052 field_server_modified = Some(map.next_value()?);
3053 }
3054 "rev" => {
3055 if field_rev.is_some() {
3056 return Err(::serde::de::Error::duplicate_field("rev"));
3057 }
3058 field_rev = Some(map.next_value()?);
3059 }
3060 "size" => {
3061 if field_size.is_some() {
3062 return Err(::serde::de::Error::duplicate_field("size"));
3063 }
3064 field_size = Some(map.next_value()?);
3065 }
3066 "id" => {
3067 if field_id.is_some() {
3068 return Err(::serde::de::Error::duplicate_field("id"));
3069 }
3070 field_id = Some(map.next_value()?);
3071 }
3072 "expires" => {
3073 if field_expires.is_some() {
3074 return Err(::serde::de::Error::duplicate_field("expires"));
3075 }
3076 field_expires = Some(map.next_value()?);
3077 }
3078 "path_lower" => {
3079 if field_path_lower.is_some() {
3080 return Err(::serde::de::Error::duplicate_field("path_lower"));
3081 }
3082 field_path_lower = Some(map.next_value()?);
3083 }
3084 "team_member_info" => {
3085 if field_team_member_info.is_some() {
3086 return Err(::serde::de::Error::duplicate_field("team_member_info"));
3087 }
3088 field_team_member_info = Some(map.next_value()?);
3089 }
3090 "content_owner_team_info" => {
3091 if field_content_owner_team_info.is_some() {
3092 return Err(::serde::de::Error::duplicate_field("content_owner_team_info"));
3093 }
3094 field_content_owner_team_info = Some(map.next_value()?);
3095 }
3096 _ => {
3097 map.next_value::<::serde_json::Value>()?;
3099 }
3100 }
3101 }
3102 if optional && nothing {
3103 return Ok(None);
3104 }
3105 let result = FileLinkMetadata {
3106 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
3107 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
3108 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
3109 client_modified: field_client_modified.ok_or_else(|| ::serde::de::Error::missing_field("client_modified"))?,
3110 server_modified: field_server_modified.ok_or_else(|| ::serde::de::Error::missing_field("server_modified"))?,
3111 rev: field_rev.ok_or_else(|| ::serde::de::Error::missing_field("rev"))?,
3112 size: field_size.ok_or_else(|| ::serde::de::Error::missing_field("size"))?,
3113 id: field_id.and_then(Option::flatten),
3114 expires: field_expires.and_then(Option::flatten),
3115 path_lower: field_path_lower.and_then(Option::flatten),
3116 team_member_info: field_team_member_info.and_then(Option::flatten),
3117 content_owner_team_info: field_content_owner_team_info.and_then(Option::flatten),
3118 };
3119 Ok(Some(result))
3120 }
3121
3122 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3123 &self,
3124 s: &mut S::SerializeStruct,
3125 ) -> Result<(), S::Error> {
3126 use serde::ser::SerializeStruct;
3127 s.serialize_field("url", &self.url)?;
3128 s.serialize_field("name", &self.name)?;
3129 s.serialize_field("link_permissions", &self.link_permissions)?;
3130 s.serialize_field("client_modified", &self.client_modified)?;
3131 s.serialize_field("server_modified", &self.server_modified)?;
3132 s.serialize_field("rev", &self.rev)?;
3133 s.serialize_field("size", &self.size)?;
3134 if let Some(val) = &self.id {
3135 s.serialize_field("id", val)?;
3136 }
3137 if let Some(val) = &self.expires {
3138 s.serialize_field("expires", val)?;
3139 }
3140 if let Some(val) = &self.path_lower {
3141 s.serialize_field("path_lower", val)?;
3142 }
3143 if let Some(val) = &self.team_member_info {
3144 s.serialize_field("team_member_info", val)?;
3145 }
3146 if let Some(val) = &self.content_owner_team_info {
3147 s.serialize_field("content_owner_team_info", val)?;
3148 }
3149 Ok(())
3150 }
3151}
3152
3153impl<'de> ::serde::de::Deserialize<'de> for FileLinkMetadata {
3154 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3155 use serde::de::{MapAccess, Visitor};
3157 struct StructVisitor;
3158 impl<'de> Visitor<'de> for StructVisitor {
3159 type Value = FileLinkMetadata;
3160 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3161 f.write_str("a FileLinkMetadata struct")
3162 }
3163 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3164 FileLinkMetadata::internal_deserialize(map)
3165 }
3166 }
3167 deserializer.deserialize_struct("FileLinkMetadata", FILE_LINK_METADATA_FIELDS, StructVisitor)
3168 }
3169}
3170
3171impl ::serde::ser::Serialize for FileLinkMetadata {
3172 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3173 use serde::ser::SerializeStruct;
3175 let mut s = serializer.serialize_struct("FileLinkMetadata", 12)?;
3176 self.internal_serialize::<S>(&mut s)?;
3177 s.end()
3178 }
3179}
3180
3181impl From<FileLinkMetadata> for SharedLinkMetadata {
3183 fn from(subtype: FileLinkMetadata) -> Self {
3184 SharedLinkMetadata::File(subtype)
3185 }
3186}
3187#[derive(Debug, Clone, PartialEq, Eq)]
3188#[non_exhaustive] pub enum FileMemberActionError {
3190 InvalidMember,
3192 NoPermission,
3194 AccessError(SharingFileAccessError),
3196 NoExplicitAccess(MemberAccessLevelResult),
3200 Other,
3203}
3204
3205impl<'de> ::serde::de::Deserialize<'de> for FileMemberActionError {
3206 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3207 use serde::de::{self, MapAccess, Visitor};
3209 struct EnumVisitor;
3210 impl<'de> Visitor<'de> for EnumVisitor {
3211 type Value = FileMemberActionError;
3212 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3213 f.write_str("a FileMemberActionError structure")
3214 }
3215 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3216 let tag: &str = match map.next_key()? {
3217 Some(".tag") => map.next_value()?,
3218 _ => return Err(de::Error::missing_field(".tag"))
3219 };
3220 let value = match tag {
3221 "invalid_member" => FileMemberActionError::InvalidMember,
3222 "no_permission" => FileMemberActionError::NoPermission,
3223 "access_error" => {
3224 match map.next_key()? {
3225 Some("access_error") => FileMemberActionError::AccessError(map.next_value()?),
3226 None => return Err(de::Error::missing_field("access_error")),
3227 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3228 }
3229 }
3230 "no_explicit_access" => FileMemberActionError::NoExplicitAccess(MemberAccessLevelResult::internal_deserialize(&mut map)?),
3231 _ => FileMemberActionError::Other,
3232 };
3233 crate::eat_json_fields(&mut map)?;
3234 Ok(value)
3235 }
3236 }
3237 const VARIANTS: &[&str] = &["invalid_member",
3238 "no_permission",
3239 "access_error",
3240 "no_explicit_access",
3241 "other"];
3242 deserializer.deserialize_struct("FileMemberActionError", VARIANTS, EnumVisitor)
3243 }
3244}
3245
3246impl ::serde::ser::Serialize for FileMemberActionError {
3247 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3248 use serde::ser::SerializeStruct;
3250 match self {
3251 FileMemberActionError::InvalidMember => {
3252 let mut s = serializer.serialize_struct("FileMemberActionError", 1)?;
3254 s.serialize_field(".tag", "invalid_member")?;
3255 s.end()
3256 }
3257 FileMemberActionError::NoPermission => {
3258 let mut s = serializer.serialize_struct("FileMemberActionError", 1)?;
3260 s.serialize_field(".tag", "no_permission")?;
3261 s.end()
3262 }
3263 FileMemberActionError::AccessError(x) => {
3264 let mut s = serializer.serialize_struct("FileMemberActionError", 2)?;
3266 s.serialize_field(".tag", "access_error")?;
3267 s.serialize_field("access_error", x)?;
3268 s.end()
3269 }
3270 FileMemberActionError::NoExplicitAccess(x) => {
3271 let mut s = serializer.serialize_struct("FileMemberActionError", 4)?;
3273 s.serialize_field(".tag", "no_explicit_access")?;
3274 x.internal_serialize::<S>(&mut s)?;
3275 s.end()
3276 }
3277 FileMemberActionError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3278 }
3279 }
3280}
3281
3282impl ::std::error::Error for FileMemberActionError {
3283 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
3284 match self {
3285 FileMemberActionError::AccessError(inner) => Some(inner),
3286 _ => None,
3287 }
3288 }
3289}
3290
3291impl ::std::fmt::Display for FileMemberActionError {
3292 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3293 match self {
3294 FileMemberActionError::InvalidMember => f.write_str("Specified member was not found."),
3295 FileMemberActionError::NoPermission => f.write_str("User does not have permission to perform this action on this member."),
3296 FileMemberActionError::AccessError(inner) => write!(f, "Specified file was invalid or user does not have access: {}", inner),
3297 FileMemberActionError::NoExplicitAccess(inner) => write!(f, "The action cannot be completed because the target member does not have explicit access to the file. The return value is the access that the member has to the file from a parent folder: {:?}", inner),
3298 _ => write!(f, "{:?}", *self),
3299 }
3300 }
3301}
3302
3303#[derive(Debug, Clone, PartialEq, Eq)]
3304pub enum FileMemberActionIndividualResult {
3305 Success(Option<AccessLevel>),
3310 MemberError(FileMemberActionError),
3312}
3313
3314impl<'de> ::serde::de::Deserialize<'de> for FileMemberActionIndividualResult {
3315 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3316 use serde::de::{self, MapAccess, Visitor};
3318 struct EnumVisitor;
3319 impl<'de> Visitor<'de> for EnumVisitor {
3320 type Value = FileMemberActionIndividualResult;
3321 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3322 f.write_str("a FileMemberActionIndividualResult structure")
3323 }
3324 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3325 let tag: &str = match map.next_key()? {
3326 Some(".tag") => map.next_value()?,
3327 _ => return Err(de::Error::missing_field(".tag"))
3328 };
3329 let value = match tag {
3330 "success" => {
3331 match map.next_key()? {
3332 Some("success") => FileMemberActionIndividualResult::Success(map.next_value()?),
3333 None => FileMemberActionIndividualResult::Success(None),
3334 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3335 }
3336 }
3337 "member_error" => {
3338 match map.next_key()? {
3339 Some("member_error") => FileMemberActionIndividualResult::MemberError(map.next_value()?),
3340 None => return Err(de::Error::missing_field("member_error")),
3341 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3342 }
3343 }
3344 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
3345 };
3346 crate::eat_json_fields(&mut map)?;
3347 Ok(value)
3348 }
3349 }
3350 const VARIANTS: &[&str] = &["success",
3351 "member_error"];
3352 deserializer.deserialize_struct("FileMemberActionIndividualResult", VARIANTS, EnumVisitor)
3353 }
3354}
3355
3356impl ::serde::ser::Serialize for FileMemberActionIndividualResult {
3357 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3358 use serde::ser::SerializeStruct;
3360 match self {
3361 FileMemberActionIndividualResult::Success(x) => {
3362 let mut s = serializer.serialize_struct("FileMemberActionIndividualResult", 2)?;
3364 s.serialize_field(".tag", "success")?;
3365 s.serialize_field("success", x)?;
3366 s.end()
3367 }
3368 FileMemberActionIndividualResult::MemberError(x) => {
3369 let mut s = serializer.serialize_struct("FileMemberActionIndividualResult", 2)?;
3371 s.serialize_field(".tag", "member_error")?;
3372 s.serialize_field("member_error", x)?;
3373 s.end()
3374 }
3375 }
3376 }
3377}
3378
3379#[derive(Debug, Clone, PartialEq, Eq)]
3381#[non_exhaustive] pub struct FileMemberActionResult {
3383 pub member: MemberSelector,
3385 pub result: FileMemberActionIndividualResult,
3387 pub sckey_sha1: Option<String>,
3389 pub invitation_signature: Option<Vec<String>>,
3392}
3393
3394impl FileMemberActionResult {
3395 pub fn new(member: MemberSelector, result: FileMemberActionIndividualResult) -> Self {
3396 FileMemberActionResult {
3397 member,
3398 result,
3399 sckey_sha1: None,
3400 invitation_signature: None,
3401 }
3402 }
3403
3404 pub fn with_sckey_sha1(mut self, value: String) -> Self {
3405 self.sckey_sha1 = Some(value);
3406 self
3407 }
3408
3409 pub fn with_invitation_signature(mut self, value: Vec<String>) -> Self {
3410 self.invitation_signature = Some(value);
3411 self
3412 }
3413}
3414
3415const FILE_MEMBER_ACTION_RESULT_FIELDS: &[&str] = &["member",
3416 "result",
3417 "sckey_sha1",
3418 "invitation_signature"];
3419impl FileMemberActionResult {
3420 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3421 map: V,
3422 ) -> Result<FileMemberActionResult, V::Error> {
3423 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3424 }
3425
3426 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3427 mut map: V,
3428 optional: bool,
3429 ) -> Result<Option<FileMemberActionResult>, V::Error> {
3430 let mut field_member = None;
3431 let mut field_result = None;
3432 let mut field_sckey_sha1 = None;
3433 let mut field_invitation_signature = None;
3434 let mut nothing = true;
3435 while let Some(key) = map.next_key::<&str>()? {
3436 nothing = false;
3437 match key {
3438 "member" => {
3439 if field_member.is_some() {
3440 return Err(::serde::de::Error::duplicate_field("member"));
3441 }
3442 field_member = Some(map.next_value()?);
3443 }
3444 "result" => {
3445 if field_result.is_some() {
3446 return Err(::serde::de::Error::duplicate_field("result"));
3447 }
3448 field_result = Some(map.next_value()?);
3449 }
3450 "sckey_sha1" => {
3451 if field_sckey_sha1.is_some() {
3452 return Err(::serde::de::Error::duplicate_field("sckey_sha1"));
3453 }
3454 field_sckey_sha1 = Some(map.next_value()?);
3455 }
3456 "invitation_signature" => {
3457 if field_invitation_signature.is_some() {
3458 return Err(::serde::de::Error::duplicate_field("invitation_signature"));
3459 }
3460 field_invitation_signature = Some(map.next_value()?);
3461 }
3462 _ => {
3463 map.next_value::<::serde_json::Value>()?;
3465 }
3466 }
3467 }
3468 if optional && nothing {
3469 return Ok(None);
3470 }
3471 let result = FileMemberActionResult {
3472 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
3473 result: field_result.ok_or_else(|| ::serde::de::Error::missing_field("result"))?,
3474 sckey_sha1: field_sckey_sha1.and_then(Option::flatten),
3475 invitation_signature: field_invitation_signature.and_then(Option::flatten),
3476 };
3477 Ok(Some(result))
3478 }
3479
3480 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3481 &self,
3482 s: &mut S::SerializeStruct,
3483 ) -> Result<(), S::Error> {
3484 use serde::ser::SerializeStruct;
3485 s.serialize_field("member", &self.member)?;
3486 s.serialize_field("result", &self.result)?;
3487 if let Some(val) = &self.sckey_sha1 {
3488 s.serialize_field("sckey_sha1", val)?;
3489 }
3490 if let Some(val) = &self.invitation_signature {
3491 s.serialize_field("invitation_signature", val)?;
3492 }
3493 Ok(())
3494 }
3495}
3496
3497impl<'de> ::serde::de::Deserialize<'de> for FileMemberActionResult {
3498 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3499 use serde::de::{MapAccess, Visitor};
3501 struct StructVisitor;
3502 impl<'de> Visitor<'de> for StructVisitor {
3503 type Value = FileMemberActionResult;
3504 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3505 f.write_str("a FileMemberActionResult struct")
3506 }
3507 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3508 FileMemberActionResult::internal_deserialize(map)
3509 }
3510 }
3511 deserializer.deserialize_struct("FileMemberActionResult", FILE_MEMBER_ACTION_RESULT_FIELDS, StructVisitor)
3512 }
3513}
3514
3515impl ::serde::ser::Serialize for FileMemberActionResult {
3516 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3517 use serde::ser::SerializeStruct;
3519 let mut s = serializer.serialize_struct("FileMemberActionResult", 4)?;
3520 self.internal_serialize::<S>(&mut s)?;
3521 s.end()
3522 }
3523}
3524
3525#[derive(Debug, Clone, PartialEq, Eq)]
3526#[non_exhaustive] pub enum FileMemberRemoveActionResult {
3528 Success(MemberAccessLevelResult),
3530 MemberError(FileMemberActionError),
3532 Other,
3535}
3536
3537impl<'de> ::serde::de::Deserialize<'de> for FileMemberRemoveActionResult {
3538 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3539 use serde::de::{self, MapAccess, Visitor};
3541 struct EnumVisitor;
3542 impl<'de> Visitor<'de> for EnumVisitor {
3543 type Value = FileMemberRemoveActionResult;
3544 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3545 f.write_str("a FileMemberRemoveActionResult structure")
3546 }
3547 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3548 let tag: &str = match map.next_key()? {
3549 Some(".tag") => map.next_value()?,
3550 _ => return Err(de::Error::missing_field(".tag"))
3551 };
3552 let value = match tag {
3553 "success" => FileMemberRemoveActionResult::Success(MemberAccessLevelResult::internal_deserialize(&mut map)?),
3554 "member_error" => {
3555 match map.next_key()? {
3556 Some("member_error") => FileMemberRemoveActionResult::MemberError(map.next_value()?),
3557 None => return Err(de::Error::missing_field("member_error")),
3558 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3559 }
3560 }
3561 _ => FileMemberRemoveActionResult::Other,
3562 };
3563 crate::eat_json_fields(&mut map)?;
3564 Ok(value)
3565 }
3566 }
3567 const VARIANTS: &[&str] = &["success",
3568 "member_error",
3569 "other"];
3570 deserializer.deserialize_struct("FileMemberRemoveActionResult", VARIANTS, EnumVisitor)
3571 }
3572}
3573
3574impl ::serde::ser::Serialize for FileMemberRemoveActionResult {
3575 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3576 use serde::ser::SerializeStruct;
3578 match self {
3579 FileMemberRemoveActionResult::Success(x) => {
3580 let mut s = serializer.serialize_struct("FileMemberRemoveActionResult", 4)?;
3582 s.serialize_field(".tag", "success")?;
3583 x.internal_serialize::<S>(&mut s)?;
3584 s.end()
3585 }
3586 FileMemberRemoveActionResult::MemberError(x) => {
3587 let mut s = serializer.serialize_struct("FileMemberRemoveActionResult", 2)?;
3589 s.serialize_field(".tag", "member_error")?;
3590 s.serialize_field("member_error", x)?;
3591 s.end()
3592 }
3593 FileMemberRemoveActionResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3594 }
3595 }
3596}
3597
3598#[derive(Debug, Clone, PartialEq, Eq)]
3600#[non_exhaustive] pub struct FilePermission {
3602 pub action: FileAction,
3604 pub allow: bool,
3606 pub reason: Option<PermissionDeniedReason>,
3608}
3609
3610impl FilePermission {
3611 pub fn new(action: FileAction, allow: bool) -> Self {
3612 FilePermission {
3613 action,
3614 allow,
3615 reason: None,
3616 }
3617 }
3618
3619 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
3620 self.reason = Some(value);
3621 self
3622 }
3623}
3624
3625const FILE_PERMISSION_FIELDS: &[&str] = &["action",
3626 "allow",
3627 "reason"];
3628impl FilePermission {
3629 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3630 map: V,
3631 ) -> Result<FilePermission, V::Error> {
3632 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3633 }
3634
3635 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3636 mut map: V,
3637 optional: bool,
3638 ) -> Result<Option<FilePermission>, V::Error> {
3639 let mut field_action = None;
3640 let mut field_allow = None;
3641 let mut field_reason = None;
3642 let mut nothing = true;
3643 while let Some(key) = map.next_key::<&str>()? {
3644 nothing = false;
3645 match key {
3646 "action" => {
3647 if field_action.is_some() {
3648 return Err(::serde::de::Error::duplicate_field("action"));
3649 }
3650 field_action = Some(map.next_value()?);
3651 }
3652 "allow" => {
3653 if field_allow.is_some() {
3654 return Err(::serde::de::Error::duplicate_field("allow"));
3655 }
3656 field_allow = Some(map.next_value()?);
3657 }
3658 "reason" => {
3659 if field_reason.is_some() {
3660 return Err(::serde::de::Error::duplicate_field("reason"));
3661 }
3662 field_reason = Some(map.next_value()?);
3663 }
3664 _ => {
3665 map.next_value::<::serde_json::Value>()?;
3667 }
3668 }
3669 }
3670 if optional && nothing {
3671 return Ok(None);
3672 }
3673 let result = FilePermission {
3674 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
3675 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
3676 reason: field_reason.and_then(Option::flatten),
3677 };
3678 Ok(Some(result))
3679 }
3680
3681 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3682 &self,
3683 s: &mut S::SerializeStruct,
3684 ) -> Result<(), S::Error> {
3685 use serde::ser::SerializeStruct;
3686 s.serialize_field("action", &self.action)?;
3687 s.serialize_field("allow", &self.allow)?;
3688 if let Some(val) = &self.reason {
3689 s.serialize_field("reason", val)?;
3690 }
3691 Ok(())
3692 }
3693}
3694
3695impl<'de> ::serde::de::Deserialize<'de> for FilePermission {
3696 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3697 use serde::de::{MapAccess, Visitor};
3699 struct StructVisitor;
3700 impl<'de> Visitor<'de> for StructVisitor {
3701 type Value = FilePermission;
3702 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3703 f.write_str("a FilePermission struct")
3704 }
3705 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3706 FilePermission::internal_deserialize(map)
3707 }
3708 }
3709 deserializer.deserialize_struct("FilePermission", FILE_PERMISSION_FIELDS, StructVisitor)
3710 }
3711}
3712
3713impl ::serde::ser::Serialize for FilePermission {
3714 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3715 use serde::ser::SerializeStruct;
3717 let mut s = serializer.serialize_struct("FilePermission", 3)?;
3718 self.internal_serialize::<S>(&mut s)?;
3719 s.end()
3720 }
3721}
3722
3723#[derive(Debug, Clone, PartialEq, Eq)]
3725#[non_exhaustive] pub enum FolderAction {
3727 ChangeOptions,
3729 DisableViewerInfo,
3731 EditContents,
3733 EnableViewerInfo,
3735 InviteEditor,
3737 InviteViewer,
3739 InviteViewerNoComment,
3741 RelinquishMembership,
3743 Unmount,
3745 Unshare,
3747 LeaveACopy,
3749 ShareLink,
3751 CreateLink,
3753 CreateViewLink,
3755 CreateEditLink,
3757 SetAccessInheritance,
3759 Other,
3762}
3763
3764impl<'de> ::serde::de::Deserialize<'de> for FolderAction {
3765 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3766 use serde::de::{self, MapAccess, Visitor};
3768 struct EnumVisitor;
3769 impl<'de> Visitor<'de> for EnumVisitor {
3770 type Value = FolderAction;
3771 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3772 f.write_str("a FolderAction structure")
3773 }
3774 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3775 let tag: &str = match map.next_key()? {
3776 Some(".tag") => map.next_value()?,
3777 _ => return Err(de::Error::missing_field(".tag"))
3778 };
3779 let value = match tag {
3780 "change_options" => FolderAction::ChangeOptions,
3781 "disable_viewer_info" => FolderAction::DisableViewerInfo,
3782 "edit_contents" => FolderAction::EditContents,
3783 "enable_viewer_info" => FolderAction::EnableViewerInfo,
3784 "invite_editor" => FolderAction::InviteEditor,
3785 "invite_viewer" => FolderAction::InviteViewer,
3786 "invite_viewer_no_comment" => FolderAction::InviteViewerNoComment,
3787 "relinquish_membership" => FolderAction::RelinquishMembership,
3788 "unmount" => FolderAction::Unmount,
3789 "unshare" => FolderAction::Unshare,
3790 "leave_a_copy" => FolderAction::LeaveACopy,
3791 "share_link" => FolderAction::ShareLink,
3792 "create_link" => FolderAction::CreateLink,
3793 "create_view_link" => FolderAction::CreateViewLink,
3794 "create_edit_link" => FolderAction::CreateEditLink,
3795 "set_access_inheritance" => FolderAction::SetAccessInheritance,
3796 _ => FolderAction::Other,
3797 };
3798 crate::eat_json_fields(&mut map)?;
3799 Ok(value)
3800 }
3801 }
3802 const VARIANTS: &[&str] = &["change_options",
3803 "disable_viewer_info",
3804 "edit_contents",
3805 "enable_viewer_info",
3806 "invite_editor",
3807 "invite_viewer",
3808 "invite_viewer_no_comment",
3809 "relinquish_membership",
3810 "unmount",
3811 "unshare",
3812 "leave_a_copy",
3813 "share_link",
3814 "create_link",
3815 "create_view_link",
3816 "create_edit_link",
3817 "set_access_inheritance",
3818 "other"];
3819 deserializer.deserialize_struct("FolderAction", VARIANTS, EnumVisitor)
3820 }
3821}
3822
3823impl ::serde::ser::Serialize for FolderAction {
3824 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3825 use serde::ser::SerializeStruct;
3827 match self {
3828 FolderAction::ChangeOptions => {
3829 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3831 s.serialize_field(".tag", "change_options")?;
3832 s.end()
3833 }
3834 FolderAction::DisableViewerInfo => {
3835 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3837 s.serialize_field(".tag", "disable_viewer_info")?;
3838 s.end()
3839 }
3840 FolderAction::EditContents => {
3841 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3843 s.serialize_field(".tag", "edit_contents")?;
3844 s.end()
3845 }
3846 FolderAction::EnableViewerInfo => {
3847 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3849 s.serialize_field(".tag", "enable_viewer_info")?;
3850 s.end()
3851 }
3852 FolderAction::InviteEditor => {
3853 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3855 s.serialize_field(".tag", "invite_editor")?;
3856 s.end()
3857 }
3858 FolderAction::InviteViewer => {
3859 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3861 s.serialize_field(".tag", "invite_viewer")?;
3862 s.end()
3863 }
3864 FolderAction::InviteViewerNoComment => {
3865 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3867 s.serialize_field(".tag", "invite_viewer_no_comment")?;
3868 s.end()
3869 }
3870 FolderAction::RelinquishMembership => {
3871 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3873 s.serialize_field(".tag", "relinquish_membership")?;
3874 s.end()
3875 }
3876 FolderAction::Unmount => {
3877 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3879 s.serialize_field(".tag", "unmount")?;
3880 s.end()
3881 }
3882 FolderAction::Unshare => {
3883 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3885 s.serialize_field(".tag", "unshare")?;
3886 s.end()
3887 }
3888 FolderAction::LeaveACopy => {
3889 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3891 s.serialize_field(".tag", "leave_a_copy")?;
3892 s.end()
3893 }
3894 FolderAction::ShareLink => {
3895 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3897 s.serialize_field(".tag", "share_link")?;
3898 s.end()
3899 }
3900 FolderAction::CreateLink => {
3901 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3903 s.serialize_field(".tag", "create_link")?;
3904 s.end()
3905 }
3906 FolderAction::CreateViewLink => {
3907 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3909 s.serialize_field(".tag", "create_view_link")?;
3910 s.end()
3911 }
3912 FolderAction::CreateEditLink => {
3913 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3915 s.serialize_field(".tag", "create_edit_link")?;
3916 s.end()
3917 }
3918 FolderAction::SetAccessInheritance => {
3919 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3921 s.serialize_field(".tag", "set_access_inheritance")?;
3922 s.end()
3923 }
3924 FolderAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3925 }
3926 }
3927}
3928
3929#[derive(Debug, Clone, PartialEq, Eq)]
3931#[non_exhaustive] pub struct FolderLinkMetadata {
3933 pub url: String,
3935 pub name: String,
3937 pub link_permissions: LinkPermissions,
3939 pub id: Option<Id>,
3941 pub expires: Option<crate::types::common::DropboxTimestamp>,
3943 pub path_lower: Option<String>,
3947 pub team_member_info: Option<TeamMemberInfo>,
3950 pub content_owner_team_info: Option<TeamInfo>,
3954}
3955
3956impl FolderLinkMetadata {
3957 pub fn new(url: String, name: String, link_permissions: LinkPermissions) -> Self {
3958 FolderLinkMetadata {
3959 url,
3960 name,
3961 link_permissions,
3962 id: None,
3963 expires: None,
3964 path_lower: None,
3965 team_member_info: None,
3966 content_owner_team_info: None,
3967 }
3968 }
3969
3970 pub fn with_id(mut self, value: Id) -> Self {
3971 self.id = Some(value);
3972 self
3973 }
3974
3975 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
3976 self.expires = Some(value);
3977 self
3978 }
3979
3980 pub fn with_path_lower(mut self, value: String) -> Self {
3981 self.path_lower = Some(value);
3982 self
3983 }
3984
3985 pub fn with_team_member_info(mut self, value: TeamMemberInfo) -> Self {
3986 self.team_member_info = Some(value);
3987 self
3988 }
3989
3990 pub fn with_content_owner_team_info(mut self, value: TeamInfo) -> Self {
3991 self.content_owner_team_info = Some(value);
3992 self
3993 }
3994}
3995
3996const FOLDER_LINK_METADATA_FIELDS: &[&str] = &["url",
3997 "name",
3998 "link_permissions",
3999 "id",
4000 "expires",
4001 "path_lower",
4002 "team_member_info",
4003 "content_owner_team_info"];
4004impl FolderLinkMetadata {
4005 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4006 map: V,
4007 ) -> Result<FolderLinkMetadata, V::Error> {
4008 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4009 }
4010
4011 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4012 mut map: V,
4013 optional: bool,
4014 ) -> Result<Option<FolderLinkMetadata>, V::Error> {
4015 let mut field_url = None;
4016 let mut field_name = None;
4017 let mut field_link_permissions = None;
4018 let mut field_id = None;
4019 let mut field_expires = None;
4020 let mut field_path_lower = None;
4021 let mut field_team_member_info = None;
4022 let mut field_content_owner_team_info = None;
4023 let mut nothing = true;
4024 while let Some(key) = map.next_key::<&str>()? {
4025 nothing = false;
4026 match key {
4027 "url" => {
4028 if field_url.is_some() {
4029 return Err(::serde::de::Error::duplicate_field("url"));
4030 }
4031 field_url = Some(map.next_value()?);
4032 }
4033 "name" => {
4034 if field_name.is_some() {
4035 return Err(::serde::de::Error::duplicate_field("name"));
4036 }
4037 field_name = Some(map.next_value()?);
4038 }
4039 "link_permissions" => {
4040 if field_link_permissions.is_some() {
4041 return Err(::serde::de::Error::duplicate_field("link_permissions"));
4042 }
4043 field_link_permissions = Some(map.next_value()?);
4044 }
4045 "id" => {
4046 if field_id.is_some() {
4047 return Err(::serde::de::Error::duplicate_field("id"));
4048 }
4049 field_id = Some(map.next_value()?);
4050 }
4051 "expires" => {
4052 if field_expires.is_some() {
4053 return Err(::serde::de::Error::duplicate_field("expires"));
4054 }
4055 field_expires = Some(map.next_value()?);
4056 }
4057 "path_lower" => {
4058 if field_path_lower.is_some() {
4059 return Err(::serde::de::Error::duplicate_field("path_lower"));
4060 }
4061 field_path_lower = Some(map.next_value()?);
4062 }
4063 "team_member_info" => {
4064 if field_team_member_info.is_some() {
4065 return Err(::serde::de::Error::duplicate_field("team_member_info"));
4066 }
4067 field_team_member_info = Some(map.next_value()?);
4068 }
4069 "content_owner_team_info" => {
4070 if field_content_owner_team_info.is_some() {
4071 return Err(::serde::de::Error::duplicate_field("content_owner_team_info"));
4072 }
4073 field_content_owner_team_info = Some(map.next_value()?);
4074 }
4075 _ => {
4076 map.next_value::<::serde_json::Value>()?;
4078 }
4079 }
4080 }
4081 if optional && nothing {
4082 return Ok(None);
4083 }
4084 let result = FolderLinkMetadata {
4085 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
4086 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
4087 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
4088 id: field_id.and_then(Option::flatten),
4089 expires: field_expires.and_then(Option::flatten),
4090 path_lower: field_path_lower.and_then(Option::flatten),
4091 team_member_info: field_team_member_info.and_then(Option::flatten),
4092 content_owner_team_info: field_content_owner_team_info.and_then(Option::flatten),
4093 };
4094 Ok(Some(result))
4095 }
4096
4097 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4098 &self,
4099 s: &mut S::SerializeStruct,
4100 ) -> Result<(), S::Error> {
4101 use serde::ser::SerializeStruct;
4102 s.serialize_field("url", &self.url)?;
4103 s.serialize_field("name", &self.name)?;
4104 s.serialize_field("link_permissions", &self.link_permissions)?;
4105 if let Some(val) = &self.id {
4106 s.serialize_field("id", val)?;
4107 }
4108 if let Some(val) = &self.expires {
4109 s.serialize_field("expires", val)?;
4110 }
4111 if let Some(val) = &self.path_lower {
4112 s.serialize_field("path_lower", val)?;
4113 }
4114 if let Some(val) = &self.team_member_info {
4115 s.serialize_field("team_member_info", val)?;
4116 }
4117 if let Some(val) = &self.content_owner_team_info {
4118 s.serialize_field("content_owner_team_info", val)?;
4119 }
4120 Ok(())
4121 }
4122}
4123
4124impl<'de> ::serde::de::Deserialize<'de> for FolderLinkMetadata {
4125 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4126 use serde::de::{MapAccess, Visitor};
4128 struct StructVisitor;
4129 impl<'de> Visitor<'de> for StructVisitor {
4130 type Value = FolderLinkMetadata;
4131 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4132 f.write_str("a FolderLinkMetadata struct")
4133 }
4134 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4135 FolderLinkMetadata::internal_deserialize(map)
4136 }
4137 }
4138 deserializer.deserialize_struct("FolderLinkMetadata", FOLDER_LINK_METADATA_FIELDS, StructVisitor)
4139 }
4140}
4141
4142impl ::serde::ser::Serialize for FolderLinkMetadata {
4143 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4144 use serde::ser::SerializeStruct;
4146 let mut s = serializer.serialize_struct("FolderLinkMetadata", 8)?;
4147 self.internal_serialize::<S>(&mut s)?;
4148 s.end()
4149 }
4150}
4151
4152impl From<FolderLinkMetadata> for SharedLinkMetadata {
4154 fn from(subtype: FolderLinkMetadata) -> Self {
4155 SharedLinkMetadata::Folder(subtype)
4156 }
4157}
4158#[derive(Debug, Clone, PartialEq, Eq)]
4160#[non_exhaustive] pub struct FolderPermission {
4162 pub action: FolderAction,
4164 pub allow: bool,
4166 pub reason: Option<PermissionDeniedReason>,
4169}
4170
4171impl FolderPermission {
4172 pub fn new(action: FolderAction, allow: bool) -> Self {
4173 FolderPermission {
4174 action,
4175 allow,
4176 reason: None,
4177 }
4178 }
4179
4180 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
4181 self.reason = Some(value);
4182 self
4183 }
4184}
4185
4186const FOLDER_PERMISSION_FIELDS: &[&str] = &["action",
4187 "allow",
4188 "reason"];
4189impl FolderPermission {
4190 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4191 map: V,
4192 ) -> Result<FolderPermission, V::Error> {
4193 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4194 }
4195
4196 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4197 mut map: V,
4198 optional: bool,
4199 ) -> Result<Option<FolderPermission>, V::Error> {
4200 let mut field_action = None;
4201 let mut field_allow = None;
4202 let mut field_reason = None;
4203 let mut nothing = true;
4204 while let Some(key) = map.next_key::<&str>()? {
4205 nothing = false;
4206 match key {
4207 "action" => {
4208 if field_action.is_some() {
4209 return Err(::serde::de::Error::duplicate_field("action"));
4210 }
4211 field_action = Some(map.next_value()?);
4212 }
4213 "allow" => {
4214 if field_allow.is_some() {
4215 return Err(::serde::de::Error::duplicate_field("allow"));
4216 }
4217 field_allow = Some(map.next_value()?);
4218 }
4219 "reason" => {
4220 if field_reason.is_some() {
4221 return Err(::serde::de::Error::duplicate_field("reason"));
4222 }
4223 field_reason = Some(map.next_value()?);
4224 }
4225 _ => {
4226 map.next_value::<::serde_json::Value>()?;
4228 }
4229 }
4230 }
4231 if optional && nothing {
4232 return Ok(None);
4233 }
4234 let result = FolderPermission {
4235 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
4236 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
4237 reason: field_reason.and_then(Option::flatten),
4238 };
4239 Ok(Some(result))
4240 }
4241
4242 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4243 &self,
4244 s: &mut S::SerializeStruct,
4245 ) -> Result<(), S::Error> {
4246 use serde::ser::SerializeStruct;
4247 s.serialize_field("action", &self.action)?;
4248 s.serialize_field("allow", &self.allow)?;
4249 if let Some(val) = &self.reason {
4250 s.serialize_field("reason", val)?;
4251 }
4252 Ok(())
4253 }
4254}
4255
4256impl<'de> ::serde::de::Deserialize<'de> for FolderPermission {
4257 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4258 use serde::de::{MapAccess, Visitor};
4260 struct StructVisitor;
4261 impl<'de> Visitor<'de> for StructVisitor {
4262 type Value = FolderPermission;
4263 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4264 f.write_str("a FolderPermission struct")
4265 }
4266 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4267 FolderPermission::internal_deserialize(map)
4268 }
4269 }
4270 deserializer.deserialize_struct("FolderPermission", FOLDER_PERMISSION_FIELDS, StructVisitor)
4271 }
4272}
4273
4274impl ::serde::ser::Serialize for FolderPermission {
4275 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4276 use serde::ser::SerializeStruct;
4278 let mut s = serializer.serialize_struct("FolderPermission", 3)?;
4279 self.internal_serialize::<S>(&mut s)?;
4280 s.end()
4281 }
4282}
4283
4284#[derive(Debug, Clone, PartialEq, Eq)]
4286#[non_exhaustive] pub struct FolderPolicy {
4288 pub acl_update_policy: AclUpdatePolicy,
4290 pub shared_link_policy: SharedLinkPolicy,
4292 pub member_policy: Option<MemberPolicy>,
4296 pub resolved_member_policy: Option<MemberPolicy>,
4300 pub viewer_info_policy: Option<ViewerInfoPolicy>,
4302}
4303
4304impl FolderPolicy {
4305 pub fn new(acl_update_policy: AclUpdatePolicy, shared_link_policy: SharedLinkPolicy) -> Self {
4306 FolderPolicy {
4307 acl_update_policy,
4308 shared_link_policy,
4309 member_policy: None,
4310 resolved_member_policy: None,
4311 viewer_info_policy: None,
4312 }
4313 }
4314
4315 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
4316 self.member_policy = Some(value);
4317 self
4318 }
4319
4320 pub fn with_resolved_member_policy(mut self, value: MemberPolicy) -> Self {
4321 self.resolved_member_policy = Some(value);
4322 self
4323 }
4324
4325 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
4326 self.viewer_info_policy = Some(value);
4327 self
4328 }
4329}
4330
4331const FOLDER_POLICY_FIELDS: &[&str] = &["acl_update_policy",
4332 "shared_link_policy",
4333 "member_policy",
4334 "resolved_member_policy",
4335 "viewer_info_policy"];
4336impl FolderPolicy {
4337 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4338 map: V,
4339 ) -> Result<FolderPolicy, V::Error> {
4340 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4341 }
4342
4343 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4344 mut map: V,
4345 optional: bool,
4346 ) -> Result<Option<FolderPolicy>, V::Error> {
4347 let mut field_acl_update_policy = None;
4348 let mut field_shared_link_policy = None;
4349 let mut field_member_policy = None;
4350 let mut field_resolved_member_policy = None;
4351 let mut field_viewer_info_policy = None;
4352 let mut nothing = true;
4353 while let Some(key) = map.next_key::<&str>()? {
4354 nothing = false;
4355 match key {
4356 "acl_update_policy" => {
4357 if field_acl_update_policy.is_some() {
4358 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
4359 }
4360 field_acl_update_policy = Some(map.next_value()?);
4361 }
4362 "shared_link_policy" => {
4363 if field_shared_link_policy.is_some() {
4364 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
4365 }
4366 field_shared_link_policy = Some(map.next_value()?);
4367 }
4368 "member_policy" => {
4369 if field_member_policy.is_some() {
4370 return Err(::serde::de::Error::duplicate_field("member_policy"));
4371 }
4372 field_member_policy = Some(map.next_value()?);
4373 }
4374 "resolved_member_policy" => {
4375 if field_resolved_member_policy.is_some() {
4376 return Err(::serde::de::Error::duplicate_field("resolved_member_policy"));
4377 }
4378 field_resolved_member_policy = Some(map.next_value()?);
4379 }
4380 "viewer_info_policy" => {
4381 if field_viewer_info_policy.is_some() {
4382 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
4383 }
4384 field_viewer_info_policy = Some(map.next_value()?);
4385 }
4386 _ => {
4387 map.next_value::<::serde_json::Value>()?;
4389 }
4390 }
4391 }
4392 if optional && nothing {
4393 return Ok(None);
4394 }
4395 let result = FolderPolicy {
4396 acl_update_policy: field_acl_update_policy.ok_or_else(|| ::serde::de::Error::missing_field("acl_update_policy"))?,
4397 shared_link_policy: field_shared_link_policy.ok_or_else(|| ::serde::de::Error::missing_field("shared_link_policy"))?,
4398 member_policy: field_member_policy.and_then(Option::flatten),
4399 resolved_member_policy: field_resolved_member_policy.and_then(Option::flatten),
4400 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
4401 };
4402 Ok(Some(result))
4403 }
4404
4405 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4406 &self,
4407 s: &mut S::SerializeStruct,
4408 ) -> Result<(), S::Error> {
4409 use serde::ser::SerializeStruct;
4410 s.serialize_field("acl_update_policy", &self.acl_update_policy)?;
4411 s.serialize_field("shared_link_policy", &self.shared_link_policy)?;
4412 if let Some(val) = &self.member_policy {
4413 s.serialize_field("member_policy", val)?;
4414 }
4415 if let Some(val) = &self.resolved_member_policy {
4416 s.serialize_field("resolved_member_policy", val)?;
4417 }
4418 if let Some(val) = &self.viewer_info_policy {
4419 s.serialize_field("viewer_info_policy", val)?;
4420 }
4421 Ok(())
4422 }
4423}
4424
4425impl<'de> ::serde::de::Deserialize<'de> for FolderPolicy {
4426 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4427 use serde::de::{MapAccess, Visitor};
4429 struct StructVisitor;
4430 impl<'de> Visitor<'de> for StructVisitor {
4431 type Value = FolderPolicy;
4432 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4433 f.write_str("a FolderPolicy struct")
4434 }
4435 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4436 FolderPolicy::internal_deserialize(map)
4437 }
4438 }
4439 deserializer.deserialize_struct("FolderPolicy", FOLDER_POLICY_FIELDS, StructVisitor)
4440 }
4441}
4442
4443impl ::serde::ser::Serialize for FolderPolicy {
4444 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4445 use serde::ser::SerializeStruct;
4447 let mut s = serializer.serialize_struct("FolderPolicy", 5)?;
4448 self.internal_serialize::<S>(&mut s)?;
4449 s.end()
4450 }
4451}
4452
4453#[derive(Debug, Clone, PartialEq, Eq)]
4455#[non_exhaustive] pub struct GetFileMetadataArg {
4457 pub file: PathOrId,
4459 pub actions: Option<Vec<FileAction>>,
4463}
4464
4465impl GetFileMetadataArg {
4466 pub fn new(file: PathOrId) -> Self {
4467 GetFileMetadataArg {
4468 file,
4469 actions: None,
4470 }
4471 }
4472
4473 pub fn with_actions(mut self, value: Vec<FileAction>) -> Self {
4474 self.actions = Some(value);
4475 self
4476 }
4477}
4478
4479const GET_FILE_METADATA_ARG_FIELDS: &[&str] = &["file",
4480 "actions"];
4481impl GetFileMetadataArg {
4482 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4483 map: V,
4484 ) -> Result<GetFileMetadataArg, V::Error> {
4485 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4486 }
4487
4488 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4489 mut map: V,
4490 optional: bool,
4491 ) -> Result<Option<GetFileMetadataArg>, V::Error> {
4492 let mut field_file = None;
4493 let mut field_actions = None;
4494 let mut nothing = true;
4495 while let Some(key) = map.next_key::<&str>()? {
4496 nothing = false;
4497 match key {
4498 "file" => {
4499 if field_file.is_some() {
4500 return Err(::serde::de::Error::duplicate_field("file"));
4501 }
4502 field_file = Some(map.next_value()?);
4503 }
4504 "actions" => {
4505 if field_actions.is_some() {
4506 return Err(::serde::de::Error::duplicate_field("actions"));
4507 }
4508 field_actions = Some(map.next_value()?);
4509 }
4510 _ => {
4511 map.next_value::<::serde_json::Value>()?;
4513 }
4514 }
4515 }
4516 if optional && nothing {
4517 return Ok(None);
4518 }
4519 let result = GetFileMetadataArg {
4520 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
4521 actions: field_actions.and_then(Option::flatten),
4522 };
4523 Ok(Some(result))
4524 }
4525
4526 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4527 &self,
4528 s: &mut S::SerializeStruct,
4529 ) -> Result<(), S::Error> {
4530 use serde::ser::SerializeStruct;
4531 s.serialize_field("file", &self.file)?;
4532 if let Some(val) = &self.actions {
4533 s.serialize_field("actions", val)?;
4534 }
4535 Ok(())
4536 }
4537}
4538
4539impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataArg {
4540 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4541 use serde::de::{MapAccess, Visitor};
4543 struct StructVisitor;
4544 impl<'de> Visitor<'de> for StructVisitor {
4545 type Value = GetFileMetadataArg;
4546 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4547 f.write_str("a GetFileMetadataArg struct")
4548 }
4549 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4550 GetFileMetadataArg::internal_deserialize(map)
4551 }
4552 }
4553 deserializer.deserialize_struct("GetFileMetadataArg", GET_FILE_METADATA_ARG_FIELDS, StructVisitor)
4554 }
4555}
4556
4557impl ::serde::ser::Serialize for GetFileMetadataArg {
4558 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4559 use serde::ser::SerializeStruct;
4561 let mut s = serializer.serialize_struct("GetFileMetadataArg", 2)?;
4562 self.internal_serialize::<S>(&mut s)?;
4563 s.end()
4564 }
4565}
4566
4567#[derive(Debug, Clone, PartialEq, Eq)]
4569#[non_exhaustive] pub struct GetFileMetadataBatchArg {
4571 pub files: Vec<PathOrId>,
4573 pub actions: Option<Vec<FileAction>>,
4577}
4578
4579impl GetFileMetadataBatchArg {
4580 pub fn new(files: Vec<PathOrId>) -> Self {
4581 GetFileMetadataBatchArg {
4582 files,
4583 actions: None,
4584 }
4585 }
4586
4587 pub fn with_actions(mut self, value: Vec<FileAction>) -> Self {
4588 self.actions = Some(value);
4589 self
4590 }
4591}
4592
4593const GET_FILE_METADATA_BATCH_ARG_FIELDS: &[&str] = &["files",
4594 "actions"];
4595impl GetFileMetadataBatchArg {
4596 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4597 map: V,
4598 ) -> Result<GetFileMetadataBatchArg, V::Error> {
4599 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4600 }
4601
4602 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4603 mut map: V,
4604 optional: bool,
4605 ) -> Result<Option<GetFileMetadataBatchArg>, V::Error> {
4606 let mut field_files = None;
4607 let mut field_actions = None;
4608 let mut nothing = true;
4609 while let Some(key) = map.next_key::<&str>()? {
4610 nothing = false;
4611 match key {
4612 "files" => {
4613 if field_files.is_some() {
4614 return Err(::serde::de::Error::duplicate_field("files"));
4615 }
4616 field_files = Some(map.next_value()?);
4617 }
4618 "actions" => {
4619 if field_actions.is_some() {
4620 return Err(::serde::de::Error::duplicate_field("actions"));
4621 }
4622 field_actions = Some(map.next_value()?);
4623 }
4624 _ => {
4625 map.next_value::<::serde_json::Value>()?;
4627 }
4628 }
4629 }
4630 if optional && nothing {
4631 return Ok(None);
4632 }
4633 let result = GetFileMetadataBatchArg {
4634 files: field_files.ok_or_else(|| ::serde::de::Error::missing_field("files"))?,
4635 actions: field_actions.and_then(Option::flatten),
4636 };
4637 Ok(Some(result))
4638 }
4639
4640 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4641 &self,
4642 s: &mut S::SerializeStruct,
4643 ) -> Result<(), S::Error> {
4644 use serde::ser::SerializeStruct;
4645 s.serialize_field("files", &self.files)?;
4646 if let Some(val) = &self.actions {
4647 s.serialize_field("actions", val)?;
4648 }
4649 Ok(())
4650 }
4651}
4652
4653impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataBatchArg {
4654 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4655 use serde::de::{MapAccess, Visitor};
4657 struct StructVisitor;
4658 impl<'de> Visitor<'de> for StructVisitor {
4659 type Value = GetFileMetadataBatchArg;
4660 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4661 f.write_str("a GetFileMetadataBatchArg struct")
4662 }
4663 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4664 GetFileMetadataBatchArg::internal_deserialize(map)
4665 }
4666 }
4667 deserializer.deserialize_struct("GetFileMetadataBatchArg", GET_FILE_METADATA_BATCH_ARG_FIELDS, StructVisitor)
4668 }
4669}
4670
4671impl ::serde::ser::Serialize for GetFileMetadataBatchArg {
4672 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4673 use serde::ser::SerializeStruct;
4675 let mut s = serializer.serialize_struct("GetFileMetadataBatchArg", 2)?;
4676 self.internal_serialize::<S>(&mut s)?;
4677 s.end()
4678 }
4679}
4680
4681#[derive(Debug, Clone, PartialEq, Eq)]
4683#[non_exhaustive] pub struct GetFileMetadataBatchResult {
4685 pub file: PathOrId,
4688 pub result: GetFileMetadataIndividualResult,
4690}
4691
4692impl GetFileMetadataBatchResult {
4693 pub fn new(file: PathOrId, result: GetFileMetadataIndividualResult) -> Self {
4694 GetFileMetadataBatchResult {
4695 file,
4696 result,
4697 }
4698 }
4699}
4700
4701const GET_FILE_METADATA_BATCH_RESULT_FIELDS: &[&str] = &["file",
4702 "result"];
4703impl GetFileMetadataBatchResult {
4704 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4705 map: V,
4706 ) -> Result<GetFileMetadataBatchResult, V::Error> {
4707 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4708 }
4709
4710 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4711 mut map: V,
4712 optional: bool,
4713 ) -> Result<Option<GetFileMetadataBatchResult>, V::Error> {
4714 let mut field_file = None;
4715 let mut field_result = None;
4716 let mut nothing = true;
4717 while let Some(key) = map.next_key::<&str>()? {
4718 nothing = false;
4719 match key {
4720 "file" => {
4721 if field_file.is_some() {
4722 return Err(::serde::de::Error::duplicate_field("file"));
4723 }
4724 field_file = Some(map.next_value()?);
4725 }
4726 "result" => {
4727 if field_result.is_some() {
4728 return Err(::serde::de::Error::duplicate_field("result"));
4729 }
4730 field_result = Some(map.next_value()?);
4731 }
4732 _ => {
4733 map.next_value::<::serde_json::Value>()?;
4735 }
4736 }
4737 }
4738 if optional && nothing {
4739 return Ok(None);
4740 }
4741 let result = GetFileMetadataBatchResult {
4742 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
4743 result: field_result.ok_or_else(|| ::serde::de::Error::missing_field("result"))?,
4744 };
4745 Ok(Some(result))
4746 }
4747
4748 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4749 &self,
4750 s: &mut S::SerializeStruct,
4751 ) -> Result<(), S::Error> {
4752 use serde::ser::SerializeStruct;
4753 s.serialize_field("file", &self.file)?;
4754 s.serialize_field("result", &self.result)?;
4755 Ok(())
4756 }
4757}
4758
4759impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataBatchResult {
4760 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4761 use serde::de::{MapAccess, Visitor};
4763 struct StructVisitor;
4764 impl<'de> Visitor<'de> for StructVisitor {
4765 type Value = GetFileMetadataBatchResult;
4766 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4767 f.write_str("a GetFileMetadataBatchResult struct")
4768 }
4769 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4770 GetFileMetadataBatchResult::internal_deserialize(map)
4771 }
4772 }
4773 deserializer.deserialize_struct("GetFileMetadataBatchResult", GET_FILE_METADATA_BATCH_RESULT_FIELDS, StructVisitor)
4774 }
4775}
4776
4777impl ::serde::ser::Serialize for GetFileMetadataBatchResult {
4778 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4779 use serde::ser::SerializeStruct;
4781 let mut s = serializer.serialize_struct("GetFileMetadataBatchResult", 2)?;
4782 self.internal_serialize::<S>(&mut s)?;
4783 s.end()
4784 }
4785}
4786
4787#[derive(Debug, Clone, PartialEq, Eq)]
4789#[non_exhaustive] pub enum GetFileMetadataError {
4791 UserError(SharingUserError),
4792 AccessError(SharingFileAccessError),
4793 Other,
4796}
4797
4798impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataError {
4799 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4800 use serde::de::{self, MapAccess, Visitor};
4802 struct EnumVisitor;
4803 impl<'de> Visitor<'de> for EnumVisitor {
4804 type Value = GetFileMetadataError;
4805 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4806 f.write_str("a GetFileMetadataError structure")
4807 }
4808 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4809 let tag: &str = match map.next_key()? {
4810 Some(".tag") => map.next_value()?,
4811 _ => return Err(de::Error::missing_field(".tag"))
4812 };
4813 let value = match tag {
4814 "user_error" => {
4815 match map.next_key()? {
4816 Some("user_error") => GetFileMetadataError::UserError(map.next_value()?),
4817 None => return Err(de::Error::missing_field("user_error")),
4818 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
4819 }
4820 }
4821 "access_error" => {
4822 match map.next_key()? {
4823 Some("access_error") => GetFileMetadataError::AccessError(map.next_value()?),
4824 None => return Err(de::Error::missing_field("access_error")),
4825 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
4826 }
4827 }
4828 _ => GetFileMetadataError::Other,
4829 };
4830 crate::eat_json_fields(&mut map)?;
4831 Ok(value)
4832 }
4833 }
4834 const VARIANTS: &[&str] = &["user_error",
4835 "access_error",
4836 "other"];
4837 deserializer.deserialize_struct("GetFileMetadataError", VARIANTS, EnumVisitor)
4838 }
4839}
4840
4841impl ::serde::ser::Serialize for GetFileMetadataError {
4842 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4843 use serde::ser::SerializeStruct;
4845 match self {
4846 GetFileMetadataError::UserError(x) => {
4847 let mut s = serializer.serialize_struct("GetFileMetadataError", 2)?;
4849 s.serialize_field(".tag", "user_error")?;
4850 s.serialize_field("user_error", x)?;
4851 s.end()
4852 }
4853 GetFileMetadataError::AccessError(x) => {
4854 let mut s = serializer.serialize_struct("GetFileMetadataError", 2)?;
4856 s.serialize_field(".tag", "access_error")?;
4857 s.serialize_field("access_error", x)?;
4858 s.end()
4859 }
4860 GetFileMetadataError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
4861 }
4862 }
4863}
4864
4865impl ::std::error::Error for GetFileMetadataError {
4866 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
4867 match self {
4868 GetFileMetadataError::UserError(inner) => Some(inner),
4869 GetFileMetadataError::AccessError(inner) => Some(inner),
4870 _ => None,
4871 }
4872 }
4873}
4874
4875impl ::std::fmt::Display for GetFileMetadataError {
4876 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4877 match self {
4878 GetFileMetadataError::UserError(inner) => write!(f, "GetFileMetadataError: {}", inner),
4879 GetFileMetadataError::AccessError(inner) => write!(f, "GetFileMetadataError: {}", inner),
4880 _ => write!(f, "{:?}", *self),
4881 }
4882 }
4883}
4884
4885#[derive(Debug, Clone, PartialEq, Eq)]
4886#[non_exhaustive] pub enum GetFileMetadataIndividualResult {
4888 Metadata(SharedFileMetadata),
4890 AccessError(SharingFileAccessError),
4892 Other,
4895}
4896
4897impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataIndividualResult {
4898 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4899 use serde::de::{self, MapAccess, Visitor};
4901 struct EnumVisitor;
4902 impl<'de> Visitor<'de> for EnumVisitor {
4903 type Value = GetFileMetadataIndividualResult;
4904 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4905 f.write_str("a GetFileMetadataIndividualResult structure")
4906 }
4907 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4908 let tag: &str = match map.next_key()? {
4909 Some(".tag") => map.next_value()?,
4910 _ => return Err(de::Error::missing_field(".tag"))
4911 };
4912 let value = match tag {
4913 "metadata" => GetFileMetadataIndividualResult::Metadata(SharedFileMetadata::internal_deserialize(&mut map)?),
4914 "access_error" => {
4915 match map.next_key()? {
4916 Some("access_error") => GetFileMetadataIndividualResult::AccessError(map.next_value()?),
4917 None => return Err(de::Error::missing_field("access_error")),
4918 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
4919 }
4920 }
4921 _ => GetFileMetadataIndividualResult::Other,
4922 };
4923 crate::eat_json_fields(&mut map)?;
4924 Ok(value)
4925 }
4926 }
4927 const VARIANTS: &[&str] = &["metadata",
4928 "access_error",
4929 "other"];
4930 deserializer.deserialize_struct("GetFileMetadataIndividualResult", VARIANTS, EnumVisitor)
4931 }
4932}
4933
4934impl ::serde::ser::Serialize for GetFileMetadataIndividualResult {
4935 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4936 use serde::ser::SerializeStruct;
4938 match self {
4939 GetFileMetadataIndividualResult::Metadata(x) => {
4940 let mut s = serializer.serialize_struct("GetFileMetadataIndividualResult", 15)?;
4942 s.serialize_field(".tag", "metadata")?;
4943 x.internal_serialize::<S>(&mut s)?;
4944 s.end()
4945 }
4946 GetFileMetadataIndividualResult::AccessError(x) => {
4947 let mut s = serializer.serialize_struct("GetFileMetadataIndividualResult", 2)?;
4949 s.serialize_field(".tag", "access_error")?;
4950 s.serialize_field("access_error", x)?;
4951 s.end()
4952 }
4953 GetFileMetadataIndividualResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
4954 }
4955 }
4956}
4957
4958#[derive(Debug, Clone, PartialEq, Eq)]
4959#[non_exhaustive] pub struct GetMetadataArgs {
4961 pub shared_folder_id: crate::types::common::SharedFolderId,
4963 pub actions: Option<Vec<FolderAction>>,
4967}
4968
4969impl GetMetadataArgs {
4970 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
4971 GetMetadataArgs {
4972 shared_folder_id,
4973 actions: None,
4974 }
4975 }
4976
4977 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
4978 self.actions = Some(value);
4979 self
4980 }
4981}
4982
4983const GET_METADATA_ARGS_FIELDS: &[&str] = &["shared_folder_id",
4984 "actions"];
4985impl GetMetadataArgs {
4986 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4987 map: V,
4988 ) -> Result<GetMetadataArgs, V::Error> {
4989 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4990 }
4991
4992 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4993 mut map: V,
4994 optional: bool,
4995 ) -> Result<Option<GetMetadataArgs>, V::Error> {
4996 let mut field_shared_folder_id = None;
4997 let mut field_actions = None;
4998 let mut nothing = true;
4999 while let Some(key) = map.next_key::<&str>()? {
5000 nothing = false;
5001 match key {
5002 "shared_folder_id" => {
5003 if field_shared_folder_id.is_some() {
5004 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
5005 }
5006 field_shared_folder_id = Some(map.next_value()?);
5007 }
5008 "actions" => {
5009 if field_actions.is_some() {
5010 return Err(::serde::de::Error::duplicate_field("actions"));
5011 }
5012 field_actions = Some(map.next_value()?);
5013 }
5014 _ => {
5015 map.next_value::<::serde_json::Value>()?;
5017 }
5018 }
5019 }
5020 if optional && nothing {
5021 return Ok(None);
5022 }
5023 let result = GetMetadataArgs {
5024 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
5025 actions: field_actions.and_then(Option::flatten),
5026 };
5027 Ok(Some(result))
5028 }
5029
5030 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5031 &self,
5032 s: &mut S::SerializeStruct,
5033 ) -> Result<(), S::Error> {
5034 use serde::ser::SerializeStruct;
5035 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
5036 if let Some(val) = &self.actions {
5037 s.serialize_field("actions", val)?;
5038 }
5039 Ok(())
5040 }
5041}
5042
5043impl<'de> ::serde::de::Deserialize<'de> for GetMetadataArgs {
5044 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5045 use serde::de::{MapAccess, Visitor};
5047 struct StructVisitor;
5048 impl<'de> Visitor<'de> for StructVisitor {
5049 type Value = GetMetadataArgs;
5050 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5051 f.write_str("a GetMetadataArgs struct")
5052 }
5053 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5054 GetMetadataArgs::internal_deserialize(map)
5055 }
5056 }
5057 deserializer.deserialize_struct("GetMetadataArgs", GET_METADATA_ARGS_FIELDS, StructVisitor)
5058 }
5059}
5060
5061impl ::serde::ser::Serialize for GetMetadataArgs {
5062 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5063 use serde::ser::SerializeStruct;
5065 let mut s = serializer.serialize_struct("GetMetadataArgs", 2)?;
5066 self.internal_serialize::<S>(&mut s)?;
5067 s.end()
5068 }
5069}
5070
5071#[derive(Debug, Clone, PartialEq, Eq)]
5072#[non_exhaustive] pub enum GetSharedLinkFileError {
5074 SharedLinkNotFound,
5076 SharedLinkAccessDenied,
5078 UnsupportedLinkType,
5080 UnsupportedParameterField,
5082 SharedLinkIsDirectory,
5084 Other,
5087}
5088
5089impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinkFileError {
5090 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5091 use serde::de::{self, MapAccess, Visitor};
5093 struct EnumVisitor;
5094 impl<'de> Visitor<'de> for EnumVisitor {
5095 type Value = GetSharedLinkFileError;
5096 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5097 f.write_str("a GetSharedLinkFileError structure")
5098 }
5099 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
5100 let tag: &str = match map.next_key()? {
5101 Some(".tag") => map.next_value()?,
5102 _ => return Err(de::Error::missing_field(".tag"))
5103 };
5104 let value = match tag {
5105 "shared_link_not_found" => GetSharedLinkFileError::SharedLinkNotFound,
5106 "shared_link_access_denied" => GetSharedLinkFileError::SharedLinkAccessDenied,
5107 "unsupported_link_type" => GetSharedLinkFileError::UnsupportedLinkType,
5108 "unsupported_parameter_field" => GetSharedLinkFileError::UnsupportedParameterField,
5109 "shared_link_is_directory" => GetSharedLinkFileError::SharedLinkIsDirectory,
5110 _ => GetSharedLinkFileError::Other,
5111 };
5112 crate::eat_json_fields(&mut map)?;
5113 Ok(value)
5114 }
5115 }
5116 const VARIANTS: &[&str] = &["shared_link_not_found",
5117 "shared_link_access_denied",
5118 "unsupported_link_type",
5119 "unsupported_parameter_field",
5120 "other",
5121 "shared_link_is_directory"];
5122 deserializer.deserialize_struct("GetSharedLinkFileError", VARIANTS, EnumVisitor)
5123 }
5124}
5125
5126impl ::serde::ser::Serialize for GetSharedLinkFileError {
5127 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5128 use serde::ser::SerializeStruct;
5130 match self {
5131 GetSharedLinkFileError::SharedLinkNotFound => {
5132 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
5134 s.serialize_field(".tag", "shared_link_not_found")?;
5135 s.end()
5136 }
5137 GetSharedLinkFileError::SharedLinkAccessDenied => {
5138 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
5140 s.serialize_field(".tag", "shared_link_access_denied")?;
5141 s.end()
5142 }
5143 GetSharedLinkFileError::UnsupportedLinkType => {
5144 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
5146 s.serialize_field(".tag", "unsupported_link_type")?;
5147 s.end()
5148 }
5149 GetSharedLinkFileError::UnsupportedParameterField => {
5150 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
5152 s.serialize_field(".tag", "unsupported_parameter_field")?;
5153 s.end()
5154 }
5155 GetSharedLinkFileError::SharedLinkIsDirectory => {
5156 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
5158 s.serialize_field(".tag", "shared_link_is_directory")?;
5159 s.end()
5160 }
5161 GetSharedLinkFileError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
5162 }
5163 }
5164}
5165
5166impl ::std::error::Error for GetSharedLinkFileError {
5167}
5168
5169impl ::std::fmt::Display for GetSharedLinkFileError {
5170 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5171 match self {
5172 GetSharedLinkFileError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
5173 GetSharedLinkFileError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
5174 GetSharedLinkFileError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."),
5175 GetSharedLinkFileError::SharedLinkIsDirectory => f.write_str("Directories cannot be retrieved by this endpoint."),
5176 _ => write!(f, "{:?}", *self),
5177 }
5178 }
5179}
5180
5181impl From<SharedLinkError> for GetSharedLinkFileError {
5183 fn from(parent: SharedLinkError) -> Self {
5184 match parent {
5185 SharedLinkError::SharedLinkNotFound => GetSharedLinkFileError::SharedLinkNotFound,
5186 SharedLinkError::SharedLinkAccessDenied => GetSharedLinkFileError::SharedLinkAccessDenied,
5187 SharedLinkError::UnsupportedLinkType => GetSharedLinkFileError::UnsupportedLinkType,
5188 SharedLinkError::UnsupportedParameterField => GetSharedLinkFileError::UnsupportedParameterField,
5189 SharedLinkError::Other => GetSharedLinkFileError::Other,
5190 }
5191 }
5192}
5193#[derive(Debug, Clone, PartialEq, Eq)]
5194#[non_exhaustive] pub struct GetSharedLinkMetadataArg {
5196 pub url: String,
5198 pub path: Option<Path>,
5201 pub link_password: Option<String>,
5203}
5204
5205impl GetSharedLinkMetadataArg {
5206 pub fn new(url: String) -> Self {
5207 GetSharedLinkMetadataArg {
5208 url,
5209 path: None,
5210 link_password: None,
5211 }
5212 }
5213
5214 pub fn with_path(mut self, value: Path) -> Self {
5215 self.path = Some(value);
5216 self
5217 }
5218
5219 pub fn with_link_password(mut self, value: String) -> Self {
5220 self.link_password = Some(value);
5221 self
5222 }
5223}
5224
5225const GET_SHARED_LINK_METADATA_ARG_FIELDS: &[&str] = &["url",
5226 "path",
5227 "link_password"];
5228impl GetSharedLinkMetadataArg {
5229 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5230 map: V,
5231 ) -> Result<GetSharedLinkMetadataArg, V::Error> {
5232 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5233 }
5234
5235 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5236 mut map: V,
5237 optional: bool,
5238 ) -> Result<Option<GetSharedLinkMetadataArg>, V::Error> {
5239 let mut field_url = None;
5240 let mut field_path = None;
5241 let mut field_link_password = None;
5242 let mut nothing = true;
5243 while let Some(key) = map.next_key::<&str>()? {
5244 nothing = false;
5245 match key {
5246 "url" => {
5247 if field_url.is_some() {
5248 return Err(::serde::de::Error::duplicate_field("url"));
5249 }
5250 field_url = Some(map.next_value()?);
5251 }
5252 "path" => {
5253 if field_path.is_some() {
5254 return Err(::serde::de::Error::duplicate_field("path"));
5255 }
5256 field_path = Some(map.next_value()?);
5257 }
5258 "link_password" => {
5259 if field_link_password.is_some() {
5260 return Err(::serde::de::Error::duplicate_field("link_password"));
5261 }
5262 field_link_password = Some(map.next_value()?);
5263 }
5264 _ => {
5265 map.next_value::<::serde_json::Value>()?;
5267 }
5268 }
5269 }
5270 if optional && nothing {
5271 return Ok(None);
5272 }
5273 let result = GetSharedLinkMetadataArg {
5274 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
5275 path: field_path.and_then(Option::flatten),
5276 link_password: field_link_password.and_then(Option::flatten),
5277 };
5278 Ok(Some(result))
5279 }
5280
5281 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5282 &self,
5283 s: &mut S::SerializeStruct,
5284 ) -> Result<(), S::Error> {
5285 use serde::ser::SerializeStruct;
5286 s.serialize_field("url", &self.url)?;
5287 if let Some(val) = &self.path {
5288 s.serialize_field("path", val)?;
5289 }
5290 if let Some(val) = &self.link_password {
5291 s.serialize_field("link_password", val)?;
5292 }
5293 Ok(())
5294 }
5295}
5296
5297impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinkMetadataArg {
5298 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5299 use serde::de::{MapAccess, Visitor};
5301 struct StructVisitor;
5302 impl<'de> Visitor<'de> for StructVisitor {
5303 type Value = GetSharedLinkMetadataArg;
5304 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5305 f.write_str("a GetSharedLinkMetadataArg struct")
5306 }
5307 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5308 GetSharedLinkMetadataArg::internal_deserialize(map)
5309 }
5310 }
5311 deserializer.deserialize_struct("GetSharedLinkMetadataArg", GET_SHARED_LINK_METADATA_ARG_FIELDS, StructVisitor)
5312 }
5313}
5314
5315impl ::serde::ser::Serialize for GetSharedLinkMetadataArg {
5316 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5317 use serde::ser::SerializeStruct;
5319 let mut s = serializer.serialize_struct("GetSharedLinkMetadataArg", 3)?;
5320 self.internal_serialize::<S>(&mut s)?;
5321 s.end()
5322 }
5323}
5324
5325#[derive(Debug, Clone, PartialEq, Eq, Default)]
5326#[non_exhaustive] pub struct GetSharedLinksArg {
5328 pub path: Option<String>,
5330}
5331
5332impl GetSharedLinksArg {
5333 pub fn with_path(mut self, value: String) -> Self {
5334 self.path = Some(value);
5335 self
5336 }
5337}
5338
5339const GET_SHARED_LINKS_ARG_FIELDS: &[&str] = &["path"];
5340impl GetSharedLinksArg {
5341 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5343 mut map: V,
5344 ) -> Result<GetSharedLinksArg, V::Error> {
5345 let mut field_path = None;
5346 while let Some(key) = map.next_key::<&str>()? {
5347 match key {
5348 "path" => {
5349 if field_path.is_some() {
5350 return Err(::serde::de::Error::duplicate_field("path"));
5351 }
5352 field_path = Some(map.next_value()?);
5353 }
5354 _ => {
5355 map.next_value::<::serde_json::Value>()?;
5357 }
5358 }
5359 }
5360 let result = GetSharedLinksArg {
5361 path: field_path.and_then(Option::flatten),
5362 };
5363 Ok(result)
5364 }
5365
5366 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5367 &self,
5368 s: &mut S::SerializeStruct,
5369 ) -> Result<(), S::Error> {
5370 use serde::ser::SerializeStruct;
5371 if let Some(val) = &self.path {
5372 s.serialize_field("path", val)?;
5373 }
5374 Ok(())
5375 }
5376}
5377
5378impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinksArg {
5379 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5380 use serde::de::{MapAccess, Visitor};
5382 struct StructVisitor;
5383 impl<'de> Visitor<'de> for StructVisitor {
5384 type Value = GetSharedLinksArg;
5385 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5386 f.write_str("a GetSharedLinksArg struct")
5387 }
5388 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5389 GetSharedLinksArg::internal_deserialize(map)
5390 }
5391 }
5392 deserializer.deserialize_struct("GetSharedLinksArg", GET_SHARED_LINKS_ARG_FIELDS, StructVisitor)
5393 }
5394}
5395
5396impl ::serde::ser::Serialize for GetSharedLinksArg {
5397 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5398 use serde::ser::SerializeStruct;
5400 let mut s = serializer.serialize_struct("GetSharedLinksArg", 1)?;
5401 self.internal_serialize::<S>(&mut s)?;
5402 s.end()
5403 }
5404}
5405
5406#[derive(Debug, Clone, PartialEq, Eq)]
5407#[non_exhaustive] pub enum GetSharedLinksError {
5409 Path(crate::types::files::MalformedPathError),
5410 Other,
5413}
5414
5415impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinksError {
5416 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5417 use serde::de::{self, MapAccess, Visitor};
5419 struct EnumVisitor;
5420 impl<'de> Visitor<'de> for EnumVisitor {
5421 type Value = GetSharedLinksError;
5422 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5423 f.write_str("a GetSharedLinksError structure")
5424 }
5425 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
5426 let tag: &str = match map.next_key()? {
5427 Some(".tag") => map.next_value()?,
5428 _ => return Err(de::Error::missing_field(".tag"))
5429 };
5430 let value = match tag {
5431 "path" => {
5432 match map.next_key()? {
5433 Some("path") => GetSharedLinksError::Path(map.next_value()?),
5434 None => GetSharedLinksError::Path(None),
5435 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
5436 }
5437 }
5438 _ => GetSharedLinksError::Other,
5439 };
5440 crate::eat_json_fields(&mut map)?;
5441 Ok(value)
5442 }
5443 }
5444 const VARIANTS: &[&str] = &["path",
5445 "other"];
5446 deserializer.deserialize_struct("GetSharedLinksError", VARIANTS, EnumVisitor)
5447 }
5448}
5449
5450impl ::serde::ser::Serialize for GetSharedLinksError {
5451 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5452 use serde::ser::SerializeStruct;
5454 match self {
5455 GetSharedLinksError::Path(x) => {
5456 let n = if x.is_some() { 2 } else { 1 };
5458 let mut s = serializer.serialize_struct("GetSharedLinksError", n)?;
5459 s.serialize_field(".tag", "path")?;
5460 if let Some(x) = x {
5461 s.serialize_field("path", &x)?;
5462 }
5463 s.end()
5464 }
5465 GetSharedLinksError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
5466 }
5467 }
5468}
5469
5470impl ::std::error::Error for GetSharedLinksError {
5471}
5472
5473impl ::std::fmt::Display for GetSharedLinksError {
5474 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5475 match self {
5476 GetSharedLinksError::Path(inner) => write!(f, "path: {:?}", inner),
5477 _ => write!(f, "{:?}", *self),
5478 }
5479 }
5480}
5481
5482#[derive(Debug, Clone, PartialEq, Eq)]
5483#[non_exhaustive] pub struct GetSharedLinksResult {
5485 pub links: Vec<LinkMetadata>,
5487}
5488
5489impl GetSharedLinksResult {
5490 pub fn new(links: Vec<LinkMetadata>) -> Self {
5491 GetSharedLinksResult {
5492 links,
5493 }
5494 }
5495}
5496
5497const GET_SHARED_LINKS_RESULT_FIELDS: &[&str] = &["links"];
5498impl GetSharedLinksResult {
5499 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5500 map: V,
5501 ) -> Result<GetSharedLinksResult, V::Error> {
5502 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5503 }
5504
5505 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5506 mut map: V,
5507 optional: bool,
5508 ) -> Result<Option<GetSharedLinksResult>, V::Error> {
5509 let mut field_links = None;
5510 let mut nothing = true;
5511 while let Some(key) = map.next_key::<&str>()? {
5512 nothing = false;
5513 match key {
5514 "links" => {
5515 if field_links.is_some() {
5516 return Err(::serde::de::Error::duplicate_field("links"));
5517 }
5518 field_links = Some(map.next_value()?);
5519 }
5520 _ => {
5521 map.next_value::<::serde_json::Value>()?;
5523 }
5524 }
5525 }
5526 if optional && nothing {
5527 return Ok(None);
5528 }
5529 let result = GetSharedLinksResult {
5530 links: field_links.ok_or_else(|| ::serde::de::Error::missing_field("links"))?,
5531 };
5532 Ok(Some(result))
5533 }
5534
5535 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5536 &self,
5537 s: &mut S::SerializeStruct,
5538 ) -> Result<(), S::Error> {
5539 use serde::ser::SerializeStruct;
5540 s.serialize_field("links", &self.links)?;
5541 Ok(())
5542 }
5543}
5544
5545impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinksResult {
5546 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5547 use serde::de::{MapAccess, Visitor};
5549 struct StructVisitor;
5550 impl<'de> Visitor<'de> for StructVisitor {
5551 type Value = GetSharedLinksResult;
5552 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5553 f.write_str("a GetSharedLinksResult struct")
5554 }
5555 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5556 GetSharedLinksResult::internal_deserialize(map)
5557 }
5558 }
5559 deserializer.deserialize_struct("GetSharedLinksResult", GET_SHARED_LINKS_RESULT_FIELDS, StructVisitor)
5560 }
5561}
5562
5563impl ::serde::ser::Serialize for GetSharedLinksResult {
5564 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5565 use serde::ser::SerializeStruct;
5567 let mut s = serializer.serialize_struct("GetSharedLinksResult", 1)?;
5568 self.internal_serialize::<S>(&mut s)?;
5569 s.end()
5570 }
5571}
5572
5573#[derive(Debug, Clone, PartialEq, Eq)]
5576#[non_exhaustive] pub struct GroupInfo {
5578 pub group_name: String,
5579 pub group_id: crate::types::team_common::GroupId,
5580 pub group_management_type: crate::types::team_common::GroupManagementType,
5582 pub group_type: crate::types::team_common::GroupType,
5584 pub is_member: bool,
5586 pub is_owner: bool,
5588 pub same_team: bool,
5590 pub group_external_id: Option<crate::types::team_common::GroupExternalId>,
5592 pub member_count: Option<u32>,
5594}
5595
5596impl GroupInfo {
5597 pub fn new(
5598 group_name: String,
5599 group_id: crate::types::team_common::GroupId,
5600 group_management_type: crate::types::team_common::GroupManagementType,
5601 group_type: crate::types::team_common::GroupType,
5602 is_member: bool,
5603 is_owner: bool,
5604 same_team: bool,
5605 ) -> Self {
5606 GroupInfo {
5607 group_name,
5608 group_id,
5609 group_management_type,
5610 group_type,
5611 is_member,
5612 is_owner,
5613 same_team,
5614 group_external_id: None,
5615 member_count: None,
5616 }
5617 }
5618
5619 pub fn with_group_external_id(
5620 mut self,
5621 value: crate::types::team_common::GroupExternalId,
5622 ) -> Self {
5623 self.group_external_id = Some(value);
5624 self
5625 }
5626
5627 pub fn with_member_count(mut self, value: u32) -> Self {
5628 self.member_count = Some(value);
5629 self
5630 }
5631}
5632
5633const GROUP_INFO_FIELDS: &[&str] = &["group_name",
5634 "group_id",
5635 "group_management_type",
5636 "group_type",
5637 "is_member",
5638 "is_owner",
5639 "same_team",
5640 "group_external_id",
5641 "member_count"];
5642impl GroupInfo {
5643 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5644 map: V,
5645 ) -> Result<GroupInfo, V::Error> {
5646 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5647 }
5648
5649 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5650 mut map: V,
5651 optional: bool,
5652 ) -> Result<Option<GroupInfo>, V::Error> {
5653 let mut field_group_name = None;
5654 let mut field_group_id = None;
5655 let mut field_group_management_type = None;
5656 let mut field_group_type = None;
5657 let mut field_is_member = None;
5658 let mut field_is_owner = None;
5659 let mut field_same_team = None;
5660 let mut field_group_external_id = None;
5661 let mut field_member_count = None;
5662 let mut nothing = true;
5663 while let Some(key) = map.next_key::<&str>()? {
5664 nothing = false;
5665 match key {
5666 "group_name" => {
5667 if field_group_name.is_some() {
5668 return Err(::serde::de::Error::duplicate_field("group_name"));
5669 }
5670 field_group_name = Some(map.next_value()?);
5671 }
5672 "group_id" => {
5673 if field_group_id.is_some() {
5674 return Err(::serde::de::Error::duplicate_field("group_id"));
5675 }
5676 field_group_id = Some(map.next_value()?);
5677 }
5678 "group_management_type" => {
5679 if field_group_management_type.is_some() {
5680 return Err(::serde::de::Error::duplicate_field("group_management_type"));
5681 }
5682 field_group_management_type = Some(map.next_value()?);
5683 }
5684 "group_type" => {
5685 if field_group_type.is_some() {
5686 return Err(::serde::de::Error::duplicate_field("group_type"));
5687 }
5688 field_group_type = Some(map.next_value()?);
5689 }
5690 "is_member" => {
5691 if field_is_member.is_some() {
5692 return Err(::serde::de::Error::duplicate_field("is_member"));
5693 }
5694 field_is_member = Some(map.next_value()?);
5695 }
5696 "is_owner" => {
5697 if field_is_owner.is_some() {
5698 return Err(::serde::de::Error::duplicate_field("is_owner"));
5699 }
5700 field_is_owner = Some(map.next_value()?);
5701 }
5702 "same_team" => {
5703 if field_same_team.is_some() {
5704 return Err(::serde::de::Error::duplicate_field("same_team"));
5705 }
5706 field_same_team = Some(map.next_value()?);
5707 }
5708 "group_external_id" => {
5709 if field_group_external_id.is_some() {
5710 return Err(::serde::de::Error::duplicate_field("group_external_id"));
5711 }
5712 field_group_external_id = Some(map.next_value()?);
5713 }
5714 "member_count" => {
5715 if field_member_count.is_some() {
5716 return Err(::serde::de::Error::duplicate_field("member_count"));
5717 }
5718 field_member_count = Some(map.next_value()?);
5719 }
5720 _ => {
5721 map.next_value::<::serde_json::Value>()?;
5723 }
5724 }
5725 }
5726 if optional && nothing {
5727 return Ok(None);
5728 }
5729 let result = GroupInfo {
5730 group_name: field_group_name.ok_or_else(|| ::serde::de::Error::missing_field("group_name"))?,
5731 group_id: field_group_id.ok_or_else(|| ::serde::de::Error::missing_field("group_id"))?,
5732 group_management_type: field_group_management_type.ok_or_else(|| ::serde::de::Error::missing_field("group_management_type"))?,
5733 group_type: field_group_type.ok_or_else(|| ::serde::de::Error::missing_field("group_type"))?,
5734 is_member: field_is_member.ok_or_else(|| ::serde::de::Error::missing_field("is_member"))?,
5735 is_owner: field_is_owner.ok_or_else(|| ::serde::de::Error::missing_field("is_owner"))?,
5736 same_team: field_same_team.ok_or_else(|| ::serde::de::Error::missing_field("same_team"))?,
5737 group_external_id: field_group_external_id.and_then(Option::flatten),
5738 member_count: field_member_count.and_then(Option::flatten),
5739 };
5740 Ok(Some(result))
5741 }
5742
5743 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5744 &self,
5745 s: &mut S::SerializeStruct,
5746 ) -> Result<(), S::Error> {
5747 use serde::ser::SerializeStruct;
5748 s.serialize_field("group_name", &self.group_name)?;
5749 s.serialize_field("group_id", &self.group_id)?;
5750 s.serialize_field("group_management_type", &self.group_management_type)?;
5751 s.serialize_field("group_type", &self.group_type)?;
5752 s.serialize_field("is_member", &self.is_member)?;
5753 s.serialize_field("is_owner", &self.is_owner)?;
5754 s.serialize_field("same_team", &self.same_team)?;
5755 if let Some(val) = &self.group_external_id {
5756 s.serialize_field("group_external_id", val)?;
5757 }
5758 if let Some(val) = &self.member_count {
5759 s.serialize_field("member_count", val)?;
5760 }
5761 Ok(())
5762 }
5763}
5764
5765impl<'de> ::serde::de::Deserialize<'de> for GroupInfo {
5766 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5767 use serde::de::{MapAccess, Visitor};
5769 struct StructVisitor;
5770 impl<'de> Visitor<'de> for StructVisitor {
5771 type Value = GroupInfo;
5772 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5773 f.write_str("a GroupInfo struct")
5774 }
5775 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5776 GroupInfo::internal_deserialize(map)
5777 }
5778 }
5779 deserializer.deserialize_struct("GroupInfo", GROUP_INFO_FIELDS, StructVisitor)
5780 }
5781}
5782
5783impl ::serde::ser::Serialize for GroupInfo {
5784 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5785 use serde::ser::SerializeStruct;
5787 let mut s = serializer.serialize_struct("GroupInfo", 9)?;
5788 self.internal_serialize::<S>(&mut s)?;
5789 s.end()
5790 }
5791}
5792
5793impl From<GroupInfo> for crate::types::team_common::GroupSummary {
5795 fn from(subtype: GroupInfo) -> Self {
5796 Self {
5797 group_name: subtype.group_name,
5798 group_id: subtype.group_id,
5799 group_management_type: subtype.group_management_type,
5800 group_external_id: subtype.group_external_id,
5801 member_count: subtype.member_count,
5802 }
5803 }
5804}
5805#[derive(Debug, Clone, PartialEq, Eq)]
5807#[non_exhaustive] pub struct GroupMembershipInfo {
5809 pub access_type: AccessLevel,
5812 pub group: GroupInfo,
5814 pub permissions: Option<Vec<MemberPermission>>,
5817 pub initials: Option<String>,
5819 pub is_inherited: bool,
5821}
5822
5823impl GroupMembershipInfo {
5824 pub fn new(access_type: AccessLevel, group: GroupInfo) -> Self {
5825 GroupMembershipInfo {
5826 access_type,
5827 group,
5828 permissions: None,
5829 initials: None,
5830 is_inherited: false,
5831 }
5832 }
5833
5834 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
5835 self.permissions = Some(value);
5836 self
5837 }
5838
5839 pub fn with_initials(mut self, value: String) -> Self {
5840 self.initials = Some(value);
5841 self
5842 }
5843
5844 pub fn with_is_inherited(mut self, value: bool) -> Self {
5845 self.is_inherited = value;
5846 self
5847 }
5848}
5849
5850const GROUP_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
5851 "group",
5852 "permissions",
5853 "initials",
5854 "is_inherited"];
5855impl GroupMembershipInfo {
5856 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5857 map: V,
5858 ) -> Result<GroupMembershipInfo, V::Error> {
5859 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5860 }
5861
5862 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5863 mut map: V,
5864 optional: bool,
5865 ) -> Result<Option<GroupMembershipInfo>, V::Error> {
5866 let mut field_access_type = None;
5867 let mut field_group = None;
5868 let mut field_permissions = None;
5869 let mut field_initials = None;
5870 let mut field_is_inherited = None;
5871 let mut nothing = true;
5872 while let Some(key) = map.next_key::<&str>()? {
5873 nothing = false;
5874 match key {
5875 "access_type" => {
5876 if field_access_type.is_some() {
5877 return Err(::serde::de::Error::duplicate_field("access_type"));
5878 }
5879 field_access_type = Some(map.next_value()?);
5880 }
5881 "group" => {
5882 if field_group.is_some() {
5883 return Err(::serde::de::Error::duplicate_field("group"));
5884 }
5885 field_group = Some(map.next_value()?);
5886 }
5887 "permissions" => {
5888 if field_permissions.is_some() {
5889 return Err(::serde::de::Error::duplicate_field("permissions"));
5890 }
5891 field_permissions = Some(map.next_value()?);
5892 }
5893 "initials" => {
5894 if field_initials.is_some() {
5895 return Err(::serde::de::Error::duplicate_field("initials"));
5896 }
5897 field_initials = Some(map.next_value()?);
5898 }
5899 "is_inherited" => {
5900 if field_is_inherited.is_some() {
5901 return Err(::serde::de::Error::duplicate_field("is_inherited"));
5902 }
5903 field_is_inherited = Some(map.next_value()?);
5904 }
5905 _ => {
5906 map.next_value::<::serde_json::Value>()?;
5908 }
5909 }
5910 }
5911 if optional && nothing {
5912 return Ok(None);
5913 }
5914 let result = GroupMembershipInfo {
5915 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
5916 group: field_group.ok_or_else(|| ::serde::de::Error::missing_field("group"))?,
5917 permissions: field_permissions.and_then(Option::flatten),
5918 initials: field_initials.and_then(Option::flatten),
5919 is_inherited: field_is_inherited.unwrap_or(false),
5920 };
5921 Ok(Some(result))
5922 }
5923
5924 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5925 &self,
5926 s: &mut S::SerializeStruct,
5927 ) -> Result<(), S::Error> {
5928 use serde::ser::SerializeStruct;
5929 s.serialize_field("access_type", &self.access_type)?;
5930 s.serialize_field("group", &self.group)?;
5931 if let Some(val) = &self.permissions {
5932 s.serialize_field("permissions", val)?;
5933 }
5934 if let Some(val) = &self.initials {
5935 s.serialize_field("initials", val)?;
5936 }
5937 if self.is_inherited {
5938 s.serialize_field("is_inherited", &self.is_inherited)?;
5939 }
5940 Ok(())
5941 }
5942}
5943
5944impl<'de> ::serde::de::Deserialize<'de> for GroupMembershipInfo {
5945 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5946 use serde::de::{MapAccess, Visitor};
5948 struct StructVisitor;
5949 impl<'de> Visitor<'de> for StructVisitor {
5950 type Value = GroupMembershipInfo;
5951 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5952 f.write_str("a GroupMembershipInfo struct")
5953 }
5954 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5955 GroupMembershipInfo::internal_deserialize(map)
5956 }
5957 }
5958 deserializer.deserialize_struct("GroupMembershipInfo", GROUP_MEMBERSHIP_INFO_FIELDS, StructVisitor)
5959 }
5960}
5961
5962impl ::serde::ser::Serialize for GroupMembershipInfo {
5963 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5964 use serde::ser::SerializeStruct;
5966 let mut s = serializer.serialize_struct("GroupMembershipInfo", 5)?;
5967 self.internal_serialize::<S>(&mut s)?;
5968 s.end()
5969 }
5970}
5971
5972impl From<GroupMembershipInfo> for MembershipInfo {
5974 fn from(subtype: GroupMembershipInfo) -> Self {
5975 Self {
5976 access_type: subtype.access_type,
5977 permissions: subtype.permissions,
5978 initials: subtype.initials,
5979 is_inherited: subtype.is_inherited,
5980 }
5981 }
5982}
5983#[derive(Debug, Clone, PartialEq, Eq)]
5984#[non_exhaustive] pub struct InsufficientPlan {
5986 pub message: String,
5988 pub upsell_url: Option<String>,
5991}
5992
5993impl InsufficientPlan {
5994 pub fn new(message: String) -> Self {
5995 InsufficientPlan {
5996 message,
5997 upsell_url: None,
5998 }
5999 }
6000
6001 pub fn with_upsell_url(mut self, value: String) -> Self {
6002 self.upsell_url = Some(value);
6003 self
6004 }
6005}
6006
6007const INSUFFICIENT_PLAN_FIELDS: &[&str] = &["message",
6008 "upsell_url"];
6009impl InsufficientPlan {
6010 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
6011 map: V,
6012 ) -> Result<InsufficientPlan, V::Error> {
6013 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
6014 }
6015
6016 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
6017 mut map: V,
6018 optional: bool,
6019 ) -> Result<Option<InsufficientPlan>, V::Error> {
6020 let mut field_message = None;
6021 let mut field_upsell_url = None;
6022 let mut nothing = true;
6023 while let Some(key) = map.next_key::<&str>()? {
6024 nothing = false;
6025 match key {
6026 "message" => {
6027 if field_message.is_some() {
6028 return Err(::serde::de::Error::duplicate_field("message"));
6029 }
6030 field_message = Some(map.next_value()?);
6031 }
6032 "upsell_url" => {
6033 if field_upsell_url.is_some() {
6034 return Err(::serde::de::Error::duplicate_field("upsell_url"));
6035 }
6036 field_upsell_url = Some(map.next_value()?);
6037 }
6038 _ => {
6039 map.next_value::<::serde_json::Value>()?;
6041 }
6042 }
6043 }
6044 if optional && nothing {
6045 return Ok(None);
6046 }
6047 let result = InsufficientPlan {
6048 message: field_message.ok_or_else(|| ::serde::de::Error::missing_field("message"))?,
6049 upsell_url: field_upsell_url.and_then(Option::flatten),
6050 };
6051 Ok(Some(result))
6052 }
6053
6054 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
6055 &self,
6056 s: &mut S::SerializeStruct,
6057 ) -> Result<(), S::Error> {
6058 use serde::ser::SerializeStruct;
6059 s.serialize_field("message", &self.message)?;
6060 if let Some(val) = &self.upsell_url {
6061 s.serialize_field("upsell_url", val)?;
6062 }
6063 Ok(())
6064 }
6065}
6066
6067impl<'de> ::serde::de::Deserialize<'de> for InsufficientPlan {
6068 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6069 use serde::de::{MapAccess, Visitor};
6071 struct StructVisitor;
6072 impl<'de> Visitor<'de> for StructVisitor {
6073 type Value = InsufficientPlan;
6074 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6075 f.write_str("a InsufficientPlan struct")
6076 }
6077 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
6078 InsufficientPlan::internal_deserialize(map)
6079 }
6080 }
6081 deserializer.deserialize_struct("InsufficientPlan", INSUFFICIENT_PLAN_FIELDS, StructVisitor)
6082 }
6083}
6084
6085impl ::serde::ser::Serialize for InsufficientPlan {
6086 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6087 use serde::ser::SerializeStruct;
6089 let mut s = serializer.serialize_struct("InsufficientPlan", 2)?;
6090 self.internal_serialize::<S>(&mut s)?;
6091 s.end()
6092 }
6093}
6094
6095#[derive(Debug, Clone, PartialEq, Eq)]
6096#[non_exhaustive] pub struct InsufficientQuotaAmounts {
6098 pub space_needed: u64,
6100 pub space_shortage: u64,
6102 pub space_left: u64,
6104}
6105
6106impl InsufficientQuotaAmounts {
6107 pub fn new(space_needed: u64, space_shortage: u64, space_left: u64) -> Self {
6108 InsufficientQuotaAmounts {
6109 space_needed,
6110 space_shortage,
6111 space_left,
6112 }
6113 }
6114}
6115
6116const INSUFFICIENT_QUOTA_AMOUNTS_FIELDS: &[&str] = &["space_needed",
6117 "space_shortage",
6118 "space_left"];
6119impl InsufficientQuotaAmounts {
6120 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
6121 map: V,
6122 ) -> Result<InsufficientQuotaAmounts, V::Error> {
6123 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
6124 }
6125
6126 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
6127 mut map: V,
6128 optional: bool,
6129 ) -> Result<Option<InsufficientQuotaAmounts>, V::Error> {
6130 let mut field_space_needed = None;
6131 let mut field_space_shortage = None;
6132 let mut field_space_left = None;
6133 let mut nothing = true;
6134 while let Some(key) = map.next_key::<&str>()? {
6135 nothing = false;
6136 match key {
6137 "space_needed" => {
6138 if field_space_needed.is_some() {
6139 return Err(::serde::de::Error::duplicate_field("space_needed"));
6140 }
6141 field_space_needed = Some(map.next_value()?);
6142 }
6143 "space_shortage" => {
6144 if field_space_shortage.is_some() {
6145 return Err(::serde::de::Error::duplicate_field("space_shortage"));
6146 }
6147 field_space_shortage = Some(map.next_value()?);
6148 }
6149 "space_left" => {
6150 if field_space_left.is_some() {
6151 return Err(::serde::de::Error::duplicate_field("space_left"));
6152 }
6153 field_space_left = Some(map.next_value()?);
6154 }
6155 _ => {
6156 map.next_value::<::serde_json::Value>()?;
6158 }
6159 }
6160 }
6161 if optional && nothing {
6162 return Ok(None);
6163 }
6164 let result = InsufficientQuotaAmounts {
6165 space_needed: field_space_needed.ok_or_else(|| ::serde::de::Error::missing_field("space_needed"))?,
6166 space_shortage: field_space_shortage.ok_or_else(|| ::serde::de::Error::missing_field("space_shortage"))?,
6167 space_left: field_space_left.ok_or_else(|| ::serde::de::Error::missing_field("space_left"))?,
6168 };
6169 Ok(Some(result))
6170 }
6171
6172 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
6173 &self,
6174 s: &mut S::SerializeStruct,
6175 ) -> Result<(), S::Error> {
6176 use serde::ser::SerializeStruct;
6177 s.serialize_field("space_needed", &self.space_needed)?;
6178 s.serialize_field("space_shortage", &self.space_shortage)?;
6179 s.serialize_field("space_left", &self.space_left)?;
6180 Ok(())
6181 }
6182}
6183
6184impl<'de> ::serde::de::Deserialize<'de> for InsufficientQuotaAmounts {
6185 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6186 use serde::de::{MapAccess, Visitor};
6188 struct StructVisitor;
6189 impl<'de> Visitor<'de> for StructVisitor {
6190 type Value = InsufficientQuotaAmounts;
6191 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6192 f.write_str("a InsufficientQuotaAmounts struct")
6193 }
6194 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
6195 InsufficientQuotaAmounts::internal_deserialize(map)
6196 }
6197 }
6198 deserializer.deserialize_struct("InsufficientQuotaAmounts", INSUFFICIENT_QUOTA_AMOUNTS_FIELDS, StructVisitor)
6199 }
6200}
6201
6202impl ::serde::ser::Serialize for InsufficientQuotaAmounts {
6203 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6204 use serde::ser::SerializeStruct;
6206 let mut s = serializer.serialize_struct("InsufficientQuotaAmounts", 3)?;
6207 self.internal_serialize::<S>(&mut s)?;
6208 s.end()
6209 }
6210}
6211
6212#[derive(Debug, Clone, PartialEq, Eq)]
6214#[non_exhaustive] pub enum InviteeInfo {
6216 Email(crate::types::common::EmailAddress),
6218 Other,
6221}
6222
6223impl<'de> ::serde::de::Deserialize<'de> for InviteeInfo {
6224 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6225 use serde::de::{self, MapAccess, Visitor};
6227 struct EnumVisitor;
6228 impl<'de> Visitor<'de> for EnumVisitor {
6229 type Value = InviteeInfo;
6230 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6231 f.write_str("a InviteeInfo structure")
6232 }
6233 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6234 let tag: &str = match map.next_key()? {
6235 Some(".tag") => map.next_value()?,
6236 _ => return Err(de::Error::missing_field(".tag"))
6237 };
6238 let value = match tag {
6239 "email" => {
6240 match map.next_key()? {
6241 Some("email") => InviteeInfo::Email(map.next_value()?),
6242 None => return Err(de::Error::missing_field("email")),
6243 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6244 }
6245 }
6246 _ => InviteeInfo::Other,
6247 };
6248 crate::eat_json_fields(&mut map)?;
6249 Ok(value)
6250 }
6251 }
6252 const VARIANTS: &[&str] = &["email",
6253 "other"];
6254 deserializer.deserialize_struct("InviteeInfo", VARIANTS, EnumVisitor)
6255 }
6256}
6257
6258impl ::serde::ser::Serialize for InviteeInfo {
6259 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6260 use serde::ser::SerializeStruct;
6262 match self {
6263 InviteeInfo::Email(x) => {
6264 let mut s = serializer.serialize_struct("InviteeInfo", 2)?;
6266 s.serialize_field(".tag", "email")?;
6267 s.serialize_field("email", x)?;
6268 s.end()
6269 }
6270 InviteeInfo::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6271 }
6272 }
6273}
6274
6275#[derive(Debug, Clone, PartialEq, Eq)]
6277#[non_exhaustive] pub struct InviteeMembershipInfo {
6279 pub access_type: AccessLevel,
6282 pub invitee: InviteeInfo,
6284 pub permissions: Option<Vec<MemberPermission>>,
6287 pub initials: Option<String>,
6289 pub is_inherited: bool,
6291 pub user: Option<UserInfo>,
6293}
6294
6295impl InviteeMembershipInfo {
6296 pub fn new(access_type: AccessLevel, invitee: InviteeInfo) -> Self {
6297 InviteeMembershipInfo {
6298 access_type,
6299 invitee,
6300 permissions: None,
6301 initials: None,
6302 is_inherited: false,
6303 user: None,
6304 }
6305 }
6306
6307 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
6308 self.permissions = Some(value);
6309 self
6310 }
6311
6312 pub fn with_initials(mut self, value: String) -> Self {
6313 self.initials = Some(value);
6314 self
6315 }
6316
6317 pub fn with_is_inherited(mut self, value: bool) -> Self {
6318 self.is_inherited = value;
6319 self
6320 }
6321
6322 pub fn with_user(mut self, value: UserInfo) -> Self {
6323 self.user = Some(value);
6324 self
6325 }
6326}
6327
6328const INVITEE_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
6329 "invitee",
6330 "permissions",
6331 "initials",
6332 "is_inherited",
6333 "user"];
6334impl InviteeMembershipInfo {
6335 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
6336 map: V,
6337 ) -> Result<InviteeMembershipInfo, V::Error> {
6338 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
6339 }
6340
6341 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
6342 mut map: V,
6343 optional: bool,
6344 ) -> Result<Option<InviteeMembershipInfo>, V::Error> {
6345 let mut field_access_type = None;
6346 let mut field_invitee = None;
6347 let mut field_permissions = None;
6348 let mut field_initials = None;
6349 let mut field_is_inherited = None;
6350 let mut field_user = None;
6351 let mut nothing = true;
6352 while let Some(key) = map.next_key::<&str>()? {
6353 nothing = false;
6354 match key {
6355 "access_type" => {
6356 if field_access_type.is_some() {
6357 return Err(::serde::de::Error::duplicate_field("access_type"));
6358 }
6359 field_access_type = Some(map.next_value()?);
6360 }
6361 "invitee" => {
6362 if field_invitee.is_some() {
6363 return Err(::serde::de::Error::duplicate_field("invitee"));
6364 }
6365 field_invitee = Some(map.next_value()?);
6366 }
6367 "permissions" => {
6368 if field_permissions.is_some() {
6369 return Err(::serde::de::Error::duplicate_field("permissions"));
6370 }
6371 field_permissions = Some(map.next_value()?);
6372 }
6373 "initials" => {
6374 if field_initials.is_some() {
6375 return Err(::serde::de::Error::duplicate_field("initials"));
6376 }
6377 field_initials = Some(map.next_value()?);
6378 }
6379 "is_inherited" => {
6380 if field_is_inherited.is_some() {
6381 return Err(::serde::de::Error::duplicate_field("is_inherited"));
6382 }
6383 field_is_inherited = Some(map.next_value()?);
6384 }
6385 "user" => {
6386 if field_user.is_some() {
6387 return Err(::serde::de::Error::duplicate_field("user"));
6388 }
6389 field_user = Some(map.next_value()?);
6390 }
6391 _ => {
6392 map.next_value::<::serde_json::Value>()?;
6394 }
6395 }
6396 }
6397 if optional && nothing {
6398 return Ok(None);
6399 }
6400 let result = InviteeMembershipInfo {
6401 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
6402 invitee: field_invitee.ok_or_else(|| ::serde::de::Error::missing_field("invitee"))?,
6403 permissions: field_permissions.and_then(Option::flatten),
6404 initials: field_initials.and_then(Option::flatten),
6405 is_inherited: field_is_inherited.unwrap_or(false),
6406 user: field_user.and_then(Option::flatten),
6407 };
6408 Ok(Some(result))
6409 }
6410
6411 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
6412 &self,
6413 s: &mut S::SerializeStruct,
6414 ) -> Result<(), S::Error> {
6415 use serde::ser::SerializeStruct;
6416 s.serialize_field("access_type", &self.access_type)?;
6417 s.serialize_field("invitee", &self.invitee)?;
6418 if let Some(val) = &self.permissions {
6419 s.serialize_field("permissions", val)?;
6420 }
6421 if let Some(val) = &self.initials {
6422 s.serialize_field("initials", val)?;
6423 }
6424 if self.is_inherited {
6425 s.serialize_field("is_inherited", &self.is_inherited)?;
6426 }
6427 if let Some(val) = &self.user {
6428 s.serialize_field("user", val)?;
6429 }
6430 Ok(())
6431 }
6432}
6433
6434impl<'de> ::serde::de::Deserialize<'de> for InviteeMembershipInfo {
6435 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6436 use serde::de::{MapAccess, Visitor};
6438 struct StructVisitor;
6439 impl<'de> Visitor<'de> for StructVisitor {
6440 type Value = InviteeMembershipInfo;
6441 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6442 f.write_str("a InviteeMembershipInfo struct")
6443 }
6444 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
6445 InviteeMembershipInfo::internal_deserialize(map)
6446 }
6447 }
6448 deserializer.deserialize_struct("InviteeMembershipInfo", INVITEE_MEMBERSHIP_INFO_FIELDS, StructVisitor)
6449 }
6450}
6451
6452impl ::serde::ser::Serialize for InviteeMembershipInfo {
6453 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6454 use serde::ser::SerializeStruct;
6456 let mut s = serializer.serialize_struct("InviteeMembershipInfo", 6)?;
6457 self.internal_serialize::<S>(&mut s)?;
6458 s.end()
6459 }
6460}
6461
6462impl From<InviteeMembershipInfo> for MembershipInfo {
6464 fn from(subtype: InviteeMembershipInfo) -> Self {
6465 Self {
6466 access_type: subtype.access_type,
6467 permissions: subtype.permissions,
6468 initials: subtype.initials,
6469 is_inherited: subtype.is_inherited,
6470 }
6471 }
6472}
6473#[derive(Debug, Clone, PartialEq, Eq)]
6477#[non_exhaustive] pub enum JobError {
6479 UnshareFolderError(UnshareFolderError),
6481 RemoveFolderMemberError(RemoveFolderMemberError),
6484 RelinquishFolderMembershipError(RelinquishFolderMembershipError),
6487 Other,
6490}
6491
6492impl<'de> ::serde::de::Deserialize<'de> for JobError {
6493 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6494 use serde::de::{self, MapAccess, Visitor};
6496 struct EnumVisitor;
6497 impl<'de> Visitor<'de> for EnumVisitor {
6498 type Value = JobError;
6499 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6500 f.write_str("a JobError structure")
6501 }
6502 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6503 let tag: &str = match map.next_key()? {
6504 Some(".tag") => map.next_value()?,
6505 _ => return Err(de::Error::missing_field(".tag"))
6506 };
6507 let value = match tag {
6508 "unshare_folder_error" => {
6509 match map.next_key()? {
6510 Some("unshare_folder_error") => JobError::UnshareFolderError(map.next_value()?),
6511 None => return Err(de::Error::missing_field("unshare_folder_error")),
6512 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6513 }
6514 }
6515 "remove_folder_member_error" => {
6516 match map.next_key()? {
6517 Some("remove_folder_member_error") => JobError::RemoveFolderMemberError(map.next_value()?),
6518 None => return Err(de::Error::missing_field("remove_folder_member_error")),
6519 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6520 }
6521 }
6522 "relinquish_folder_membership_error" => {
6523 match map.next_key()? {
6524 Some("relinquish_folder_membership_error") => JobError::RelinquishFolderMembershipError(map.next_value()?),
6525 None => return Err(de::Error::missing_field("relinquish_folder_membership_error")),
6526 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6527 }
6528 }
6529 _ => JobError::Other,
6530 };
6531 crate::eat_json_fields(&mut map)?;
6532 Ok(value)
6533 }
6534 }
6535 const VARIANTS: &[&str] = &["unshare_folder_error",
6536 "remove_folder_member_error",
6537 "relinquish_folder_membership_error",
6538 "other"];
6539 deserializer.deserialize_struct("JobError", VARIANTS, EnumVisitor)
6540 }
6541}
6542
6543impl ::serde::ser::Serialize for JobError {
6544 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6545 use serde::ser::SerializeStruct;
6547 match self {
6548 JobError::UnshareFolderError(x) => {
6549 let mut s = serializer.serialize_struct("JobError", 2)?;
6551 s.serialize_field(".tag", "unshare_folder_error")?;
6552 s.serialize_field("unshare_folder_error", x)?;
6553 s.end()
6554 }
6555 JobError::RemoveFolderMemberError(x) => {
6556 let mut s = serializer.serialize_struct("JobError", 2)?;
6558 s.serialize_field(".tag", "remove_folder_member_error")?;
6559 s.serialize_field("remove_folder_member_error", x)?;
6560 s.end()
6561 }
6562 JobError::RelinquishFolderMembershipError(x) => {
6563 let mut s = serializer.serialize_struct("JobError", 2)?;
6565 s.serialize_field(".tag", "relinquish_folder_membership_error")?;
6566 s.serialize_field("relinquish_folder_membership_error", x)?;
6567 s.end()
6568 }
6569 JobError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6570 }
6571 }
6572}
6573
6574impl ::std::error::Error for JobError {
6575 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
6576 match self {
6577 JobError::UnshareFolderError(inner) => Some(inner),
6578 JobError::RemoveFolderMemberError(inner) => Some(inner),
6579 JobError::RelinquishFolderMembershipError(inner) => Some(inner),
6580 _ => None,
6581 }
6582 }
6583}
6584
6585impl ::std::fmt::Display for JobError {
6586 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6587 match self {
6588 JobError::UnshareFolderError(inner) => write!(f, "JobError: {}", inner),
6589 JobError::RemoveFolderMemberError(inner) => write!(f, "JobError: {}", inner),
6590 JobError::RelinquishFolderMembershipError(inner) => write!(f, "JobError: {}", inner),
6591 _ => write!(f, "{:?}", *self),
6592 }
6593 }
6594}
6595
6596#[derive(Debug, Clone, PartialEq, Eq)]
6597pub enum JobStatus {
6598 InProgress,
6600 Complete,
6602 Failed(JobError),
6604}
6605
6606impl<'de> ::serde::de::Deserialize<'de> for JobStatus {
6607 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6608 use serde::de::{self, MapAccess, Visitor};
6610 struct EnumVisitor;
6611 impl<'de> Visitor<'de> for EnumVisitor {
6612 type Value = JobStatus;
6613 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6614 f.write_str("a JobStatus structure")
6615 }
6616 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6617 let tag: &str = match map.next_key()? {
6618 Some(".tag") => map.next_value()?,
6619 _ => return Err(de::Error::missing_field(".tag"))
6620 };
6621 let value = match tag {
6622 "in_progress" => JobStatus::InProgress,
6623 "complete" => JobStatus::Complete,
6624 "failed" => {
6625 match map.next_key()? {
6626 Some("failed") => JobStatus::Failed(map.next_value()?),
6627 None => return Err(de::Error::missing_field("failed")),
6628 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6629 }
6630 }
6631 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
6632 };
6633 crate::eat_json_fields(&mut map)?;
6634 Ok(value)
6635 }
6636 }
6637 const VARIANTS: &[&str] = &["in_progress",
6638 "complete",
6639 "failed"];
6640 deserializer.deserialize_struct("JobStatus", VARIANTS, EnumVisitor)
6641 }
6642}
6643
6644impl ::serde::ser::Serialize for JobStatus {
6645 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6646 use serde::ser::SerializeStruct;
6648 match self {
6649 JobStatus::InProgress => {
6650 let mut s = serializer.serialize_struct("JobStatus", 1)?;
6652 s.serialize_field(".tag", "in_progress")?;
6653 s.end()
6654 }
6655 JobStatus::Complete => {
6656 let mut s = serializer.serialize_struct("JobStatus", 1)?;
6658 s.serialize_field(".tag", "complete")?;
6659 s.end()
6660 }
6661 JobStatus::Failed(x) => {
6662 let mut s = serializer.serialize_struct("JobStatus", 2)?;
6664 s.serialize_field(".tag", "failed")?;
6665 s.serialize_field("failed", x)?;
6666 s.end()
6667 }
6668 }
6669 }
6670}
6671
6672impl From<crate::types::dbx_async::PollResultBase> for JobStatus {
6674 fn from(parent: crate::types::dbx_async::PollResultBase) -> Self {
6675 match parent {
6676 crate::types::dbx_async::PollResultBase::InProgress => JobStatus::InProgress,
6677 }
6678 }
6679}
6680#[derive(Debug, Clone, PartialEq, Eq)]
6681#[non_exhaustive] pub enum LinkAccessLevel {
6683 Viewer,
6685 Editor,
6687 Other,
6690}
6691
6692impl<'de> ::serde::de::Deserialize<'de> for LinkAccessLevel {
6693 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6694 use serde::de::{self, MapAccess, Visitor};
6696 struct EnumVisitor;
6697 impl<'de> Visitor<'de> for EnumVisitor {
6698 type Value = LinkAccessLevel;
6699 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6700 f.write_str("a LinkAccessLevel structure")
6701 }
6702 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6703 let tag: &str = match map.next_key()? {
6704 Some(".tag") => map.next_value()?,
6705 _ => return Err(de::Error::missing_field(".tag"))
6706 };
6707 let value = match tag {
6708 "viewer" => LinkAccessLevel::Viewer,
6709 "editor" => LinkAccessLevel::Editor,
6710 _ => LinkAccessLevel::Other,
6711 };
6712 crate::eat_json_fields(&mut map)?;
6713 Ok(value)
6714 }
6715 }
6716 const VARIANTS: &[&str] = &["viewer",
6717 "editor",
6718 "other"];
6719 deserializer.deserialize_struct("LinkAccessLevel", VARIANTS, EnumVisitor)
6720 }
6721}
6722
6723impl ::serde::ser::Serialize for LinkAccessLevel {
6724 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6725 use serde::ser::SerializeStruct;
6727 match self {
6728 LinkAccessLevel::Viewer => {
6729 let mut s = serializer.serialize_struct("LinkAccessLevel", 1)?;
6731 s.serialize_field(".tag", "viewer")?;
6732 s.end()
6733 }
6734 LinkAccessLevel::Editor => {
6735 let mut s = serializer.serialize_struct("LinkAccessLevel", 1)?;
6737 s.serialize_field(".tag", "editor")?;
6738 s.end()
6739 }
6740 LinkAccessLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6741 }
6742 }
6743}
6744
6745#[derive(Debug, Clone, PartialEq, Eq)]
6747#[non_exhaustive] pub enum LinkAction {
6749 ChangeAccessLevel,
6751 ChangeAudience,
6753 RemoveExpiry,
6755 RemovePassword,
6757 SetExpiry,
6759 SetPassword,
6761 Other,
6764}
6765
6766impl<'de> ::serde::de::Deserialize<'de> for LinkAction {
6767 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6768 use serde::de::{self, MapAccess, Visitor};
6770 struct EnumVisitor;
6771 impl<'de> Visitor<'de> for EnumVisitor {
6772 type Value = LinkAction;
6773 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6774 f.write_str("a LinkAction structure")
6775 }
6776 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6777 let tag: &str = match map.next_key()? {
6778 Some(".tag") => map.next_value()?,
6779 _ => return Err(de::Error::missing_field(".tag"))
6780 };
6781 let value = match tag {
6782 "change_access_level" => LinkAction::ChangeAccessLevel,
6783 "change_audience" => LinkAction::ChangeAudience,
6784 "remove_expiry" => LinkAction::RemoveExpiry,
6785 "remove_password" => LinkAction::RemovePassword,
6786 "set_expiry" => LinkAction::SetExpiry,
6787 "set_password" => LinkAction::SetPassword,
6788 _ => LinkAction::Other,
6789 };
6790 crate::eat_json_fields(&mut map)?;
6791 Ok(value)
6792 }
6793 }
6794 const VARIANTS: &[&str] = &["change_access_level",
6795 "change_audience",
6796 "remove_expiry",
6797 "remove_password",
6798 "set_expiry",
6799 "set_password",
6800 "other"];
6801 deserializer.deserialize_struct("LinkAction", VARIANTS, EnumVisitor)
6802 }
6803}
6804
6805impl ::serde::ser::Serialize for LinkAction {
6806 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6807 use serde::ser::SerializeStruct;
6809 match self {
6810 LinkAction::ChangeAccessLevel => {
6811 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6813 s.serialize_field(".tag", "change_access_level")?;
6814 s.end()
6815 }
6816 LinkAction::ChangeAudience => {
6817 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6819 s.serialize_field(".tag", "change_audience")?;
6820 s.end()
6821 }
6822 LinkAction::RemoveExpiry => {
6823 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6825 s.serialize_field(".tag", "remove_expiry")?;
6826 s.end()
6827 }
6828 LinkAction::RemovePassword => {
6829 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6831 s.serialize_field(".tag", "remove_password")?;
6832 s.end()
6833 }
6834 LinkAction::SetExpiry => {
6835 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6837 s.serialize_field(".tag", "set_expiry")?;
6838 s.end()
6839 }
6840 LinkAction::SetPassword => {
6841 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6843 s.serialize_field(".tag", "set_password")?;
6844 s.end()
6845 }
6846 LinkAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6847 }
6848 }
6849}
6850
6851#[derive(Debug, Clone, PartialEq, Eq)]
6852#[non_exhaustive] pub enum LinkAudience {
6854 Public,
6856 Team,
6858 NoOne,
6862 Password,
6865 Members,
6867 Other,
6870}
6871
6872impl<'de> ::serde::de::Deserialize<'de> for LinkAudience {
6873 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6874 use serde::de::{self, MapAccess, Visitor};
6876 struct EnumVisitor;
6877 impl<'de> Visitor<'de> for EnumVisitor {
6878 type Value = LinkAudience;
6879 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6880 f.write_str("a LinkAudience structure")
6881 }
6882 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6883 let tag: &str = match map.next_key()? {
6884 Some(".tag") => map.next_value()?,
6885 _ => return Err(de::Error::missing_field(".tag"))
6886 };
6887 let value = match tag {
6888 "public" => LinkAudience::Public,
6889 "team" => LinkAudience::Team,
6890 "no_one" => LinkAudience::NoOne,
6891 "password" => LinkAudience::Password,
6892 "members" => LinkAudience::Members,
6893 _ => LinkAudience::Other,
6894 };
6895 crate::eat_json_fields(&mut map)?;
6896 Ok(value)
6897 }
6898 }
6899 const VARIANTS: &[&str] = &["public",
6900 "team",
6901 "no_one",
6902 "password",
6903 "members",
6904 "other"];
6905 deserializer.deserialize_struct("LinkAudience", VARIANTS, EnumVisitor)
6906 }
6907}
6908
6909impl ::serde::ser::Serialize for LinkAudience {
6910 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6911 use serde::ser::SerializeStruct;
6913 match self {
6914 LinkAudience::Public => {
6915 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6917 s.serialize_field(".tag", "public")?;
6918 s.end()
6919 }
6920 LinkAudience::Team => {
6921 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6923 s.serialize_field(".tag", "team")?;
6924 s.end()
6925 }
6926 LinkAudience::NoOne => {
6927 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6929 s.serialize_field(".tag", "no_one")?;
6930 s.end()
6931 }
6932 LinkAudience::Password => {
6933 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6935 s.serialize_field(".tag", "password")?;
6936 s.end()
6937 }
6938 LinkAudience::Members => {
6939 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6941 s.serialize_field(".tag", "members")?;
6942 s.end()
6943 }
6944 LinkAudience::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6945 }
6946 }
6947}
6948
6949#[derive(Debug, Clone, PartialEq, Eq)]
6951#[non_exhaustive] pub enum LinkAudienceDisallowedReason {
6953 DeleteAndRecreate,
6955 RestrictedBySharedFolder,
6958 RestrictedByTeam,
6960 UserNotOnTeam,
6962 UserAccountType,
6964 PermissionDenied,
6966 Other,
6969}
6970
6971impl<'de> ::serde::de::Deserialize<'de> for LinkAudienceDisallowedReason {
6972 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6973 use serde::de::{self, MapAccess, Visitor};
6975 struct EnumVisitor;
6976 impl<'de> Visitor<'de> for EnumVisitor {
6977 type Value = LinkAudienceDisallowedReason;
6978 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6979 f.write_str("a LinkAudienceDisallowedReason structure")
6980 }
6981 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6982 let tag: &str = match map.next_key()? {
6983 Some(".tag") => map.next_value()?,
6984 _ => return Err(de::Error::missing_field(".tag"))
6985 };
6986 let value = match tag {
6987 "delete_and_recreate" => LinkAudienceDisallowedReason::DeleteAndRecreate,
6988 "restricted_by_shared_folder" => LinkAudienceDisallowedReason::RestrictedBySharedFolder,
6989 "restricted_by_team" => LinkAudienceDisallowedReason::RestrictedByTeam,
6990 "user_not_on_team" => LinkAudienceDisallowedReason::UserNotOnTeam,
6991 "user_account_type" => LinkAudienceDisallowedReason::UserAccountType,
6992 "permission_denied" => LinkAudienceDisallowedReason::PermissionDenied,
6993 _ => LinkAudienceDisallowedReason::Other,
6994 };
6995 crate::eat_json_fields(&mut map)?;
6996 Ok(value)
6997 }
6998 }
6999 const VARIANTS: &[&str] = &["delete_and_recreate",
7000 "restricted_by_shared_folder",
7001 "restricted_by_team",
7002 "user_not_on_team",
7003 "user_account_type",
7004 "permission_denied",
7005 "other"];
7006 deserializer.deserialize_struct("LinkAudienceDisallowedReason", VARIANTS, EnumVisitor)
7007 }
7008}
7009
7010impl ::serde::ser::Serialize for LinkAudienceDisallowedReason {
7011 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7012 use serde::ser::SerializeStruct;
7014 match self {
7015 LinkAudienceDisallowedReason::DeleteAndRecreate => {
7016 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7018 s.serialize_field(".tag", "delete_and_recreate")?;
7019 s.end()
7020 }
7021 LinkAudienceDisallowedReason::RestrictedBySharedFolder => {
7022 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7024 s.serialize_field(".tag", "restricted_by_shared_folder")?;
7025 s.end()
7026 }
7027 LinkAudienceDisallowedReason::RestrictedByTeam => {
7028 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7030 s.serialize_field(".tag", "restricted_by_team")?;
7031 s.end()
7032 }
7033 LinkAudienceDisallowedReason::UserNotOnTeam => {
7034 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7036 s.serialize_field(".tag", "user_not_on_team")?;
7037 s.end()
7038 }
7039 LinkAudienceDisallowedReason::UserAccountType => {
7040 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7042 s.serialize_field(".tag", "user_account_type")?;
7043 s.end()
7044 }
7045 LinkAudienceDisallowedReason::PermissionDenied => {
7046 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7048 s.serialize_field(".tag", "permission_denied")?;
7049 s.end()
7050 }
7051 LinkAudienceDisallowedReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
7052 }
7053 }
7054}
7055
7056impl From<VisibilityPolicyDisallowedReason> for LinkAudienceDisallowedReason {
7058 fn from(parent: VisibilityPolicyDisallowedReason) -> Self {
7059 match parent {
7060 VisibilityPolicyDisallowedReason::DeleteAndRecreate => LinkAudienceDisallowedReason::DeleteAndRecreate,
7061 VisibilityPolicyDisallowedReason::RestrictedBySharedFolder => LinkAudienceDisallowedReason::RestrictedBySharedFolder,
7062 VisibilityPolicyDisallowedReason::RestrictedByTeam => LinkAudienceDisallowedReason::RestrictedByTeam,
7063 VisibilityPolicyDisallowedReason::UserNotOnTeam => LinkAudienceDisallowedReason::UserNotOnTeam,
7064 VisibilityPolicyDisallowedReason::UserAccountType => LinkAudienceDisallowedReason::UserAccountType,
7065 VisibilityPolicyDisallowedReason::PermissionDenied => LinkAudienceDisallowedReason::PermissionDenied,
7066 VisibilityPolicyDisallowedReason::Other => LinkAudienceDisallowedReason::Other,
7067 }
7068 }
7069}
7070#[derive(Debug, Clone, PartialEq, Eq)]
7071#[non_exhaustive] pub struct LinkAudienceOption {
7073 pub audience: LinkAudience,
7075 pub allowed: bool,
7077 pub disallowed_reason: Option<LinkAudienceDisallowedReason>,
7080}
7081
7082impl LinkAudienceOption {
7083 pub fn new(audience: LinkAudience, allowed: bool) -> Self {
7084 LinkAudienceOption {
7085 audience,
7086 allowed,
7087 disallowed_reason: None,
7088 }
7089 }
7090
7091 pub fn with_disallowed_reason(mut self, value: LinkAudienceDisallowedReason) -> Self {
7092 self.disallowed_reason = Some(value);
7093 self
7094 }
7095}
7096
7097const LINK_AUDIENCE_OPTION_FIELDS: &[&str] = &["audience",
7098 "allowed",
7099 "disallowed_reason"];
7100impl LinkAudienceOption {
7101 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
7102 map: V,
7103 ) -> Result<LinkAudienceOption, V::Error> {
7104 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
7105 }
7106
7107 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
7108 mut map: V,
7109 optional: bool,
7110 ) -> Result<Option<LinkAudienceOption>, V::Error> {
7111 let mut field_audience = None;
7112 let mut field_allowed = None;
7113 let mut field_disallowed_reason = None;
7114 let mut nothing = true;
7115 while let Some(key) = map.next_key::<&str>()? {
7116 nothing = false;
7117 match key {
7118 "audience" => {
7119 if field_audience.is_some() {
7120 return Err(::serde::de::Error::duplicate_field("audience"));
7121 }
7122 field_audience = Some(map.next_value()?);
7123 }
7124 "allowed" => {
7125 if field_allowed.is_some() {
7126 return Err(::serde::de::Error::duplicate_field("allowed"));
7127 }
7128 field_allowed = Some(map.next_value()?);
7129 }
7130 "disallowed_reason" => {
7131 if field_disallowed_reason.is_some() {
7132 return Err(::serde::de::Error::duplicate_field("disallowed_reason"));
7133 }
7134 field_disallowed_reason = Some(map.next_value()?);
7135 }
7136 _ => {
7137 map.next_value::<::serde_json::Value>()?;
7139 }
7140 }
7141 }
7142 if optional && nothing {
7143 return Ok(None);
7144 }
7145 let result = LinkAudienceOption {
7146 audience: field_audience.ok_or_else(|| ::serde::de::Error::missing_field("audience"))?,
7147 allowed: field_allowed.ok_or_else(|| ::serde::de::Error::missing_field("allowed"))?,
7148 disallowed_reason: field_disallowed_reason.and_then(Option::flatten),
7149 };
7150 Ok(Some(result))
7151 }
7152
7153 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
7154 &self,
7155 s: &mut S::SerializeStruct,
7156 ) -> Result<(), S::Error> {
7157 use serde::ser::SerializeStruct;
7158 s.serialize_field("audience", &self.audience)?;
7159 s.serialize_field("allowed", &self.allowed)?;
7160 if let Some(val) = &self.disallowed_reason {
7161 s.serialize_field("disallowed_reason", val)?;
7162 }
7163 Ok(())
7164 }
7165}
7166
7167impl<'de> ::serde::de::Deserialize<'de> for LinkAudienceOption {
7168 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7169 use serde::de::{MapAccess, Visitor};
7171 struct StructVisitor;
7172 impl<'de> Visitor<'de> for StructVisitor {
7173 type Value = LinkAudienceOption;
7174 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7175 f.write_str("a LinkAudienceOption struct")
7176 }
7177 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
7178 LinkAudienceOption::internal_deserialize(map)
7179 }
7180 }
7181 deserializer.deserialize_struct("LinkAudienceOption", LINK_AUDIENCE_OPTION_FIELDS, StructVisitor)
7182 }
7183}
7184
7185impl ::serde::ser::Serialize for LinkAudienceOption {
7186 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7187 use serde::ser::SerializeStruct;
7189 let mut s = serializer.serialize_struct("LinkAudienceOption", 3)?;
7190 self.internal_serialize::<S>(&mut s)?;
7191 s.end()
7192 }
7193}
7194
7195#[derive(Debug, Clone, PartialEq, Eq)]
7196#[non_exhaustive] pub enum LinkExpiry {
7198 RemoveExpiry,
7200 SetExpiry(crate::types::common::DropboxTimestamp),
7202 Other,
7205}
7206
7207impl<'de> ::serde::de::Deserialize<'de> for LinkExpiry {
7208 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7209 use serde::de::{self, MapAccess, Visitor};
7211 struct EnumVisitor;
7212 impl<'de> Visitor<'de> for EnumVisitor {
7213 type Value = LinkExpiry;
7214 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7215 f.write_str("a LinkExpiry structure")
7216 }
7217 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
7218 let tag: &str = match map.next_key()? {
7219 Some(".tag") => map.next_value()?,
7220 _ => return Err(de::Error::missing_field(".tag"))
7221 };
7222 let value = match tag {
7223 "remove_expiry" => LinkExpiry::RemoveExpiry,
7224 "set_expiry" => {
7225 match map.next_key()? {
7226 Some("set_expiry") => LinkExpiry::SetExpiry(map.next_value()?),
7227 None => return Err(de::Error::missing_field("set_expiry")),
7228 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
7229 }
7230 }
7231 _ => LinkExpiry::Other,
7232 };
7233 crate::eat_json_fields(&mut map)?;
7234 Ok(value)
7235 }
7236 }
7237 const VARIANTS: &[&str] = &["remove_expiry",
7238 "set_expiry",
7239 "other"];
7240 deserializer.deserialize_struct("LinkExpiry", VARIANTS, EnumVisitor)
7241 }
7242}
7243
7244impl ::serde::ser::Serialize for LinkExpiry {
7245 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7246 use serde::ser::SerializeStruct;
7248 match self {
7249 LinkExpiry::RemoveExpiry => {
7250 let mut s = serializer.serialize_struct("LinkExpiry", 1)?;
7252 s.serialize_field(".tag", "remove_expiry")?;
7253 s.end()
7254 }
7255 LinkExpiry::SetExpiry(x) => {
7256 let mut s = serializer.serialize_struct("LinkExpiry", 2)?;
7258 s.serialize_field(".tag", "set_expiry")?;
7259 s.serialize_field("set_expiry", x)?;
7260 s.end()
7261 }
7262 LinkExpiry::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
7263 }
7264 }
7265}
7266
7267#[derive(Debug, Clone, PartialEq, Eq)]
7270#[non_exhaustive] pub enum LinkMetadata {
7272 Path(PathLinkMetadata),
7273 Collection(CollectionLinkMetadata),
7274 Other,
7277}
7278
7279impl<'de> ::serde::de::Deserialize<'de> for LinkMetadata {
7280 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7281 use serde::de::{self, MapAccess, Visitor};
7283 struct EnumVisitor;
7284 impl<'de> Visitor<'de> for EnumVisitor {
7285 type Value = LinkMetadata;
7286 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7287 f.write_str("a LinkMetadata structure")
7288 }
7289 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
7290 let tag = match map.next_key()? {
7291 Some(".tag") => map.next_value()?,
7292 _ => return Err(de::Error::missing_field(".tag"))
7293 };
7294 match tag {
7295 "path" => Ok(LinkMetadata::Path(PathLinkMetadata::internal_deserialize(map)?)),
7296 "collection" => Ok(LinkMetadata::Collection(CollectionLinkMetadata::internal_deserialize(map)?)),
7297 _ => {
7298 crate::eat_json_fields(&mut map)?;
7299 Ok(LinkMetadata::Other)
7300 }
7301 }
7302 }
7303 }
7304 const VARIANTS: &[&str] = &["path",
7305 "collection"];
7306 deserializer.deserialize_struct("LinkMetadata", VARIANTS, EnumVisitor)
7307 }
7308}
7309
7310impl ::serde::ser::Serialize for LinkMetadata {
7311 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7312 use serde::ser::SerializeStruct;
7314 match self {
7315 LinkMetadata::Path(x) => {
7316 let mut s = serializer.serialize_struct("LinkMetadata", 5)?;
7317 s.serialize_field(".tag", "path")?;
7318 x.internal_serialize::<S>(&mut s)?;
7319 s.end()
7320 }
7321 LinkMetadata::Collection(x) => {
7322 let mut s = serializer.serialize_struct("LinkMetadata", 4)?;
7323 s.serialize_field(".tag", "collection")?;
7324 x.internal_serialize::<S>(&mut s)?;
7325 s.end()
7326 }
7327 LinkMetadata::Other => Err(::serde::ser::Error::custom("cannot serialize unknown variant"))
7328 }
7329 }
7330}
7331
7332#[derive(Debug, Clone, PartialEq, Eq)]
7333#[non_exhaustive] pub enum LinkPassword {
7335 RemovePassword,
7337 SetPassword(String),
7339 Other,
7342}
7343
7344impl<'de> ::serde::de::Deserialize<'de> for LinkPassword {
7345 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7346 use serde::de::{self, MapAccess, Visitor};
7348 struct EnumVisitor;
7349 impl<'de> Visitor<'de> for EnumVisitor {
7350 type Value = LinkPassword;
7351 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7352 f.write_str("a LinkPassword structure")
7353 }
7354 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
7355 let tag: &str = match map.next_key()? {
7356 Some(".tag") => map.next_value()?,
7357 _ => return Err(de::Error::missing_field(".tag"))
7358 };
7359 let value = match tag {
7360 "remove_password" => LinkPassword::RemovePassword,
7361 "set_password" => {
7362 match map.next_key()? {
7363 Some("set_password") => LinkPassword::SetPassword(map.next_value()?),
7364 None => return Err(de::Error::missing_field("set_password")),
7365 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
7366 }
7367 }
7368 _ => LinkPassword::Other,
7369 };
7370 crate::eat_json_fields(&mut map)?;
7371 Ok(value)
7372 }
7373 }
7374 const VARIANTS: &[&str] = &["remove_password",
7375 "set_password",
7376 "other"];
7377 deserializer.deserialize_struct("LinkPassword", VARIANTS, EnumVisitor)
7378 }
7379}
7380
7381impl ::serde::ser::Serialize for LinkPassword {
7382 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7383 use serde::ser::SerializeStruct;
7385 match self {
7386 LinkPassword::RemovePassword => {
7387 let mut s = serializer.serialize_struct("LinkPassword", 1)?;
7389 s.serialize_field(".tag", "remove_password")?;
7390 s.end()
7391 }
7392 LinkPassword::SetPassword(x) => {
7393 let mut s = serializer.serialize_struct("LinkPassword", 2)?;
7395 s.serialize_field(".tag", "set_password")?;
7396 s.serialize_field("set_password", x)?;
7397 s.end()
7398 }
7399 LinkPassword::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
7400 }
7401 }
7402}
7403
7404#[derive(Debug, Clone, PartialEq, Eq)]
7406#[non_exhaustive] pub struct LinkPermission {
7408 pub action: LinkAction,
7409 pub allow: bool,
7410 pub reason: Option<PermissionDeniedReason>,
7411}
7412
7413impl LinkPermission {
7414 pub fn new(action: LinkAction, allow: bool) -> Self {
7415 LinkPermission {
7416 action,
7417 allow,
7418 reason: None,
7419 }
7420 }
7421
7422 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
7423 self.reason = Some(value);
7424 self
7425 }
7426}
7427
7428const LINK_PERMISSION_FIELDS: &[&str] = &["action",
7429 "allow",
7430 "reason"];
7431impl LinkPermission {
7432 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
7433 map: V,
7434 ) -> Result<LinkPermission, V::Error> {
7435 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
7436 }
7437
7438 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
7439 mut map: V,
7440 optional: bool,
7441 ) -> Result<Option<LinkPermission>, V::Error> {
7442 let mut field_action = None;
7443 let mut field_allow = None;
7444 let mut field_reason = None;
7445 let mut nothing = true;
7446 while let Some(key) = map.next_key::<&str>()? {
7447 nothing = false;
7448 match key {
7449 "action" => {
7450 if field_action.is_some() {
7451 return Err(::serde::de::Error::duplicate_field("action"));
7452 }
7453 field_action = Some(map.next_value()?);
7454 }
7455 "allow" => {
7456 if field_allow.is_some() {
7457 return Err(::serde::de::Error::duplicate_field("allow"));
7458 }
7459 field_allow = Some(map.next_value()?);
7460 }
7461 "reason" => {
7462 if field_reason.is_some() {
7463 return Err(::serde::de::Error::duplicate_field("reason"));
7464 }
7465 field_reason = Some(map.next_value()?);
7466 }
7467 _ => {
7468 map.next_value::<::serde_json::Value>()?;
7470 }
7471 }
7472 }
7473 if optional && nothing {
7474 return Ok(None);
7475 }
7476 let result = LinkPermission {
7477 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
7478 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
7479 reason: field_reason.and_then(Option::flatten),
7480 };
7481 Ok(Some(result))
7482 }
7483
7484 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
7485 &self,
7486 s: &mut S::SerializeStruct,
7487 ) -> Result<(), S::Error> {
7488 use serde::ser::SerializeStruct;
7489 s.serialize_field("action", &self.action)?;
7490 s.serialize_field("allow", &self.allow)?;
7491 if let Some(val) = &self.reason {
7492 s.serialize_field("reason", val)?;
7493 }
7494 Ok(())
7495 }
7496}
7497
7498impl<'de> ::serde::de::Deserialize<'de> for LinkPermission {
7499 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7500 use serde::de::{MapAccess, Visitor};
7502 struct StructVisitor;
7503 impl<'de> Visitor<'de> for StructVisitor {
7504 type Value = LinkPermission;
7505 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7506 f.write_str("a LinkPermission struct")
7507 }
7508 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
7509 LinkPermission::internal_deserialize(map)
7510 }
7511 }
7512 deserializer.deserialize_struct("LinkPermission", LINK_PERMISSION_FIELDS, StructVisitor)
7513 }
7514}
7515
7516impl ::serde::ser::Serialize for LinkPermission {
7517 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7518 use serde::ser::SerializeStruct;
7520 let mut s = serializer.serialize_struct("LinkPermission", 3)?;
7521 self.internal_serialize::<S>(&mut s)?;
7522 s.end()
7523 }
7524}
7525
7526#[derive(Debug, Clone, PartialEq, Eq)]
7527#[non_exhaustive] pub struct LinkPermissions {
7529 pub can_revoke: bool,
7531 pub visibility_policies: Vec<VisibilityPolicy>,
7533 pub can_set_expiry: bool,
7536 pub can_remove_expiry: bool,
7538 pub allow_download: bool,
7540 pub can_allow_download: bool,
7543 pub can_disallow_download: bool,
7546 pub allow_comments: bool,
7549 pub team_restricts_comments: bool,
7551 pub resolved_visibility: Option<ResolvedVisibility>,
7557 pub requested_visibility: Option<RequestedVisibility>,
7562 pub revoke_failure_reason: Option<SharedLinkAccessFailureReason>,
7565 pub effective_audience: Option<LinkAudience>,
7568 pub link_access_level: Option<LinkAccessLevel>,
7575 pub audience_options: Option<Vec<LinkAudienceOption>>,
7577 pub can_set_password: Option<bool>,
7579 pub can_remove_password: Option<bool>,
7581 pub require_password: Option<bool>,
7583 pub can_use_extended_sharing_controls: Option<bool>,
7585 pub can_sync: Option<bool>,
7587 pub can_request_access: Option<bool>,
7589 pub enforce_shared_link_password_policy: Option<crate::types::team_policies::EnforceLinkPasswordPolicy>,
7592 pub days_to_expire_policy: Option<crate::types::team_policies::DefaultLinkExpirationDaysPolicy>,
7595 pub change_shared_link_expiration_policy: Option<ChangeLinkExpirationPolicy>,
7601}
7602
7603impl LinkPermissions {
7604 pub fn new(
7605 can_revoke: bool,
7606 visibility_policies: Vec<VisibilityPolicy>,
7607 can_set_expiry: bool,
7608 can_remove_expiry: bool,
7609 allow_download: bool,
7610 can_allow_download: bool,
7611 can_disallow_download: bool,
7612 allow_comments: bool,
7613 team_restricts_comments: bool,
7614 ) -> Self {
7615 LinkPermissions {
7616 can_revoke,
7617 visibility_policies,
7618 can_set_expiry,
7619 can_remove_expiry,
7620 allow_download,
7621 can_allow_download,
7622 can_disallow_download,
7623 allow_comments,
7624 team_restricts_comments,
7625 resolved_visibility: None,
7626 requested_visibility: None,
7627 revoke_failure_reason: None,
7628 effective_audience: None,
7629 link_access_level: None,
7630 audience_options: None,
7631 can_set_password: None,
7632 can_remove_password: None,
7633 require_password: None,
7634 can_use_extended_sharing_controls: None,
7635 can_sync: None,
7636 can_request_access: None,
7637 enforce_shared_link_password_policy: None,
7638 days_to_expire_policy: None,
7639 change_shared_link_expiration_policy: None,
7640 }
7641 }
7642
7643 pub fn with_resolved_visibility(mut self, value: ResolvedVisibility) -> Self {
7644 self.resolved_visibility = Some(value);
7645 self
7646 }
7647
7648 pub fn with_requested_visibility(mut self, value: RequestedVisibility) -> Self {
7649 self.requested_visibility = Some(value);
7650 self
7651 }
7652
7653 pub fn with_revoke_failure_reason(mut self, value: SharedLinkAccessFailureReason) -> Self {
7654 self.revoke_failure_reason = Some(value);
7655 self
7656 }
7657
7658 pub fn with_effective_audience(mut self, value: LinkAudience) -> Self {
7659 self.effective_audience = Some(value);
7660 self
7661 }
7662
7663 pub fn with_link_access_level(mut self, value: LinkAccessLevel) -> Self {
7664 self.link_access_level = Some(value);
7665 self
7666 }
7667
7668 pub fn with_audience_options(mut self, value: Vec<LinkAudienceOption>) -> Self {
7669 self.audience_options = Some(value);
7670 self
7671 }
7672
7673 pub fn with_can_set_password(mut self, value: bool) -> Self {
7674 self.can_set_password = Some(value);
7675 self
7676 }
7677
7678 pub fn with_can_remove_password(mut self, value: bool) -> Self {
7679 self.can_remove_password = Some(value);
7680 self
7681 }
7682
7683 pub fn with_require_password(mut self, value: bool) -> Self {
7684 self.require_password = Some(value);
7685 self
7686 }
7687
7688 pub fn with_can_use_extended_sharing_controls(mut self, value: bool) -> Self {
7689 self.can_use_extended_sharing_controls = Some(value);
7690 self
7691 }
7692
7693 pub fn with_can_sync(mut self, value: bool) -> Self {
7694 self.can_sync = Some(value);
7695 self
7696 }
7697
7698 pub fn with_can_request_access(mut self, value: bool) -> Self {
7699 self.can_request_access = Some(value);
7700 self
7701 }
7702
7703 pub fn with_enforce_shared_link_password_policy(
7704 mut self,
7705 value: crate::types::team_policies::EnforceLinkPasswordPolicy,
7706 ) -> Self {
7707 self.enforce_shared_link_password_policy = Some(value);
7708 self
7709 }
7710
7711 pub fn with_days_to_expire_policy(
7712 mut self,
7713 value: crate::types::team_policies::DefaultLinkExpirationDaysPolicy,
7714 ) -> Self {
7715 self.days_to_expire_policy = Some(value);
7716 self
7717 }
7718
7719 pub fn with_change_shared_link_expiration_policy(
7720 mut self,
7721 value: ChangeLinkExpirationPolicy,
7722 ) -> Self {
7723 self.change_shared_link_expiration_policy = Some(value);
7724 self
7725 }
7726}
7727
7728const LINK_PERMISSIONS_FIELDS: &[&str] = &["can_revoke",
7729 "visibility_policies",
7730 "can_set_expiry",
7731 "can_remove_expiry",
7732 "allow_download",
7733 "can_allow_download",
7734 "can_disallow_download",
7735 "allow_comments",
7736 "team_restricts_comments",
7737 "resolved_visibility",
7738 "requested_visibility",
7739 "revoke_failure_reason",
7740 "effective_audience",
7741 "link_access_level",
7742 "audience_options",
7743 "can_set_password",
7744 "can_remove_password",
7745 "require_password",
7746 "can_use_extended_sharing_controls",
7747 "can_sync",
7748 "can_request_access",
7749 "enforce_shared_link_password_policy",
7750 "days_to_expire_policy",
7751 "change_shared_link_expiration_policy"];
7752impl LinkPermissions {
7753 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
7754 map: V,
7755 ) -> Result<LinkPermissions, V::Error> {
7756 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
7757 }
7758
7759 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
7760 mut map: V,
7761 optional: bool,
7762 ) -> Result<Option<LinkPermissions>, V::Error> {
7763 let mut field_can_revoke = None;
7764 let mut field_visibility_policies = None;
7765 let mut field_can_set_expiry = None;
7766 let mut field_can_remove_expiry = None;
7767 let mut field_allow_download = None;
7768 let mut field_can_allow_download = None;
7769 let mut field_can_disallow_download = None;
7770 let mut field_allow_comments = None;
7771 let mut field_team_restricts_comments = None;
7772 let mut field_resolved_visibility = None;
7773 let mut field_requested_visibility = None;
7774 let mut field_revoke_failure_reason = None;
7775 let mut field_effective_audience = None;
7776 let mut field_link_access_level = None;
7777 let mut field_audience_options = None;
7778 let mut field_can_set_password = None;
7779 let mut field_can_remove_password = None;
7780 let mut field_require_password = None;
7781 let mut field_can_use_extended_sharing_controls = None;
7782 let mut field_can_sync = None;
7783 let mut field_can_request_access = None;
7784 let mut field_enforce_shared_link_password_policy = None;
7785 let mut field_days_to_expire_policy = None;
7786 let mut field_change_shared_link_expiration_policy = None;
7787 let mut nothing = true;
7788 while let Some(key) = map.next_key::<&str>()? {
7789 nothing = false;
7790 match key {
7791 "can_revoke" => {
7792 if field_can_revoke.is_some() {
7793 return Err(::serde::de::Error::duplicate_field("can_revoke"));
7794 }
7795 field_can_revoke = Some(map.next_value()?);
7796 }
7797 "visibility_policies" => {
7798 if field_visibility_policies.is_some() {
7799 return Err(::serde::de::Error::duplicate_field("visibility_policies"));
7800 }
7801 field_visibility_policies = Some(map.next_value()?);
7802 }
7803 "can_set_expiry" => {
7804 if field_can_set_expiry.is_some() {
7805 return Err(::serde::de::Error::duplicate_field("can_set_expiry"));
7806 }
7807 field_can_set_expiry = Some(map.next_value()?);
7808 }
7809 "can_remove_expiry" => {
7810 if field_can_remove_expiry.is_some() {
7811 return Err(::serde::de::Error::duplicate_field("can_remove_expiry"));
7812 }
7813 field_can_remove_expiry = Some(map.next_value()?);
7814 }
7815 "allow_download" => {
7816 if field_allow_download.is_some() {
7817 return Err(::serde::de::Error::duplicate_field("allow_download"));
7818 }
7819 field_allow_download = Some(map.next_value()?);
7820 }
7821 "can_allow_download" => {
7822 if field_can_allow_download.is_some() {
7823 return Err(::serde::de::Error::duplicate_field("can_allow_download"));
7824 }
7825 field_can_allow_download = Some(map.next_value()?);
7826 }
7827 "can_disallow_download" => {
7828 if field_can_disallow_download.is_some() {
7829 return Err(::serde::de::Error::duplicate_field("can_disallow_download"));
7830 }
7831 field_can_disallow_download = Some(map.next_value()?);
7832 }
7833 "allow_comments" => {
7834 if field_allow_comments.is_some() {
7835 return Err(::serde::de::Error::duplicate_field("allow_comments"));
7836 }
7837 field_allow_comments = Some(map.next_value()?);
7838 }
7839 "team_restricts_comments" => {
7840 if field_team_restricts_comments.is_some() {
7841 return Err(::serde::de::Error::duplicate_field("team_restricts_comments"));
7842 }
7843 field_team_restricts_comments = Some(map.next_value()?);
7844 }
7845 "resolved_visibility" => {
7846 if field_resolved_visibility.is_some() {
7847 return Err(::serde::de::Error::duplicate_field("resolved_visibility"));
7848 }
7849 field_resolved_visibility = Some(map.next_value()?);
7850 }
7851 "requested_visibility" => {
7852 if field_requested_visibility.is_some() {
7853 return Err(::serde::de::Error::duplicate_field("requested_visibility"));
7854 }
7855 field_requested_visibility = Some(map.next_value()?);
7856 }
7857 "revoke_failure_reason" => {
7858 if field_revoke_failure_reason.is_some() {
7859 return Err(::serde::de::Error::duplicate_field("revoke_failure_reason"));
7860 }
7861 field_revoke_failure_reason = Some(map.next_value()?);
7862 }
7863 "effective_audience" => {
7864 if field_effective_audience.is_some() {
7865 return Err(::serde::de::Error::duplicate_field("effective_audience"));
7866 }
7867 field_effective_audience = Some(map.next_value()?);
7868 }
7869 "link_access_level" => {
7870 if field_link_access_level.is_some() {
7871 return Err(::serde::de::Error::duplicate_field("link_access_level"));
7872 }
7873 field_link_access_level = Some(map.next_value()?);
7874 }
7875 "audience_options" => {
7876 if field_audience_options.is_some() {
7877 return Err(::serde::de::Error::duplicate_field("audience_options"));
7878 }
7879 field_audience_options = Some(map.next_value()?);
7880 }
7881 "can_set_password" => {
7882 if field_can_set_password.is_some() {
7883 return Err(::serde::de::Error::duplicate_field("can_set_password"));
7884 }
7885 field_can_set_password = Some(map.next_value()?);
7886 }
7887 "can_remove_password" => {
7888 if field_can_remove_password.is_some() {
7889 return Err(::serde::de::Error::duplicate_field("can_remove_password"));
7890 }
7891 field_can_remove_password = Some(map.next_value()?);
7892 }
7893 "require_password" => {
7894 if field_require_password.is_some() {
7895 return Err(::serde::de::Error::duplicate_field("require_password"));
7896 }
7897 field_require_password = Some(map.next_value()?);
7898 }
7899 "can_use_extended_sharing_controls" => {
7900 if field_can_use_extended_sharing_controls.is_some() {
7901 return Err(::serde::de::Error::duplicate_field("can_use_extended_sharing_controls"));
7902 }
7903 field_can_use_extended_sharing_controls = Some(map.next_value()?);
7904 }
7905 "can_sync" => {
7906 if field_can_sync.is_some() {
7907 return Err(::serde::de::Error::duplicate_field("can_sync"));
7908 }
7909 field_can_sync = Some(map.next_value()?);
7910 }
7911 "can_request_access" => {
7912 if field_can_request_access.is_some() {
7913 return Err(::serde::de::Error::duplicate_field("can_request_access"));
7914 }
7915 field_can_request_access = Some(map.next_value()?);
7916 }
7917 "enforce_shared_link_password_policy" => {
7918 if field_enforce_shared_link_password_policy.is_some() {
7919 return Err(::serde::de::Error::duplicate_field("enforce_shared_link_password_policy"));
7920 }
7921 field_enforce_shared_link_password_policy = Some(map.next_value()?);
7922 }
7923 "days_to_expire_policy" => {
7924 if field_days_to_expire_policy.is_some() {
7925 return Err(::serde::de::Error::duplicate_field("days_to_expire_policy"));
7926 }
7927 field_days_to_expire_policy = Some(map.next_value()?);
7928 }
7929 "change_shared_link_expiration_policy" => {
7930 if field_change_shared_link_expiration_policy.is_some() {
7931 return Err(::serde::de::Error::duplicate_field("change_shared_link_expiration_policy"));
7932 }
7933 field_change_shared_link_expiration_policy = Some(map.next_value()?);
7934 }
7935 _ => {
7936 map.next_value::<::serde_json::Value>()?;
7938 }
7939 }
7940 }
7941 if optional && nothing {
7942 return Ok(None);
7943 }
7944 let result = LinkPermissions {
7945 can_revoke: field_can_revoke.ok_or_else(|| ::serde::de::Error::missing_field("can_revoke"))?,
7946 visibility_policies: field_visibility_policies.ok_or_else(|| ::serde::de::Error::missing_field("visibility_policies"))?,
7947 can_set_expiry: field_can_set_expiry.ok_or_else(|| ::serde::de::Error::missing_field("can_set_expiry"))?,
7948 can_remove_expiry: field_can_remove_expiry.ok_or_else(|| ::serde::de::Error::missing_field("can_remove_expiry"))?,
7949 allow_download: field_allow_download.ok_or_else(|| ::serde::de::Error::missing_field("allow_download"))?,
7950 can_allow_download: field_can_allow_download.ok_or_else(|| ::serde::de::Error::missing_field("can_allow_download"))?,
7951 can_disallow_download: field_can_disallow_download.ok_or_else(|| ::serde::de::Error::missing_field("can_disallow_download"))?,
7952 allow_comments: field_allow_comments.ok_or_else(|| ::serde::de::Error::missing_field("allow_comments"))?,
7953 team_restricts_comments: field_team_restricts_comments.ok_or_else(|| ::serde::de::Error::missing_field("team_restricts_comments"))?,
7954 resolved_visibility: field_resolved_visibility.and_then(Option::flatten),
7955 requested_visibility: field_requested_visibility.and_then(Option::flatten),
7956 revoke_failure_reason: field_revoke_failure_reason.and_then(Option::flatten),
7957 effective_audience: field_effective_audience.and_then(Option::flatten),
7958 link_access_level: field_link_access_level.and_then(Option::flatten),
7959 audience_options: field_audience_options.and_then(Option::flatten),
7960 can_set_password: field_can_set_password.and_then(Option::flatten),
7961 can_remove_password: field_can_remove_password.and_then(Option::flatten),
7962 require_password: field_require_password.and_then(Option::flatten),
7963 can_use_extended_sharing_controls: field_can_use_extended_sharing_controls.and_then(Option::flatten),
7964 can_sync: field_can_sync.and_then(Option::flatten),
7965 can_request_access: field_can_request_access.and_then(Option::flatten),
7966 enforce_shared_link_password_policy: field_enforce_shared_link_password_policy.and_then(Option::flatten),
7967 days_to_expire_policy: field_days_to_expire_policy.and_then(Option::flatten),
7968 change_shared_link_expiration_policy: field_change_shared_link_expiration_policy.and_then(Option::flatten),
7969 };
7970 Ok(Some(result))
7971 }
7972
7973 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
7974 &self,
7975 s: &mut S::SerializeStruct,
7976 ) -> Result<(), S::Error> {
7977 use serde::ser::SerializeStruct;
7978 s.serialize_field("can_revoke", &self.can_revoke)?;
7979 s.serialize_field("visibility_policies", &self.visibility_policies)?;
7980 s.serialize_field("can_set_expiry", &self.can_set_expiry)?;
7981 s.serialize_field("can_remove_expiry", &self.can_remove_expiry)?;
7982 s.serialize_field("allow_download", &self.allow_download)?;
7983 s.serialize_field("can_allow_download", &self.can_allow_download)?;
7984 s.serialize_field("can_disallow_download", &self.can_disallow_download)?;
7985 s.serialize_field("allow_comments", &self.allow_comments)?;
7986 s.serialize_field("team_restricts_comments", &self.team_restricts_comments)?;
7987 if let Some(val) = &self.resolved_visibility {
7988 s.serialize_field("resolved_visibility", val)?;
7989 }
7990 if let Some(val) = &self.requested_visibility {
7991 s.serialize_field("requested_visibility", val)?;
7992 }
7993 if let Some(val) = &self.revoke_failure_reason {
7994 s.serialize_field("revoke_failure_reason", val)?;
7995 }
7996 if let Some(val) = &self.effective_audience {
7997 s.serialize_field("effective_audience", val)?;
7998 }
7999 if let Some(val) = &self.link_access_level {
8000 s.serialize_field("link_access_level", val)?;
8001 }
8002 if let Some(val) = &self.audience_options {
8003 s.serialize_field("audience_options", val)?;
8004 }
8005 if let Some(val) = &self.can_set_password {
8006 s.serialize_field("can_set_password", val)?;
8007 }
8008 if let Some(val) = &self.can_remove_password {
8009 s.serialize_field("can_remove_password", val)?;
8010 }
8011 if let Some(val) = &self.require_password {
8012 s.serialize_field("require_password", val)?;
8013 }
8014 if let Some(val) = &self.can_use_extended_sharing_controls {
8015 s.serialize_field("can_use_extended_sharing_controls", val)?;
8016 }
8017 if let Some(val) = &self.can_sync {
8018 s.serialize_field("can_sync", val)?;
8019 }
8020 if let Some(val) = &self.can_request_access {
8021 s.serialize_field("can_request_access", val)?;
8022 }
8023 if let Some(val) = &self.enforce_shared_link_password_policy {
8024 s.serialize_field("enforce_shared_link_password_policy", val)?;
8025 }
8026 if let Some(val) = &self.days_to_expire_policy {
8027 s.serialize_field("days_to_expire_policy", val)?;
8028 }
8029 if let Some(val) = &self.change_shared_link_expiration_policy {
8030 s.serialize_field("change_shared_link_expiration_policy", val)?;
8031 }
8032 Ok(())
8033 }
8034}
8035
8036impl<'de> ::serde::de::Deserialize<'de> for LinkPermissions {
8037 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8038 use serde::de::{MapAccess, Visitor};
8040 struct StructVisitor;
8041 impl<'de> Visitor<'de> for StructVisitor {
8042 type Value = LinkPermissions;
8043 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8044 f.write_str("a LinkPermissions struct")
8045 }
8046 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8047 LinkPermissions::internal_deserialize(map)
8048 }
8049 }
8050 deserializer.deserialize_struct("LinkPermissions", LINK_PERMISSIONS_FIELDS, StructVisitor)
8051 }
8052}
8053
8054impl ::serde::ser::Serialize for LinkPermissions {
8055 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8056 use serde::ser::SerializeStruct;
8058 let mut s = serializer.serialize_struct("LinkPermissions", 24)?;
8059 self.internal_serialize::<S>(&mut s)?;
8060 s.end()
8061 }
8062}
8063
8064#[derive(Debug, Clone, PartialEq, Eq, Default)]
8066#[non_exhaustive] pub struct LinkSettings {
8068 pub access_level: Option<AccessLevel>,
8071 pub audience: Option<LinkAudience>,
8073 pub expiry: Option<LinkExpiry>,
8075 pub password: Option<LinkPassword>,
8077}
8078
8079impl LinkSettings {
8080 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
8081 self.access_level = Some(value);
8082 self
8083 }
8084
8085 pub fn with_audience(mut self, value: LinkAudience) -> Self {
8086 self.audience = Some(value);
8087 self
8088 }
8089
8090 pub fn with_expiry(mut self, value: LinkExpiry) -> Self {
8091 self.expiry = Some(value);
8092 self
8093 }
8094
8095 pub fn with_password(mut self, value: LinkPassword) -> Self {
8096 self.password = Some(value);
8097 self
8098 }
8099}
8100
8101const LINK_SETTINGS_FIELDS: &[&str] = &["access_level",
8102 "audience",
8103 "expiry",
8104 "password"];
8105impl LinkSettings {
8106 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8108 mut map: V,
8109 ) -> Result<LinkSettings, V::Error> {
8110 let mut field_access_level = None;
8111 let mut field_audience = None;
8112 let mut field_expiry = None;
8113 let mut field_password = None;
8114 while let Some(key) = map.next_key::<&str>()? {
8115 match key {
8116 "access_level" => {
8117 if field_access_level.is_some() {
8118 return Err(::serde::de::Error::duplicate_field("access_level"));
8119 }
8120 field_access_level = Some(map.next_value()?);
8121 }
8122 "audience" => {
8123 if field_audience.is_some() {
8124 return Err(::serde::de::Error::duplicate_field("audience"));
8125 }
8126 field_audience = Some(map.next_value()?);
8127 }
8128 "expiry" => {
8129 if field_expiry.is_some() {
8130 return Err(::serde::de::Error::duplicate_field("expiry"));
8131 }
8132 field_expiry = Some(map.next_value()?);
8133 }
8134 "password" => {
8135 if field_password.is_some() {
8136 return Err(::serde::de::Error::duplicate_field("password"));
8137 }
8138 field_password = Some(map.next_value()?);
8139 }
8140 _ => {
8141 map.next_value::<::serde_json::Value>()?;
8143 }
8144 }
8145 }
8146 let result = LinkSettings {
8147 access_level: field_access_level.and_then(Option::flatten),
8148 audience: field_audience.and_then(Option::flatten),
8149 expiry: field_expiry.and_then(Option::flatten),
8150 password: field_password.and_then(Option::flatten),
8151 };
8152 Ok(result)
8153 }
8154
8155 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8156 &self,
8157 s: &mut S::SerializeStruct,
8158 ) -> Result<(), S::Error> {
8159 use serde::ser::SerializeStruct;
8160 if let Some(val) = &self.access_level {
8161 s.serialize_field("access_level", val)?;
8162 }
8163 if let Some(val) = &self.audience {
8164 s.serialize_field("audience", val)?;
8165 }
8166 if let Some(val) = &self.expiry {
8167 s.serialize_field("expiry", val)?;
8168 }
8169 if let Some(val) = &self.password {
8170 s.serialize_field("password", val)?;
8171 }
8172 Ok(())
8173 }
8174}
8175
8176impl<'de> ::serde::de::Deserialize<'de> for LinkSettings {
8177 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8178 use serde::de::{MapAccess, Visitor};
8180 struct StructVisitor;
8181 impl<'de> Visitor<'de> for StructVisitor {
8182 type Value = LinkSettings;
8183 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8184 f.write_str("a LinkSettings struct")
8185 }
8186 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8187 LinkSettings::internal_deserialize(map)
8188 }
8189 }
8190 deserializer.deserialize_struct("LinkSettings", LINK_SETTINGS_FIELDS, StructVisitor)
8191 }
8192}
8193
8194impl ::serde::ser::Serialize for LinkSettings {
8195 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8196 use serde::ser::SerializeStruct;
8198 let mut s = serializer.serialize_struct("LinkSettings", 4)?;
8199 self.internal_serialize::<S>(&mut s)?;
8200 s.end()
8201 }
8202}
8203
8204#[derive(Debug, Clone, PartialEq, Eq)]
8206#[non_exhaustive] pub struct ListFileMembersArg {
8208 pub file: PathOrId,
8210 pub actions: Option<Vec<MemberAction>>,
8212 pub include_inherited: bool,
8214 pub limit: u32,
8216}
8217
8218impl ListFileMembersArg {
8219 pub fn new(file: PathOrId) -> Self {
8220 ListFileMembersArg {
8221 file,
8222 actions: None,
8223 include_inherited: true,
8224 limit: 100,
8225 }
8226 }
8227
8228 pub fn with_actions(mut self, value: Vec<MemberAction>) -> Self {
8229 self.actions = Some(value);
8230 self
8231 }
8232
8233 pub fn with_include_inherited(mut self, value: bool) -> Self {
8234 self.include_inherited = value;
8235 self
8236 }
8237
8238 pub fn with_limit(mut self, value: u32) -> Self {
8239 self.limit = value;
8240 self
8241 }
8242}
8243
8244const LIST_FILE_MEMBERS_ARG_FIELDS: &[&str] = &["file",
8245 "actions",
8246 "include_inherited",
8247 "limit"];
8248impl ListFileMembersArg {
8249 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8250 map: V,
8251 ) -> Result<ListFileMembersArg, V::Error> {
8252 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8253 }
8254
8255 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8256 mut map: V,
8257 optional: bool,
8258 ) -> Result<Option<ListFileMembersArg>, V::Error> {
8259 let mut field_file = None;
8260 let mut field_actions = None;
8261 let mut field_include_inherited = None;
8262 let mut field_limit = None;
8263 let mut nothing = true;
8264 while let Some(key) = map.next_key::<&str>()? {
8265 nothing = false;
8266 match key {
8267 "file" => {
8268 if field_file.is_some() {
8269 return Err(::serde::de::Error::duplicate_field("file"));
8270 }
8271 field_file = Some(map.next_value()?);
8272 }
8273 "actions" => {
8274 if field_actions.is_some() {
8275 return Err(::serde::de::Error::duplicate_field("actions"));
8276 }
8277 field_actions = Some(map.next_value()?);
8278 }
8279 "include_inherited" => {
8280 if field_include_inherited.is_some() {
8281 return Err(::serde::de::Error::duplicate_field("include_inherited"));
8282 }
8283 field_include_inherited = Some(map.next_value()?);
8284 }
8285 "limit" => {
8286 if field_limit.is_some() {
8287 return Err(::serde::de::Error::duplicate_field("limit"));
8288 }
8289 field_limit = Some(map.next_value()?);
8290 }
8291 _ => {
8292 map.next_value::<::serde_json::Value>()?;
8294 }
8295 }
8296 }
8297 if optional && nothing {
8298 return Ok(None);
8299 }
8300 let result = ListFileMembersArg {
8301 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
8302 actions: field_actions.and_then(Option::flatten),
8303 include_inherited: field_include_inherited.unwrap_or(true),
8304 limit: field_limit.unwrap_or(100),
8305 };
8306 Ok(Some(result))
8307 }
8308
8309 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8310 &self,
8311 s: &mut S::SerializeStruct,
8312 ) -> Result<(), S::Error> {
8313 use serde::ser::SerializeStruct;
8314 s.serialize_field("file", &self.file)?;
8315 if let Some(val) = &self.actions {
8316 s.serialize_field("actions", val)?;
8317 }
8318 if !self.include_inherited {
8319 s.serialize_field("include_inherited", &self.include_inherited)?;
8320 }
8321 if self.limit != 100 {
8322 s.serialize_field("limit", &self.limit)?;
8323 }
8324 Ok(())
8325 }
8326}
8327
8328impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersArg {
8329 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8330 use serde::de::{MapAccess, Visitor};
8332 struct StructVisitor;
8333 impl<'de> Visitor<'de> for StructVisitor {
8334 type Value = ListFileMembersArg;
8335 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8336 f.write_str("a ListFileMembersArg struct")
8337 }
8338 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8339 ListFileMembersArg::internal_deserialize(map)
8340 }
8341 }
8342 deserializer.deserialize_struct("ListFileMembersArg", LIST_FILE_MEMBERS_ARG_FIELDS, StructVisitor)
8343 }
8344}
8345
8346impl ::serde::ser::Serialize for ListFileMembersArg {
8347 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8348 use serde::ser::SerializeStruct;
8350 let mut s = serializer.serialize_struct("ListFileMembersArg", 4)?;
8351 self.internal_serialize::<S>(&mut s)?;
8352 s.end()
8353 }
8354}
8355
8356#[derive(Debug, Clone, PartialEq, Eq)]
8358#[non_exhaustive] pub struct ListFileMembersBatchArg {
8360 pub files: Vec<PathOrId>,
8362 pub limit: u32,
8364}
8365
8366impl ListFileMembersBatchArg {
8367 pub fn new(files: Vec<PathOrId>) -> Self {
8368 ListFileMembersBatchArg {
8369 files,
8370 limit: 1000,
8371 }
8372 }
8373
8374 pub fn with_limit(mut self, value: u32) -> Self {
8375 self.limit = value;
8376 self
8377 }
8378}
8379
8380const LIST_FILE_MEMBERS_BATCH_ARG_FIELDS: &[&str] = &["files",
8381 "limit"];
8382impl ListFileMembersBatchArg {
8383 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8384 map: V,
8385 ) -> Result<ListFileMembersBatchArg, V::Error> {
8386 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8387 }
8388
8389 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8390 mut map: V,
8391 optional: bool,
8392 ) -> Result<Option<ListFileMembersBatchArg>, V::Error> {
8393 let mut field_files = None;
8394 let mut field_limit = None;
8395 let mut nothing = true;
8396 while let Some(key) = map.next_key::<&str>()? {
8397 nothing = false;
8398 match key {
8399 "files" => {
8400 if field_files.is_some() {
8401 return Err(::serde::de::Error::duplicate_field("files"));
8402 }
8403 field_files = Some(map.next_value()?);
8404 }
8405 "limit" => {
8406 if field_limit.is_some() {
8407 return Err(::serde::de::Error::duplicate_field("limit"));
8408 }
8409 field_limit = Some(map.next_value()?);
8410 }
8411 _ => {
8412 map.next_value::<::serde_json::Value>()?;
8414 }
8415 }
8416 }
8417 if optional && nothing {
8418 return Ok(None);
8419 }
8420 let result = ListFileMembersBatchArg {
8421 files: field_files.ok_or_else(|| ::serde::de::Error::missing_field("files"))?,
8422 limit: field_limit.unwrap_or(1000),
8423 };
8424 Ok(Some(result))
8425 }
8426
8427 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8428 &self,
8429 s: &mut S::SerializeStruct,
8430 ) -> Result<(), S::Error> {
8431 use serde::ser::SerializeStruct;
8432 s.serialize_field("files", &self.files)?;
8433 if self.limit != 1000 {
8434 s.serialize_field("limit", &self.limit)?;
8435 }
8436 Ok(())
8437 }
8438}
8439
8440impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersBatchArg {
8441 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8442 use serde::de::{MapAccess, Visitor};
8444 struct StructVisitor;
8445 impl<'de> Visitor<'de> for StructVisitor {
8446 type Value = ListFileMembersBatchArg;
8447 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8448 f.write_str("a ListFileMembersBatchArg struct")
8449 }
8450 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8451 ListFileMembersBatchArg::internal_deserialize(map)
8452 }
8453 }
8454 deserializer.deserialize_struct("ListFileMembersBatchArg", LIST_FILE_MEMBERS_BATCH_ARG_FIELDS, StructVisitor)
8455 }
8456}
8457
8458impl ::serde::ser::Serialize for ListFileMembersBatchArg {
8459 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8460 use serde::ser::SerializeStruct;
8462 let mut s = serializer.serialize_struct("ListFileMembersBatchArg", 2)?;
8463 self.internal_serialize::<S>(&mut s)?;
8464 s.end()
8465 }
8466}
8467
8468#[derive(Debug, Clone, PartialEq, Eq)]
8470#[non_exhaustive] pub struct ListFileMembersBatchResult {
8472 pub file: PathOrId,
8474 pub result: ListFileMembersIndividualResult,
8476}
8477
8478impl ListFileMembersBatchResult {
8479 pub fn new(file: PathOrId, result: ListFileMembersIndividualResult) -> Self {
8480 ListFileMembersBatchResult {
8481 file,
8482 result,
8483 }
8484 }
8485}
8486
8487const LIST_FILE_MEMBERS_BATCH_RESULT_FIELDS: &[&str] = &["file",
8488 "result"];
8489impl ListFileMembersBatchResult {
8490 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8491 map: V,
8492 ) -> Result<ListFileMembersBatchResult, V::Error> {
8493 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8494 }
8495
8496 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8497 mut map: V,
8498 optional: bool,
8499 ) -> Result<Option<ListFileMembersBatchResult>, V::Error> {
8500 let mut field_file = None;
8501 let mut field_result = None;
8502 let mut nothing = true;
8503 while let Some(key) = map.next_key::<&str>()? {
8504 nothing = false;
8505 match key {
8506 "file" => {
8507 if field_file.is_some() {
8508 return Err(::serde::de::Error::duplicate_field("file"));
8509 }
8510 field_file = Some(map.next_value()?);
8511 }
8512 "result" => {
8513 if field_result.is_some() {
8514 return Err(::serde::de::Error::duplicate_field("result"));
8515 }
8516 field_result = Some(map.next_value()?);
8517 }
8518 _ => {
8519 map.next_value::<::serde_json::Value>()?;
8521 }
8522 }
8523 }
8524 if optional && nothing {
8525 return Ok(None);
8526 }
8527 let result = ListFileMembersBatchResult {
8528 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
8529 result: field_result.ok_or_else(|| ::serde::de::Error::missing_field("result"))?,
8530 };
8531 Ok(Some(result))
8532 }
8533
8534 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8535 &self,
8536 s: &mut S::SerializeStruct,
8537 ) -> Result<(), S::Error> {
8538 use serde::ser::SerializeStruct;
8539 s.serialize_field("file", &self.file)?;
8540 s.serialize_field("result", &self.result)?;
8541 Ok(())
8542 }
8543}
8544
8545impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersBatchResult {
8546 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8547 use serde::de::{MapAccess, Visitor};
8549 struct StructVisitor;
8550 impl<'de> Visitor<'de> for StructVisitor {
8551 type Value = ListFileMembersBatchResult;
8552 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8553 f.write_str("a ListFileMembersBatchResult struct")
8554 }
8555 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8556 ListFileMembersBatchResult::internal_deserialize(map)
8557 }
8558 }
8559 deserializer.deserialize_struct("ListFileMembersBatchResult", LIST_FILE_MEMBERS_BATCH_RESULT_FIELDS, StructVisitor)
8560 }
8561}
8562
8563impl ::serde::ser::Serialize for ListFileMembersBatchResult {
8564 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8565 use serde::ser::SerializeStruct;
8567 let mut s = serializer.serialize_struct("ListFileMembersBatchResult", 2)?;
8568 self.internal_serialize::<S>(&mut s)?;
8569 s.end()
8570 }
8571}
8572
8573#[derive(Debug, Clone, PartialEq, Eq)]
8575#[non_exhaustive] pub struct ListFileMembersContinueArg {
8577 pub cursor: String,
8582}
8583
8584impl ListFileMembersContinueArg {
8585 pub fn new(cursor: String) -> Self {
8586 ListFileMembersContinueArg {
8587 cursor,
8588 }
8589 }
8590}
8591
8592const LIST_FILE_MEMBERS_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
8593impl ListFileMembersContinueArg {
8594 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8595 map: V,
8596 ) -> Result<ListFileMembersContinueArg, V::Error> {
8597 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8598 }
8599
8600 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8601 mut map: V,
8602 optional: bool,
8603 ) -> Result<Option<ListFileMembersContinueArg>, V::Error> {
8604 let mut field_cursor = None;
8605 let mut nothing = true;
8606 while let Some(key) = map.next_key::<&str>()? {
8607 nothing = false;
8608 match key {
8609 "cursor" => {
8610 if field_cursor.is_some() {
8611 return Err(::serde::de::Error::duplicate_field("cursor"));
8612 }
8613 field_cursor = Some(map.next_value()?);
8614 }
8615 _ => {
8616 map.next_value::<::serde_json::Value>()?;
8618 }
8619 }
8620 }
8621 if optional && nothing {
8622 return Ok(None);
8623 }
8624 let result = ListFileMembersContinueArg {
8625 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
8626 };
8627 Ok(Some(result))
8628 }
8629
8630 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8631 &self,
8632 s: &mut S::SerializeStruct,
8633 ) -> Result<(), S::Error> {
8634 use serde::ser::SerializeStruct;
8635 s.serialize_field("cursor", &self.cursor)?;
8636 Ok(())
8637 }
8638}
8639
8640impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersContinueArg {
8641 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8642 use serde::de::{MapAccess, Visitor};
8644 struct StructVisitor;
8645 impl<'de> Visitor<'de> for StructVisitor {
8646 type Value = ListFileMembersContinueArg;
8647 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8648 f.write_str("a ListFileMembersContinueArg struct")
8649 }
8650 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8651 ListFileMembersContinueArg::internal_deserialize(map)
8652 }
8653 }
8654 deserializer.deserialize_struct("ListFileMembersContinueArg", LIST_FILE_MEMBERS_CONTINUE_ARG_FIELDS, StructVisitor)
8655 }
8656}
8657
8658impl ::serde::ser::Serialize for ListFileMembersContinueArg {
8659 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8660 use serde::ser::SerializeStruct;
8662 let mut s = serializer.serialize_struct("ListFileMembersContinueArg", 1)?;
8663 self.internal_serialize::<S>(&mut s)?;
8664 s.end()
8665 }
8666}
8667
8668#[derive(Debug, Clone, PartialEq, Eq)]
8670#[non_exhaustive] pub enum ListFileMembersContinueError {
8672 UserError(SharingUserError),
8673 AccessError(SharingFileAccessError),
8674 InvalidCursor,
8676 Other,
8679}
8680
8681impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersContinueError {
8682 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8683 use serde::de::{self, MapAccess, Visitor};
8685 struct EnumVisitor;
8686 impl<'de> Visitor<'de> for EnumVisitor {
8687 type Value = ListFileMembersContinueError;
8688 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8689 f.write_str("a ListFileMembersContinueError structure")
8690 }
8691 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
8692 let tag: &str = match map.next_key()? {
8693 Some(".tag") => map.next_value()?,
8694 _ => return Err(de::Error::missing_field(".tag"))
8695 };
8696 let value = match tag {
8697 "user_error" => {
8698 match map.next_key()? {
8699 Some("user_error") => ListFileMembersContinueError::UserError(map.next_value()?),
8700 None => return Err(de::Error::missing_field("user_error")),
8701 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8702 }
8703 }
8704 "access_error" => {
8705 match map.next_key()? {
8706 Some("access_error") => ListFileMembersContinueError::AccessError(map.next_value()?),
8707 None => return Err(de::Error::missing_field("access_error")),
8708 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8709 }
8710 }
8711 "invalid_cursor" => ListFileMembersContinueError::InvalidCursor,
8712 _ => ListFileMembersContinueError::Other,
8713 };
8714 crate::eat_json_fields(&mut map)?;
8715 Ok(value)
8716 }
8717 }
8718 const VARIANTS: &[&str] = &["user_error",
8719 "access_error",
8720 "invalid_cursor",
8721 "other"];
8722 deserializer.deserialize_struct("ListFileMembersContinueError", VARIANTS, EnumVisitor)
8723 }
8724}
8725
8726impl ::serde::ser::Serialize for ListFileMembersContinueError {
8727 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8728 use serde::ser::SerializeStruct;
8730 match self {
8731 ListFileMembersContinueError::UserError(x) => {
8732 let mut s = serializer.serialize_struct("ListFileMembersContinueError", 2)?;
8734 s.serialize_field(".tag", "user_error")?;
8735 s.serialize_field("user_error", x)?;
8736 s.end()
8737 }
8738 ListFileMembersContinueError::AccessError(x) => {
8739 let mut s = serializer.serialize_struct("ListFileMembersContinueError", 2)?;
8741 s.serialize_field(".tag", "access_error")?;
8742 s.serialize_field("access_error", x)?;
8743 s.end()
8744 }
8745 ListFileMembersContinueError::InvalidCursor => {
8746 let mut s = serializer.serialize_struct("ListFileMembersContinueError", 1)?;
8748 s.serialize_field(".tag", "invalid_cursor")?;
8749 s.end()
8750 }
8751 ListFileMembersContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
8752 }
8753 }
8754}
8755
8756impl ::std::error::Error for ListFileMembersContinueError {
8757 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
8758 match self {
8759 ListFileMembersContinueError::UserError(inner) => Some(inner),
8760 ListFileMembersContinueError::AccessError(inner) => Some(inner),
8761 _ => None,
8762 }
8763 }
8764}
8765
8766impl ::std::fmt::Display for ListFileMembersContinueError {
8767 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8768 match self {
8769 ListFileMembersContinueError::UserError(inner) => write!(f, "ListFileMembersContinueError: {}", inner),
8770 ListFileMembersContinueError::AccessError(inner) => write!(f, "ListFileMembersContinueError: {}", inner),
8771 _ => write!(f, "{:?}", *self),
8772 }
8773 }
8774}
8775
8776#[derive(Debug, Clone, PartialEq, Eq)]
8777#[non_exhaustive] pub struct ListFileMembersCountResult {
8779 pub members: SharedFileMembers,
8781 pub member_count: u32,
8783}
8784
8785impl ListFileMembersCountResult {
8786 pub fn new(members: SharedFileMembers, member_count: u32) -> Self {
8787 ListFileMembersCountResult {
8788 members,
8789 member_count,
8790 }
8791 }
8792}
8793
8794const LIST_FILE_MEMBERS_COUNT_RESULT_FIELDS: &[&str] = &["members",
8795 "member_count"];
8796impl ListFileMembersCountResult {
8797 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8798 map: V,
8799 ) -> Result<ListFileMembersCountResult, V::Error> {
8800 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8801 }
8802
8803 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8804 mut map: V,
8805 optional: bool,
8806 ) -> Result<Option<ListFileMembersCountResult>, V::Error> {
8807 let mut field_members = None;
8808 let mut field_member_count = None;
8809 let mut nothing = true;
8810 while let Some(key) = map.next_key::<&str>()? {
8811 nothing = false;
8812 match key {
8813 "members" => {
8814 if field_members.is_some() {
8815 return Err(::serde::de::Error::duplicate_field("members"));
8816 }
8817 field_members = Some(map.next_value()?);
8818 }
8819 "member_count" => {
8820 if field_member_count.is_some() {
8821 return Err(::serde::de::Error::duplicate_field("member_count"));
8822 }
8823 field_member_count = Some(map.next_value()?);
8824 }
8825 _ => {
8826 map.next_value::<::serde_json::Value>()?;
8828 }
8829 }
8830 }
8831 if optional && nothing {
8832 return Ok(None);
8833 }
8834 let result = ListFileMembersCountResult {
8835 members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?,
8836 member_count: field_member_count.ok_or_else(|| ::serde::de::Error::missing_field("member_count"))?,
8837 };
8838 Ok(Some(result))
8839 }
8840
8841 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8842 &self,
8843 s: &mut S::SerializeStruct,
8844 ) -> Result<(), S::Error> {
8845 use serde::ser::SerializeStruct;
8846 s.serialize_field("members", &self.members)?;
8847 s.serialize_field("member_count", &self.member_count)?;
8848 Ok(())
8849 }
8850}
8851
8852impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersCountResult {
8853 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8854 use serde::de::{MapAccess, Visitor};
8856 struct StructVisitor;
8857 impl<'de> Visitor<'de> for StructVisitor {
8858 type Value = ListFileMembersCountResult;
8859 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8860 f.write_str("a ListFileMembersCountResult struct")
8861 }
8862 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8863 ListFileMembersCountResult::internal_deserialize(map)
8864 }
8865 }
8866 deserializer.deserialize_struct("ListFileMembersCountResult", LIST_FILE_MEMBERS_COUNT_RESULT_FIELDS, StructVisitor)
8867 }
8868}
8869
8870impl ::serde::ser::Serialize for ListFileMembersCountResult {
8871 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8872 use serde::ser::SerializeStruct;
8874 let mut s = serializer.serialize_struct("ListFileMembersCountResult", 2)?;
8875 self.internal_serialize::<S>(&mut s)?;
8876 s.end()
8877 }
8878}
8879
8880#[derive(Debug, Clone, PartialEq, Eq)]
8882#[non_exhaustive] pub enum ListFileMembersError {
8884 UserError(SharingUserError),
8885 AccessError(SharingFileAccessError),
8886 Other,
8889}
8890
8891impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersError {
8892 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8893 use serde::de::{self, MapAccess, Visitor};
8895 struct EnumVisitor;
8896 impl<'de> Visitor<'de> for EnumVisitor {
8897 type Value = ListFileMembersError;
8898 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8899 f.write_str("a ListFileMembersError structure")
8900 }
8901 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
8902 let tag: &str = match map.next_key()? {
8903 Some(".tag") => map.next_value()?,
8904 _ => return Err(de::Error::missing_field(".tag"))
8905 };
8906 let value = match tag {
8907 "user_error" => {
8908 match map.next_key()? {
8909 Some("user_error") => ListFileMembersError::UserError(map.next_value()?),
8910 None => return Err(de::Error::missing_field("user_error")),
8911 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8912 }
8913 }
8914 "access_error" => {
8915 match map.next_key()? {
8916 Some("access_error") => ListFileMembersError::AccessError(map.next_value()?),
8917 None => return Err(de::Error::missing_field("access_error")),
8918 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8919 }
8920 }
8921 _ => ListFileMembersError::Other,
8922 };
8923 crate::eat_json_fields(&mut map)?;
8924 Ok(value)
8925 }
8926 }
8927 const VARIANTS: &[&str] = &["user_error",
8928 "access_error",
8929 "other"];
8930 deserializer.deserialize_struct("ListFileMembersError", VARIANTS, EnumVisitor)
8931 }
8932}
8933
8934impl ::serde::ser::Serialize for ListFileMembersError {
8935 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8936 use serde::ser::SerializeStruct;
8938 match self {
8939 ListFileMembersError::UserError(x) => {
8940 let mut s = serializer.serialize_struct("ListFileMembersError", 2)?;
8942 s.serialize_field(".tag", "user_error")?;
8943 s.serialize_field("user_error", x)?;
8944 s.end()
8945 }
8946 ListFileMembersError::AccessError(x) => {
8947 let mut s = serializer.serialize_struct("ListFileMembersError", 2)?;
8949 s.serialize_field(".tag", "access_error")?;
8950 s.serialize_field("access_error", x)?;
8951 s.end()
8952 }
8953 ListFileMembersError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
8954 }
8955 }
8956}
8957
8958impl ::std::error::Error for ListFileMembersError {
8959 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
8960 match self {
8961 ListFileMembersError::UserError(inner) => Some(inner),
8962 ListFileMembersError::AccessError(inner) => Some(inner),
8963 _ => None,
8964 }
8965 }
8966}
8967
8968impl ::std::fmt::Display for ListFileMembersError {
8969 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8970 match self {
8971 ListFileMembersError::UserError(inner) => write!(f, "ListFileMembersError: {}", inner),
8972 ListFileMembersError::AccessError(inner) => write!(f, "ListFileMembersError: {}", inner),
8973 _ => write!(f, "{:?}", *self),
8974 }
8975 }
8976}
8977
8978#[derive(Debug, Clone, PartialEq, Eq)]
8979#[non_exhaustive] pub enum ListFileMembersIndividualResult {
8981 Result(ListFileMembersCountResult),
8983 AccessError(SharingFileAccessError),
8985 Other,
8988}
8989
8990impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersIndividualResult {
8991 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8992 use serde::de::{self, MapAccess, Visitor};
8994 struct EnumVisitor;
8995 impl<'de> Visitor<'de> for EnumVisitor {
8996 type Value = ListFileMembersIndividualResult;
8997 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8998 f.write_str("a ListFileMembersIndividualResult structure")
8999 }
9000 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
9001 let tag: &str = match map.next_key()? {
9002 Some(".tag") => map.next_value()?,
9003 _ => return Err(de::Error::missing_field(".tag"))
9004 };
9005 let value = match tag {
9006 "result" => ListFileMembersIndividualResult::Result(ListFileMembersCountResult::internal_deserialize(&mut map)?),
9007 "access_error" => {
9008 match map.next_key()? {
9009 Some("access_error") => ListFileMembersIndividualResult::AccessError(map.next_value()?),
9010 None => return Err(de::Error::missing_field("access_error")),
9011 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
9012 }
9013 }
9014 _ => ListFileMembersIndividualResult::Other,
9015 };
9016 crate::eat_json_fields(&mut map)?;
9017 Ok(value)
9018 }
9019 }
9020 const VARIANTS: &[&str] = &["result",
9021 "access_error",
9022 "other"];
9023 deserializer.deserialize_struct("ListFileMembersIndividualResult", VARIANTS, EnumVisitor)
9024 }
9025}
9026
9027impl ::serde::ser::Serialize for ListFileMembersIndividualResult {
9028 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9029 use serde::ser::SerializeStruct;
9031 match self {
9032 ListFileMembersIndividualResult::Result(x) => {
9033 let mut s = serializer.serialize_struct("ListFileMembersIndividualResult", 3)?;
9035 s.serialize_field(".tag", "result")?;
9036 x.internal_serialize::<S>(&mut s)?;
9037 s.end()
9038 }
9039 ListFileMembersIndividualResult::AccessError(x) => {
9040 let mut s = serializer.serialize_struct("ListFileMembersIndividualResult", 2)?;
9042 s.serialize_field(".tag", "access_error")?;
9043 s.serialize_field("access_error", x)?;
9044 s.end()
9045 }
9046 ListFileMembersIndividualResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
9047 }
9048 }
9049}
9050
9051#[derive(Debug, Clone, PartialEq, Eq)]
9053#[non_exhaustive] pub struct ListFilesArg {
9055 pub limit: u32,
9057 pub actions: Option<Vec<FileAction>>,
9061}
9062
9063impl Default for ListFilesArg {
9064 fn default() -> Self {
9065 ListFilesArg {
9066 limit: 100,
9067 actions: None,
9068 }
9069 }
9070}
9071
9072impl ListFilesArg {
9073 pub fn with_limit(mut self, value: u32) -> Self {
9074 self.limit = value;
9075 self
9076 }
9077
9078 pub fn with_actions(mut self, value: Vec<FileAction>) -> Self {
9079 self.actions = Some(value);
9080 self
9081 }
9082}
9083
9084const LIST_FILES_ARG_FIELDS: &[&str] = &["limit",
9085 "actions"];
9086impl ListFilesArg {
9087 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9089 mut map: V,
9090 ) -> Result<ListFilesArg, V::Error> {
9091 let mut field_limit = None;
9092 let mut field_actions = None;
9093 while let Some(key) = map.next_key::<&str>()? {
9094 match key {
9095 "limit" => {
9096 if field_limit.is_some() {
9097 return Err(::serde::de::Error::duplicate_field("limit"));
9098 }
9099 field_limit = Some(map.next_value()?);
9100 }
9101 "actions" => {
9102 if field_actions.is_some() {
9103 return Err(::serde::de::Error::duplicate_field("actions"));
9104 }
9105 field_actions = Some(map.next_value()?);
9106 }
9107 _ => {
9108 map.next_value::<::serde_json::Value>()?;
9110 }
9111 }
9112 }
9113 let result = ListFilesArg {
9114 limit: field_limit.unwrap_or(100),
9115 actions: field_actions.and_then(Option::flatten),
9116 };
9117 Ok(result)
9118 }
9119
9120 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9121 &self,
9122 s: &mut S::SerializeStruct,
9123 ) -> Result<(), S::Error> {
9124 use serde::ser::SerializeStruct;
9125 if self.limit != 100 {
9126 s.serialize_field("limit", &self.limit)?;
9127 }
9128 if let Some(val) = &self.actions {
9129 s.serialize_field("actions", val)?;
9130 }
9131 Ok(())
9132 }
9133}
9134
9135impl<'de> ::serde::de::Deserialize<'de> for ListFilesArg {
9136 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9137 use serde::de::{MapAccess, Visitor};
9139 struct StructVisitor;
9140 impl<'de> Visitor<'de> for StructVisitor {
9141 type Value = ListFilesArg;
9142 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9143 f.write_str("a ListFilesArg struct")
9144 }
9145 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9146 ListFilesArg::internal_deserialize(map)
9147 }
9148 }
9149 deserializer.deserialize_struct("ListFilesArg", LIST_FILES_ARG_FIELDS, StructVisitor)
9150 }
9151}
9152
9153impl ::serde::ser::Serialize for ListFilesArg {
9154 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9155 use serde::ser::SerializeStruct;
9157 let mut s = serializer.serialize_struct("ListFilesArg", 2)?;
9158 self.internal_serialize::<S>(&mut s)?;
9159 s.end()
9160 }
9161}
9162
9163#[derive(Debug, Clone, PartialEq, Eq)]
9165#[non_exhaustive] pub struct ListFilesContinueArg {
9167 pub cursor: String,
9169}
9170
9171impl ListFilesContinueArg {
9172 pub fn new(cursor: String) -> Self {
9173 ListFilesContinueArg {
9174 cursor,
9175 }
9176 }
9177}
9178
9179const LIST_FILES_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
9180impl ListFilesContinueArg {
9181 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9182 map: V,
9183 ) -> Result<ListFilesContinueArg, V::Error> {
9184 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9185 }
9186
9187 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9188 mut map: V,
9189 optional: bool,
9190 ) -> Result<Option<ListFilesContinueArg>, V::Error> {
9191 let mut field_cursor = None;
9192 let mut nothing = true;
9193 while let Some(key) = map.next_key::<&str>()? {
9194 nothing = false;
9195 match key {
9196 "cursor" => {
9197 if field_cursor.is_some() {
9198 return Err(::serde::de::Error::duplicate_field("cursor"));
9199 }
9200 field_cursor = Some(map.next_value()?);
9201 }
9202 _ => {
9203 map.next_value::<::serde_json::Value>()?;
9205 }
9206 }
9207 }
9208 if optional && nothing {
9209 return Ok(None);
9210 }
9211 let result = ListFilesContinueArg {
9212 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
9213 };
9214 Ok(Some(result))
9215 }
9216
9217 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9218 &self,
9219 s: &mut S::SerializeStruct,
9220 ) -> Result<(), S::Error> {
9221 use serde::ser::SerializeStruct;
9222 s.serialize_field("cursor", &self.cursor)?;
9223 Ok(())
9224 }
9225}
9226
9227impl<'de> ::serde::de::Deserialize<'de> for ListFilesContinueArg {
9228 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9229 use serde::de::{MapAccess, Visitor};
9231 struct StructVisitor;
9232 impl<'de> Visitor<'de> for StructVisitor {
9233 type Value = ListFilesContinueArg;
9234 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9235 f.write_str("a ListFilesContinueArg struct")
9236 }
9237 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9238 ListFilesContinueArg::internal_deserialize(map)
9239 }
9240 }
9241 deserializer.deserialize_struct("ListFilesContinueArg", LIST_FILES_CONTINUE_ARG_FIELDS, StructVisitor)
9242 }
9243}
9244
9245impl ::serde::ser::Serialize for ListFilesContinueArg {
9246 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9247 use serde::ser::SerializeStruct;
9249 let mut s = serializer.serialize_struct("ListFilesContinueArg", 1)?;
9250 self.internal_serialize::<S>(&mut s)?;
9251 s.end()
9252 }
9253}
9254
9255#[derive(Debug, Clone, PartialEq, Eq)]
9258#[non_exhaustive] pub enum ListFilesContinueError {
9260 UserError(SharingUserError),
9262 InvalidCursor,
9264 Other,
9267}
9268
9269impl<'de> ::serde::de::Deserialize<'de> for ListFilesContinueError {
9270 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9271 use serde::de::{self, MapAccess, Visitor};
9273 struct EnumVisitor;
9274 impl<'de> Visitor<'de> for EnumVisitor {
9275 type Value = ListFilesContinueError;
9276 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9277 f.write_str("a ListFilesContinueError structure")
9278 }
9279 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
9280 let tag: &str = match map.next_key()? {
9281 Some(".tag") => map.next_value()?,
9282 _ => return Err(de::Error::missing_field(".tag"))
9283 };
9284 let value = match tag {
9285 "user_error" => {
9286 match map.next_key()? {
9287 Some("user_error") => ListFilesContinueError::UserError(map.next_value()?),
9288 None => return Err(de::Error::missing_field("user_error")),
9289 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
9290 }
9291 }
9292 "invalid_cursor" => ListFilesContinueError::InvalidCursor,
9293 _ => ListFilesContinueError::Other,
9294 };
9295 crate::eat_json_fields(&mut map)?;
9296 Ok(value)
9297 }
9298 }
9299 const VARIANTS: &[&str] = &["user_error",
9300 "invalid_cursor",
9301 "other"];
9302 deserializer.deserialize_struct("ListFilesContinueError", VARIANTS, EnumVisitor)
9303 }
9304}
9305
9306impl ::serde::ser::Serialize for ListFilesContinueError {
9307 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9308 use serde::ser::SerializeStruct;
9310 match self {
9311 ListFilesContinueError::UserError(x) => {
9312 let mut s = serializer.serialize_struct("ListFilesContinueError", 2)?;
9314 s.serialize_field(".tag", "user_error")?;
9315 s.serialize_field("user_error", x)?;
9316 s.end()
9317 }
9318 ListFilesContinueError::InvalidCursor => {
9319 let mut s = serializer.serialize_struct("ListFilesContinueError", 1)?;
9321 s.serialize_field(".tag", "invalid_cursor")?;
9322 s.end()
9323 }
9324 ListFilesContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
9325 }
9326 }
9327}
9328
9329impl ::std::error::Error for ListFilesContinueError {
9330 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
9331 match self {
9332 ListFilesContinueError::UserError(inner) => Some(inner),
9333 _ => None,
9334 }
9335 }
9336}
9337
9338impl ::std::fmt::Display for ListFilesContinueError {
9339 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9340 match self {
9341 ListFilesContinueError::UserError(inner) => write!(f, "User account had a problem: {}", inner),
9342 _ => write!(f, "{:?}", *self),
9343 }
9344 }
9345}
9346
9347#[derive(Debug, Clone, PartialEq, Eq)]
9349#[non_exhaustive] pub struct ListFilesResult {
9351 pub entries: Vec<SharedFileMetadata>,
9353 pub cursor: Option<String>,
9355}
9356
9357impl ListFilesResult {
9358 pub fn new(entries: Vec<SharedFileMetadata>) -> Self {
9359 ListFilesResult {
9360 entries,
9361 cursor: None,
9362 }
9363 }
9364
9365 pub fn with_cursor(mut self, value: String) -> Self {
9366 self.cursor = Some(value);
9367 self
9368 }
9369}
9370
9371const LIST_FILES_RESULT_FIELDS: &[&str] = &["entries",
9372 "cursor"];
9373impl ListFilesResult {
9374 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9375 map: V,
9376 ) -> Result<ListFilesResult, V::Error> {
9377 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9378 }
9379
9380 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9381 mut map: V,
9382 optional: bool,
9383 ) -> Result<Option<ListFilesResult>, V::Error> {
9384 let mut field_entries = None;
9385 let mut field_cursor = None;
9386 let mut nothing = true;
9387 while let Some(key) = map.next_key::<&str>()? {
9388 nothing = false;
9389 match key {
9390 "entries" => {
9391 if field_entries.is_some() {
9392 return Err(::serde::de::Error::duplicate_field("entries"));
9393 }
9394 field_entries = Some(map.next_value()?);
9395 }
9396 "cursor" => {
9397 if field_cursor.is_some() {
9398 return Err(::serde::de::Error::duplicate_field("cursor"));
9399 }
9400 field_cursor = Some(map.next_value()?);
9401 }
9402 _ => {
9403 map.next_value::<::serde_json::Value>()?;
9405 }
9406 }
9407 }
9408 if optional && nothing {
9409 return Ok(None);
9410 }
9411 let result = ListFilesResult {
9412 entries: field_entries.ok_or_else(|| ::serde::de::Error::missing_field("entries"))?,
9413 cursor: field_cursor.and_then(Option::flatten),
9414 };
9415 Ok(Some(result))
9416 }
9417
9418 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9419 &self,
9420 s: &mut S::SerializeStruct,
9421 ) -> Result<(), S::Error> {
9422 use serde::ser::SerializeStruct;
9423 s.serialize_field("entries", &self.entries)?;
9424 if let Some(val) = &self.cursor {
9425 s.serialize_field("cursor", val)?;
9426 }
9427 Ok(())
9428 }
9429}
9430
9431impl<'de> ::serde::de::Deserialize<'de> for ListFilesResult {
9432 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9433 use serde::de::{MapAccess, Visitor};
9435 struct StructVisitor;
9436 impl<'de> Visitor<'de> for StructVisitor {
9437 type Value = ListFilesResult;
9438 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9439 f.write_str("a ListFilesResult struct")
9440 }
9441 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9442 ListFilesResult::internal_deserialize(map)
9443 }
9444 }
9445 deserializer.deserialize_struct("ListFilesResult", LIST_FILES_RESULT_FIELDS, StructVisitor)
9446 }
9447}
9448
9449impl ::serde::ser::Serialize for ListFilesResult {
9450 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9451 use serde::ser::SerializeStruct;
9453 let mut s = serializer.serialize_struct("ListFilesResult", 2)?;
9454 self.internal_serialize::<S>(&mut s)?;
9455 s.end()
9456 }
9457}
9458
9459#[derive(Debug, Clone, PartialEq, Eq)]
9460#[non_exhaustive] pub struct ListFolderMembersArgs {
9462 pub shared_folder_id: crate::types::common::SharedFolderId,
9465 pub actions: Option<Vec<MemberAction>>,
9469 pub limit: u32,
9472 pub path: Option<String>,
9476}
9477
9478impl ListFolderMembersArgs {
9479 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
9480 ListFolderMembersArgs {
9481 shared_folder_id,
9482 actions: None,
9483 limit: 1000,
9484 path: None,
9485 }
9486 }
9487
9488 pub fn with_actions(mut self, value: Vec<MemberAction>) -> Self {
9489 self.actions = Some(value);
9490 self
9491 }
9492
9493 pub fn with_limit(mut self, value: u32) -> Self {
9494 self.limit = value;
9495 self
9496 }
9497
9498 pub fn with_path(mut self, value: String) -> Self {
9499 self.path = Some(value);
9500 self
9501 }
9502}
9503
9504const LIST_FOLDER_MEMBERS_ARGS_FIELDS: &[&str] = &["shared_folder_id",
9505 "actions",
9506 "limit",
9507 "path"];
9508impl ListFolderMembersArgs {
9509 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9510 map: V,
9511 ) -> Result<ListFolderMembersArgs, V::Error> {
9512 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9513 }
9514
9515 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9516 mut map: V,
9517 optional: bool,
9518 ) -> Result<Option<ListFolderMembersArgs>, V::Error> {
9519 let mut field_shared_folder_id = None;
9520 let mut field_actions = None;
9521 let mut field_limit = None;
9522 let mut field_path = None;
9523 let mut nothing = true;
9524 while let Some(key) = map.next_key::<&str>()? {
9525 nothing = false;
9526 match key {
9527 "shared_folder_id" => {
9528 if field_shared_folder_id.is_some() {
9529 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
9530 }
9531 field_shared_folder_id = Some(map.next_value()?);
9532 }
9533 "actions" => {
9534 if field_actions.is_some() {
9535 return Err(::serde::de::Error::duplicate_field("actions"));
9536 }
9537 field_actions = Some(map.next_value()?);
9538 }
9539 "limit" => {
9540 if field_limit.is_some() {
9541 return Err(::serde::de::Error::duplicate_field("limit"));
9542 }
9543 field_limit = Some(map.next_value()?);
9544 }
9545 "path" => {
9546 if field_path.is_some() {
9547 return Err(::serde::de::Error::duplicate_field("path"));
9548 }
9549 field_path = Some(map.next_value()?);
9550 }
9551 _ => {
9552 map.next_value::<::serde_json::Value>()?;
9554 }
9555 }
9556 }
9557 if optional && nothing {
9558 return Ok(None);
9559 }
9560 let result = ListFolderMembersArgs {
9561 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
9562 actions: field_actions.and_then(Option::flatten),
9563 limit: field_limit.unwrap_or(1000),
9564 path: field_path.and_then(Option::flatten),
9565 };
9566 Ok(Some(result))
9567 }
9568
9569 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9570 &self,
9571 s: &mut S::SerializeStruct,
9572 ) -> Result<(), S::Error> {
9573 use serde::ser::SerializeStruct;
9574 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
9575 if let Some(val) = &self.actions {
9576 s.serialize_field("actions", val)?;
9577 }
9578 if self.limit != 1000 {
9579 s.serialize_field("limit", &self.limit)?;
9580 }
9581 if let Some(val) = &self.path {
9582 s.serialize_field("path", val)?;
9583 }
9584 Ok(())
9585 }
9586}
9587
9588impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersArgs {
9589 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9590 use serde::de::{MapAccess, Visitor};
9592 struct StructVisitor;
9593 impl<'de> Visitor<'de> for StructVisitor {
9594 type Value = ListFolderMembersArgs;
9595 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9596 f.write_str("a ListFolderMembersArgs struct")
9597 }
9598 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9599 ListFolderMembersArgs::internal_deserialize(map)
9600 }
9601 }
9602 deserializer.deserialize_struct("ListFolderMembersArgs", LIST_FOLDER_MEMBERS_ARGS_FIELDS, StructVisitor)
9603 }
9604}
9605
9606impl ::serde::ser::Serialize for ListFolderMembersArgs {
9607 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9608 use serde::ser::SerializeStruct;
9610 let mut s = serializer.serialize_struct("ListFolderMembersArgs", 4)?;
9611 self.internal_serialize::<S>(&mut s)?;
9612 s.end()
9613 }
9614}
9615
9616impl From<ListFolderMembersArgs> for ListFolderMembersCursorArg {
9618 fn from(subtype: ListFolderMembersArgs) -> Self {
9619 Self {
9620 actions: subtype.actions,
9621 limit: subtype.limit,
9622 }
9623 }
9624}
9625#[derive(Debug, Clone, PartialEq, Eq)]
9626#[non_exhaustive] pub struct ListFolderMembersContinueArg {
9628 pub cursor: String,
9632}
9633
9634impl ListFolderMembersContinueArg {
9635 pub fn new(cursor: String) -> Self {
9636 ListFolderMembersContinueArg {
9637 cursor,
9638 }
9639 }
9640}
9641
9642const LIST_FOLDER_MEMBERS_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
9643impl ListFolderMembersContinueArg {
9644 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9645 map: V,
9646 ) -> Result<ListFolderMembersContinueArg, V::Error> {
9647 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9648 }
9649
9650 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9651 mut map: V,
9652 optional: bool,
9653 ) -> Result<Option<ListFolderMembersContinueArg>, V::Error> {
9654 let mut field_cursor = None;
9655 let mut nothing = true;
9656 while let Some(key) = map.next_key::<&str>()? {
9657 nothing = false;
9658 match key {
9659 "cursor" => {
9660 if field_cursor.is_some() {
9661 return Err(::serde::de::Error::duplicate_field("cursor"));
9662 }
9663 field_cursor = Some(map.next_value()?);
9664 }
9665 _ => {
9666 map.next_value::<::serde_json::Value>()?;
9668 }
9669 }
9670 }
9671 if optional && nothing {
9672 return Ok(None);
9673 }
9674 let result = ListFolderMembersContinueArg {
9675 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
9676 };
9677 Ok(Some(result))
9678 }
9679
9680 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9681 &self,
9682 s: &mut S::SerializeStruct,
9683 ) -> Result<(), S::Error> {
9684 use serde::ser::SerializeStruct;
9685 s.serialize_field("cursor", &self.cursor)?;
9686 Ok(())
9687 }
9688}
9689
9690impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersContinueArg {
9691 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9692 use serde::de::{MapAccess, Visitor};
9694 struct StructVisitor;
9695 impl<'de> Visitor<'de> for StructVisitor {
9696 type Value = ListFolderMembersContinueArg;
9697 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9698 f.write_str("a ListFolderMembersContinueArg struct")
9699 }
9700 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9701 ListFolderMembersContinueArg::internal_deserialize(map)
9702 }
9703 }
9704 deserializer.deserialize_struct("ListFolderMembersContinueArg", LIST_FOLDER_MEMBERS_CONTINUE_ARG_FIELDS, StructVisitor)
9705 }
9706}
9707
9708impl ::serde::ser::Serialize for ListFolderMembersContinueArg {
9709 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9710 use serde::ser::SerializeStruct;
9712 let mut s = serializer.serialize_struct("ListFolderMembersContinueArg", 1)?;
9713 self.internal_serialize::<S>(&mut s)?;
9714 s.end()
9715 }
9716}
9717
9718#[derive(Debug, Clone, PartialEq, Eq)]
9719#[non_exhaustive] pub enum ListFolderMembersContinueError {
9721 AccessError(SharedFolderAccessError),
9722 InvalidCursor,
9724 Other,
9727}
9728
9729impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersContinueError {
9730 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9731 use serde::de::{self, MapAccess, Visitor};
9733 struct EnumVisitor;
9734 impl<'de> Visitor<'de> for EnumVisitor {
9735 type Value = ListFolderMembersContinueError;
9736 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9737 f.write_str("a ListFolderMembersContinueError structure")
9738 }
9739 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
9740 let tag: &str = match map.next_key()? {
9741 Some(".tag") => map.next_value()?,
9742 _ => return Err(de::Error::missing_field(".tag"))
9743 };
9744 let value = match tag {
9745 "access_error" => {
9746 match map.next_key()? {
9747 Some("access_error") => ListFolderMembersContinueError::AccessError(map.next_value()?),
9748 None => return Err(de::Error::missing_field("access_error")),
9749 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
9750 }
9751 }
9752 "invalid_cursor" => ListFolderMembersContinueError::InvalidCursor,
9753 _ => ListFolderMembersContinueError::Other,
9754 };
9755 crate::eat_json_fields(&mut map)?;
9756 Ok(value)
9757 }
9758 }
9759 const VARIANTS: &[&str] = &["access_error",
9760 "invalid_cursor",
9761 "other"];
9762 deserializer.deserialize_struct("ListFolderMembersContinueError", VARIANTS, EnumVisitor)
9763 }
9764}
9765
9766impl ::serde::ser::Serialize for ListFolderMembersContinueError {
9767 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9768 use serde::ser::SerializeStruct;
9770 match self {
9771 ListFolderMembersContinueError::AccessError(x) => {
9772 let mut s = serializer.serialize_struct("ListFolderMembersContinueError", 2)?;
9774 s.serialize_field(".tag", "access_error")?;
9775 s.serialize_field("access_error", x)?;
9776 s.end()
9777 }
9778 ListFolderMembersContinueError::InvalidCursor => {
9779 let mut s = serializer.serialize_struct("ListFolderMembersContinueError", 1)?;
9781 s.serialize_field(".tag", "invalid_cursor")?;
9782 s.end()
9783 }
9784 ListFolderMembersContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
9785 }
9786 }
9787}
9788
9789impl ::std::error::Error for ListFolderMembersContinueError {
9790 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
9791 match self {
9792 ListFolderMembersContinueError::AccessError(inner) => Some(inner),
9793 _ => None,
9794 }
9795 }
9796}
9797
9798impl ::std::fmt::Display for ListFolderMembersContinueError {
9799 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9800 match self {
9801 ListFolderMembersContinueError::AccessError(inner) => write!(f, "ListFolderMembersContinueError: {}", inner),
9802 _ => write!(f, "{:?}", *self),
9803 }
9804 }
9805}
9806
9807#[derive(Debug, Clone, PartialEq, Eq)]
9808#[non_exhaustive] pub struct ListFolderMembersCursorArg {
9810 pub actions: Option<Vec<MemberAction>>,
9814 pub limit: u32,
9817}
9818
9819impl Default for ListFolderMembersCursorArg {
9820 fn default() -> Self {
9821 ListFolderMembersCursorArg {
9822 actions: None,
9823 limit: 1000,
9824 }
9825 }
9826}
9827
9828impl ListFolderMembersCursorArg {
9829 pub fn with_actions(mut self, value: Vec<MemberAction>) -> Self {
9830 self.actions = Some(value);
9831 self
9832 }
9833
9834 pub fn with_limit(mut self, value: u32) -> Self {
9835 self.limit = value;
9836 self
9837 }
9838}
9839
9840const LIST_FOLDER_MEMBERS_CURSOR_ARG_FIELDS: &[&str] = &["actions",
9841 "limit"];
9842impl ListFolderMembersCursorArg {
9843 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9845 mut map: V,
9846 ) -> Result<ListFolderMembersCursorArg, V::Error> {
9847 let mut field_actions = None;
9848 let mut field_limit = None;
9849 while let Some(key) = map.next_key::<&str>()? {
9850 match key {
9851 "actions" => {
9852 if field_actions.is_some() {
9853 return Err(::serde::de::Error::duplicate_field("actions"));
9854 }
9855 field_actions = Some(map.next_value()?);
9856 }
9857 "limit" => {
9858 if field_limit.is_some() {
9859 return Err(::serde::de::Error::duplicate_field("limit"));
9860 }
9861 field_limit = Some(map.next_value()?);
9862 }
9863 _ => {
9864 map.next_value::<::serde_json::Value>()?;
9866 }
9867 }
9868 }
9869 let result = ListFolderMembersCursorArg {
9870 actions: field_actions.and_then(Option::flatten),
9871 limit: field_limit.unwrap_or(1000),
9872 };
9873 Ok(result)
9874 }
9875
9876 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9877 &self,
9878 s: &mut S::SerializeStruct,
9879 ) -> Result<(), S::Error> {
9880 use serde::ser::SerializeStruct;
9881 if let Some(val) = &self.actions {
9882 s.serialize_field("actions", val)?;
9883 }
9884 if self.limit != 1000 {
9885 s.serialize_field("limit", &self.limit)?;
9886 }
9887 Ok(())
9888 }
9889}
9890
9891impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersCursorArg {
9892 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9893 use serde::de::{MapAccess, Visitor};
9895 struct StructVisitor;
9896 impl<'de> Visitor<'de> for StructVisitor {
9897 type Value = ListFolderMembersCursorArg;
9898 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9899 f.write_str("a ListFolderMembersCursorArg struct")
9900 }
9901 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9902 ListFolderMembersCursorArg::internal_deserialize(map)
9903 }
9904 }
9905 deserializer.deserialize_struct("ListFolderMembersCursorArg", LIST_FOLDER_MEMBERS_CURSOR_ARG_FIELDS, StructVisitor)
9906 }
9907}
9908
9909impl ::serde::ser::Serialize for ListFolderMembersCursorArg {
9910 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9911 use serde::ser::SerializeStruct;
9913 let mut s = serializer.serialize_struct("ListFolderMembersCursorArg", 2)?;
9914 self.internal_serialize::<S>(&mut s)?;
9915 s.end()
9916 }
9917}
9918
9919#[derive(Debug, Clone, PartialEq, Eq)]
9920#[non_exhaustive] pub struct ListFoldersArgs {
9922 pub limit: u32,
9924 pub actions: Option<Vec<FolderAction>>,
9928}
9929
9930impl Default for ListFoldersArgs {
9931 fn default() -> Self {
9932 ListFoldersArgs {
9933 limit: 1000,
9934 actions: None,
9935 }
9936 }
9937}
9938
9939impl ListFoldersArgs {
9940 pub fn with_limit(mut self, value: u32) -> Self {
9941 self.limit = value;
9942 self
9943 }
9944
9945 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
9946 self.actions = Some(value);
9947 self
9948 }
9949}
9950
9951const LIST_FOLDERS_ARGS_FIELDS: &[&str] = &["limit",
9952 "actions"];
9953impl ListFoldersArgs {
9954 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9956 mut map: V,
9957 ) -> Result<ListFoldersArgs, V::Error> {
9958 let mut field_limit = None;
9959 let mut field_actions = None;
9960 while let Some(key) = map.next_key::<&str>()? {
9961 match key {
9962 "limit" => {
9963 if field_limit.is_some() {
9964 return Err(::serde::de::Error::duplicate_field("limit"));
9965 }
9966 field_limit = Some(map.next_value()?);
9967 }
9968 "actions" => {
9969 if field_actions.is_some() {
9970 return Err(::serde::de::Error::duplicate_field("actions"));
9971 }
9972 field_actions = Some(map.next_value()?);
9973 }
9974 _ => {
9975 map.next_value::<::serde_json::Value>()?;
9977 }
9978 }
9979 }
9980 let result = ListFoldersArgs {
9981 limit: field_limit.unwrap_or(1000),
9982 actions: field_actions.and_then(Option::flatten),
9983 };
9984 Ok(result)
9985 }
9986
9987 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9988 &self,
9989 s: &mut S::SerializeStruct,
9990 ) -> Result<(), S::Error> {
9991 use serde::ser::SerializeStruct;
9992 if self.limit != 1000 {
9993 s.serialize_field("limit", &self.limit)?;
9994 }
9995 if let Some(val) = &self.actions {
9996 s.serialize_field("actions", val)?;
9997 }
9998 Ok(())
9999 }
10000}
10001
10002impl<'de> ::serde::de::Deserialize<'de> for ListFoldersArgs {
10003 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10004 use serde::de::{MapAccess, Visitor};
10006 struct StructVisitor;
10007 impl<'de> Visitor<'de> for StructVisitor {
10008 type Value = ListFoldersArgs;
10009 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10010 f.write_str("a ListFoldersArgs struct")
10011 }
10012 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10013 ListFoldersArgs::internal_deserialize(map)
10014 }
10015 }
10016 deserializer.deserialize_struct("ListFoldersArgs", LIST_FOLDERS_ARGS_FIELDS, StructVisitor)
10017 }
10018}
10019
10020impl ::serde::ser::Serialize for ListFoldersArgs {
10021 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10022 use serde::ser::SerializeStruct;
10024 let mut s = serializer.serialize_struct("ListFoldersArgs", 2)?;
10025 self.internal_serialize::<S>(&mut s)?;
10026 s.end()
10027 }
10028}
10029
10030#[derive(Debug, Clone, PartialEq, Eq)]
10031#[non_exhaustive] pub struct ListFoldersContinueArg {
10033 pub cursor: String,
10035}
10036
10037impl ListFoldersContinueArg {
10038 pub fn new(cursor: String) -> Self {
10039 ListFoldersContinueArg {
10040 cursor,
10041 }
10042 }
10043}
10044
10045const LIST_FOLDERS_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
10046impl ListFoldersContinueArg {
10047 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10048 map: V,
10049 ) -> Result<ListFoldersContinueArg, V::Error> {
10050 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
10051 }
10052
10053 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
10054 mut map: V,
10055 optional: bool,
10056 ) -> Result<Option<ListFoldersContinueArg>, V::Error> {
10057 let mut field_cursor = None;
10058 let mut nothing = true;
10059 while let Some(key) = map.next_key::<&str>()? {
10060 nothing = false;
10061 match key {
10062 "cursor" => {
10063 if field_cursor.is_some() {
10064 return Err(::serde::de::Error::duplicate_field("cursor"));
10065 }
10066 field_cursor = Some(map.next_value()?);
10067 }
10068 _ => {
10069 map.next_value::<::serde_json::Value>()?;
10071 }
10072 }
10073 }
10074 if optional && nothing {
10075 return Ok(None);
10076 }
10077 let result = ListFoldersContinueArg {
10078 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
10079 };
10080 Ok(Some(result))
10081 }
10082
10083 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10084 &self,
10085 s: &mut S::SerializeStruct,
10086 ) -> Result<(), S::Error> {
10087 use serde::ser::SerializeStruct;
10088 s.serialize_field("cursor", &self.cursor)?;
10089 Ok(())
10090 }
10091}
10092
10093impl<'de> ::serde::de::Deserialize<'de> for ListFoldersContinueArg {
10094 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10095 use serde::de::{MapAccess, Visitor};
10097 struct StructVisitor;
10098 impl<'de> Visitor<'de> for StructVisitor {
10099 type Value = ListFoldersContinueArg;
10100 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10101 f.write_str("a ListFoldersContinueArg struct")
10102 }
10103 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10104 ListFoldersContinueArg::internal_deserialize(map)
10105 }
10106 }
10107 deserializer.deserialize_struct("ListFoldersContinueArg", LIST_FOLDERS_CONTINUE_ARG_FIELDS, StructVisitor)
10108 }
10109}
10110
10111impl ::serde::ser::Serialize for ListFoldersContinueArg {
10112 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10113 use serde::ser::SerializeStruct;
10115 let mut s = serializer.serialize_struct("ListFoldersContinueArg", 1)?;
10116 self.internal_serialize::<S>(&mut s)?;
10117 s.end()
10118 }
10119}
10120
10121#[derive(Debug, Clone, PartialEq, Eq)]
10122#[non_exhaustive] pub enum ListFoldersContinueError {
10124 InvalidCursor,
10126 Other,
10129}
10130
10131impl<'de> ::serde::de::Deserialize<'de> for ListFoldersContinueError {
10132 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10133 use serde::de::{self, MapAccess, Visitor};
10135 struct EnumVisitor;
10136 impl<'de> Visitor<'de> for EnumVisitor {
10137 type Value = ListFoldersContinueError;
10138 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10139 f.write_str("a ListFoldersContinueError structure")
10140 }
10141 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
10142 let tag: &str = match map.next_key()? {
10143 Some(".tag") => map.next_value()?,
10144 _ => return Err(de::Error::missing_field(".tag"))
10145 };
10146 let value = match tag {
10147 "invalid_cursor" => ListFoldersContinueError::InvalidCursor,
10148 _ => ListFoldersContinueError::Other,
10149 };
10150 crate::eat_json_fields(&mut map)?;
10151 Ok(value)
10152 }
10153 }
10154 const VARIANTS: &[&str] = &["invalid_cursor",
10155 "other"];
10156 deserializer.deserialize_struct("ListFoldersContinueError", VARIANTS, EnumVisitor)
10157 }
10158}
10159
10160impl ::serde::ser::Serialize for ListFoldersContinueError {
10161 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10162 use serde::ser::SerializeStruct;
10164 match self {
10165 ListFoldersContinueError::InvalidCursor => {
10166 let mut s = serializer.serialize_struct("ListFoldersContinueError", 1)?;
10168 s.serialize_field(".tag", "invalid_cursor")?;
10169 s.end()
10170 }
10171 ListFoldersContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
10172 }
10173 }
10174}
10175
10176impl ::std::error::Error for ListFoldersContinueError {
10177}
10178
10179impl ::std::fmt::Display for ListFoldersContinueError {
10180 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10181 write!(f, "{:?}", *self)
10182 }
10183}
10184
10185#[derive(Debug, Clone, PartialEq, Eq)]
10190#[non_exhaustive] pub struct ListFoldersResult {
10192 pub entries: Vec<SharedFolderMetadata>,
10194 pub cursor: Option<String>,
10200}
10201
10202impl ListFoldersResult {
10203 pub fn new(entries: Vec<SharedFolderMetadata>) -> Self {
10204 ListFoldersResult {
10205 entries,
10206 cursor: None,
10207 }
10208 }
10209
10210 pub fn with_cursor(mut self, value: String) -> Self {
10211 self.cursor = Some(value);
10212 self
10213 }
10214}
10215
10216const LIST_FOLDERS_RESULT_FIELDS: &[&str] = &["entries",
10217 "cursor"];
10218impl ListFoldersResult {
10219 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10220 map: V,
10221 ) -> Result<ListFoldersResult, V::Error> {
10222 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
10223 }
10224
10225 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
10226 mut map: V,
10227 optional: bool,
10228 ) -> Result<Option<ListFoldersResult>, V::Error> {
10229 let mut field_entries = None;
10230 let mut field_cursor = None;
10231 let mut nothing = true;
10232 while let Some(key) = map.next_key::<&str>()? {
10233 nothing = false;
10234 match key {
10235 "entries" => {
10236 if field_entries.is_some() {
10237 return Err(::serde::de::Error::duplicate_field("entries"));
10238 }
10239 field_entries = Some(map.next_value()?);
10240 }
10241 "cursor" => {
10242 if field_cursor.is_some() {
10243 return Err(::serde::de::Error::duplicate_field("cursor"));
10244 }
10245 field_cursor = Some(map.next_value()?);
10246 }
10247 _ => {
10248 map.next_value::<::serde_json::Value>()?;
10250 }
10251 }
10252 }
10253 if optional && nothing {
10254 return Ok(None);
10255 }
10256 let result = ListFoldersResult {
10257 entries: field_entries.ok_or_else(|| ::serde::de::Error::missing_field("entries"))?,
10258 cursor: field_cursor.and_then(Option::flatten),
10259 };
10260 Ok(Some(result))
10261 }
10262
10263 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10264 &self,
10265 s: &mut S::SerializeStruct,
10266 ) -> Result<(), S::Error> {
10267 use serde::ser::SerializeStruct;
10268 s.serialize_field("entries", &self.entries)?;
10269 if let Some(val) = &self.cursor {
10270 s.serialize_field("cursor", val)?;
10271 }
10272 Ok(())
10273 }
10274}
10275
10276impl<'de> ::serde::de::Deserialize<'de> for ListFoldersResult {
10277 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10278 use serde::de::{MapAccess, Visitor};
10280 struct StructVisitor;
10281 impl<'de> Visitor<'de> for StructVisitor {
10282 type Value = ListFoldersResult;
10283 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10284 f.write_str("a ListFoldersResult struct")
10285 }
10286 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10287 ListFoldersResult::internal_deserialize(map)
10288 }
10289 }
10290 deserializer.deserialize_struct("ListFoldersResult", LIST_FOLDERS_RESULT_FIELDS, StructVisitor)
10291 }
10292}
10293
10294impl ::serde::ser::Serialize for ListFoldersResult {
10295 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10296 use serde::ser::SerializeStruct;
10298 let mut s = serializer.serialize_struct("ListFoldersResult", 2)?;
10299 self.internal_serialize::<S>(&mut s)?;
10300 s.end()
10301 }
10302}
10303
10304#[derive(Debug, Clone, PartialEq, Eq, Default)]
10305#[non_exhaustive] pub struct ListSharedLinksArg {
10307 pub path: Option<ReadPath>,
10309 pub cursor: Option<String>,
10312 pub direct_only: Option<bool>,
10314}
10315
10316impl ListSharedLinksArg {
10317 pub fn with_path(mut self, value: ReadPath) -> Self {
10318 self.path = Some(value);
10319 self
10320 }
10321
10322 pub fn with_cursor(mut self, value: String) -> Self {
10323 self.cursor = Some(value);
10324 self
10325 }
10326
10327 pub fn with_direct_only(mut self, value: bool) -> Self {
10328 self.direct_only = Some(value);
10329 self
10330 }
10331}
10332
10333const LIST_SHARED_LINKS_ARG_FIELDS: &[&str] = &["path",
10334 "cursor",
10335 "direct_only"];
10336impl ListSharedLinksArg {
10337 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10339 mut map: V,
10340 ) -> Result<ListSharedLinksArg, V::Error> {
10341 let mut field_path = None;
10342 let mut field_cursor = None;
10343 let mut field_direct_only = None;
10344 while let Some(key) = map.next_key::<&str>()? {
10345 match key {
10346 "path" => {
10347 if field_path.is_some() {
10348 return Err(::serde::de::Error::duplicate_field("path"));
10349 }
10350 field_path = Some(map.next_value()?);
10351 }
10352 "cursor" => {
10353 if field_cursor.is_some() {
10354 return Err(::serde::de::Error::duplicate_field("cursor"));
10355 }
10356 field_cursor = Some(map.next_value()?);
10357 }
10358 "direct_only" => {
10359 if field_direct_only.is_some() {
10360 return Err(::serde::de::Error::duplicate_field("direct_only"));
10361 }
10362 field_direct_only = Some(map.next_value()?);
10363 }
10364 _ => {
10365 map.next_value::<::serde_json::Value>()?;
10367 }
10368 }
10369 }
10370 let result = ListSharedLinksArg {
10371 path: field_path.and_then(Option::flatten),
10372 cursor: field_cursor.and_then(Option::flatten),
10373 direct_only: field_direct_only.and_then(Option::flatten),
10374 };
10375 Ok(result)
10376 }
10377
10378 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10379 &self,
10380 s: &mut S::SerializeStruct,
10381 ) -> Result<(), S::Error> {
10382 use serde::ser::SerializeStruct;
10383 if let Some(val) = &self.path {
10384 s.serialize_field("path", val)?;
10385 }
10386 if let Some(val) = &self.cursor {
10387 s.serialize_field("cursor", val)?;
10388 }
10389 if let Some(val) = &self.direct_only {
10390 s.serialize_field("direct_only", val)?;
10391 }
10392 Ok(())
10393 }
10394}
10395
10396impl<'de> ::serde::de::Deserialize<'de> for ListSharedLinksArg {
10397 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10398 use serde::de::{MapAccess, Visitor};
10400 struct StructVisitor;
10401 impl<'de> Visitor<'de> for StructVisitor {
10402 type Value = ListSharedLinksArg;
10403 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10404 f.write_str("a ListSharedLinksArg struct")
10405 }
10406 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10407 ListSharedLinksArg::internal_deserialize(map)
10408 }
10409 }
10410 deserializer.deserialize_struct("ListSharedLinksArg", LIST_SHARED_LINKS_ARG_FIELDS, StructVisitor)
10411 }
10412}
10413
10414impl ::serde::ser::Serialize for ListSharedLinksArg {
10415 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10416 use serde::ser::SerializeStruct;
10418 let mut s = serializer.serialize_struct("ListSharedLinksArg", 3)?;
10419 self.internal_serialize::<S>(&mut s)?;
10420 s.end()
10421 }
10422}
10423
10424#[derive(Debug, Clone, PartialEq, Eq)]
10425#[non_exhaustive] pub enum ListSharedLinksError {
10427 Path(crate::types::files::LookupError),
10428 Reset,
10431 Other,
10434}
10435
10436impl<'de> ::serde::de::Deserialize<'de> for ListSharedLinksError {
10437 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10438 use serde::de::{self, MapAccess, Visitor};
10440 struct EnumVisitor;
10441 impl<'de> Visitor<'de> for EnumVisitor {
10442 type Value = ListSharedLinksError;
10443 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10444 f.write_str("a ListSharedLinksError structure")
10445 }
10446 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
10447 let tag: &str = match map.next_key()? {
10448 Some(".tag") => map.next_value()?,
10449 _ => return Err(de::Error::missing_field(".tag"))
10450 };
10451 let value = match tag {
10452 "path" => {
10453 match map.next_key()? {
10454 Some("path") => ListSharedLinksError::Path(map.next_value()?),
10455 None => return Err(de::Error::missing_field("path")),
10456 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
10457 }
10458 }
10459 "reset" => ListSharedLinksError::Reset,
10460 _ => ListSharedLinksError::Other,
10461 };
10462 crate::eat_json_fields(&mut map)?;
10463 Ok(value)
10464 }
10465 }
10466 const VARIANTS: &[&str] = &["path",
10467 "reset",
10468 "other"];
10469 deserializer.deserialize_struct("ListSharedLinksError", VARIANTS, EnumVisitor)
10470 }
10471}
10472
10473impl ::serde::ser::Serialize for ListSharedLinksError {
10474 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10475 use serde::ser::SerializeStruct;
10477 match self {
10478 ListSharedLinksError::Path(x) => {
10479 let mut s = serializer.serialize_struct("ListSharedLinksError", 2)?;
10481 s.serialize_field(".tag", "path")?;
10482 s.serialize_field("path", x)?;
10483 s.end()
10484 }
10485 ListSharedLinksError::Reset => {
10486 let mut s = serializer.serialize_struct("ListSharedLinksError", 1)?;
10488 s.serialize_field(".tag", "reset")?;
10489 s.end()
10490 }
10491 ListSharedLinksError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
10492 }
10493 }
10494}
10495
10496impl ::std::error::Error for ListSharedLinksError {
10497 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
10498 match self {
10499 ListSharedLinksError::Path(inner) => Some(inner),
10500 _ => None,
10501 }
10502 }
10503}
10504
10505impl ::std::fmt::Display for ListSharedLinksError {
10506 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10507 match self {
10508 ListSharedLinksError::Path(inner) => write!(f, "ListSharedLinksError: {}", inner),
10509 _ => write!(f, "{:?}", *self),
10510 }
10511 }
10512}
10513
10514#[derive(Debug, Clone, PartialEq, Eq)]
10515#[non_exhaustive] pub struct ListSharedLinksResult {
10517 pub links: Vec<SharedLinkMetadata>,
10519 pub has_more: bool,
10522 pub cursor: Option<String>,
10525}
10526
10527impl ListSharedLinksResult {
10528 pub fn new(links: Vec<SharedLinkMetadata>, has_more: bool) -> Self {
10529 ListSharedLinksResult {
10530 links,
10531 has_more,
10532 cursor: None,
10533 }
10534 }
10535
10536 pub fn with_cursor(mut self, value: String) -> Self {
10537 self.cursor = Some(value);
10538 self
10539 }
10540}
10541
10542const LIST_SHARED_LINKS_RESULT_FIELDS: &[&str] = &["links",
10543 "has_more",
10544 "cursor"];
10545impl ListSharedLinksResult {
10546 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10547 map: V,
10548 ) -> Result<ListSharedLinksResult, V::Error> {
10549 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
10550 }
10551
10552 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
10553 mut map: V,
10554 optional: bool,
10555 ) -> Result<Option<ListSharedLinksResult>, V::Error> {
10556 let mut field_links = None;
10557 let mut field_has_more = None;
10558 let mut field_cursor = None;
10559 let mut nothing = true;
10560 while let Some(key) = map.next_key::<&str>()? {
10561 nothing = false;
10562 match key {
10563 "links" => {
10564 if field_links.is_some() {
10565 return Err(::serde::de::Error::duplicate_field("links"));
10566 }
10567 field_links = Some(map.next_value()?);
10568 }
10569 "has_more" => {
10570 if field_has_more.is_some() {
10571 return Err(::serde::de::Error::duplicate_field("has_more"));
10572 }
10573 field_has_more = Some(map.next_value()?);
10574 }
10575 "cursor" => {
10576 if field_cursor.is_some() {
10577 return Err(::serde::de::Error::duplicate_field("cursor"));
10578 }
10579 field_cursor = Some(map.next_value()?);
10580 }
10581 _ => {
10582 map.next_value::<::serde_json::Value>()?;
10584 }
10585 }
10586 }
10587 if optional && nothing {
10588 return Ok(None);
10589 }
10590 let result = ListSharedLinksResult {
10591 links: field_links.ok_or_else(|| ::serde::de::Error::missing_field("links"))?,
10592 has_more: field_has_more.ok_or_else(|| ::serde::de::Error::missing_field("has_more"))?,
10593 cursor: field_cursor.and_then(Option::flatten),
10594 };
10595 Ok(Some(result))
10596 }
10597
10598 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10599 &self,
10600 s: &mut S::SerializeStruct,
10601 ) -> Result<(), S::Error> {
10602 use serde::ser::SerializeStruct;
10603 s.serialize_field("links", &self.links)?;
10604 s.serialize_field("has_more", &self.has_more)?;
10605 if let Some(val) = &self.cursor {
10606 s.serialize_field("cursor", val)?;
10607 }
10608 Ok(())
10609 }
10610}
10611
10612impl<'de> ::serde::de::Deserialize<'de> for ListSharedLinksResult {
10613 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10614 use serde::de::{MapAccess, Visitor};
10616 struct StructVisitor;
10617 impl<'de> Visitor<'de> for StructVisitor {
10618 type Value = ListSharedLinksResult;
10619 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10620 f.write_str("a ListSharedLinksResult struct")
10621 }
10622 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10623 ListSharedLinksResult::internal_deserialize(map)
10624 }
10625 }
10626 deserializer.deserialize_struct("ListSharedLinksResult", LIST_SHARED_LINKS_RESULT_FIELDS, StructVisitor)
10627 }
10628}
10629
10630impl ::serde::ser::Serialize for ListSharedLinksResult {
10631 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10632 use serde::ser::SerializeStruct;
10634 let mut s = serializer.serialize_struct("ListSharedLinksResult", 3)?;
10635 self.internal_serialize::<S>(&mut s)?;
10636 s.end()
10637 }
10638}
10639
10640#[derive(Debug, Clone, PartialEq, Eq, Default)]
10642#[non_exhaustive] pub struct MemberAccessLevelResult {
10644 pub access_level: Option<AccessLevel>,
10646 pub warning: Option<String>,
10649 pub access_details: Option<Vec<ParentFolderAccessInfo>>,
10652}
10653
10654impl MemberAccessLevelResult {
10655 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
10656 self.access_level = Some(value);
10657 self
10658 }
10659
10660 pub fn with_warning(mut self, value: String) -> Self {
10661 self.warning = Some(value);
10662 self
10663 }
10664
10665 pub fn with_access_details(mut self, value: Vec<ParentFolderAccessInfo>) -> Self {
10666 self.access_details = Some(value);
10667 self
10668 }
10669}
10670
10671const MEMBER_ACCESS_LEVEL_RESULT_FIELDS: &[&str] = &["access_level",
10672 "warning",
10673 "access_details"];
10674impl MemberAccessLevelResult {
10675 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10677 mut map: V,
10678 ) -> Result<MemberAccessLevelResult, V::Error> {
10679 let mut field_access_level = None;
10680 let mut field_warning = None;
10681 let mut field_access_details = None;
10682 while let Some(key) = map.next_key::<&str>()? {
10683 match key {
10684 "access_level" => {
10685 if field_access_level.is_some() {
10686 return Err(::serde::de::Error::duplicate_field("access_level"));
10687 }
10688 field_access_level = Some(map.next_value()?);
10689 }
10690 "warning" => {
10691 if field_warning.is_some() {
10692 return Err(::serde::de::Error::duplicate_field("warning"));
10693 }
10694 field_warning = Some(map.next_value()?);
10695 }
10696 "access_details" => {
10697 if field_access_details.is_some() {
10698 return Err(::serde::de::Error::duplicate_field("access_details"));
10699 }
10700 field_access_details = Some(map.next_value()?);
10701 }
10702 _ => {
10703 map.next_value::<::serde_json::Value>()?;
10705 }
10706 }
10707 }
10708 let result = MemberAccessLevelResult {
10709 access_level: field_access_level.and_then(Option::flatten),
10710 warning: field_warning.and_then(Option::flatten),
10711 access_details: field_access_details.and_then(Option::flatten),
10712 };
10713 Ok(result)
10714 }
10715
10716 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10717 &self,
10718 s: &mut S::SerializeStruct,
10719 ) -> Result<(), S::Error> {
10720 use serde::ser::SerializeStruct;
10721 if let Some(val) = &self.access_level {
10722 s.serialize_field("access_level", val)?;
10723 }
10724 if let Some(val) = &self.warning {
10725 s.serialize_field("warning", val)?;
10726 }
10727 if let Some(val) = &self.access_details {
10728 s.serialize_field("access_details", val)?;
10729 }
10730 Ok(())
10731 }
10732}
10733
10734impl<'de> ::serde::de::Deserialize<'de> for MemberAccessLevelResult {
10735 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10736 use serde::de::{MapAccess, Visitor};
10738 struct StructVisitor;
10739 impl<'de> Visitor<'de> for StructVisitor {
10740 type Value = MemberAccessLevelResult;
10741 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10742 f.write_str("a MemberAccessLevelResult struct")
10743 }
10744 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10745 MemberAccessLevelResult::internal_deserialize(map)
10746 }
10747 }
10748 deserializer.deserialize_struct("MemberAccessLevelResult", MEMBER_ACCESS_LEVEL_RESULT_FIELDS, StructVisitor)
10749 }
10750}
10751
10752impl ::serde::ser::Serialize for MemberAccessLevelResult {
10753 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10754 use serde::ser::SerializeStruct;
10756 let mut s = serializer.serialize_struct("MemberAccessLevelResult", 3)?;
10757 self.internal_serialize::<S>(&mut s)?;
10758 s.end()
10759 }
10760}
10761
10762#[derive(Debug, Clone, PartialEq, Eq)]
10764#[non_exhaustive] pub enum MemberAction {
10766 LeaveACopy,
10768 MakeEditor,
10770 MakeOwner,
10772 MakeViewer,
10774 MakeViewerNoComment,
10776 Remove,
10778 Other,
10781}
10782
10783impl<'de> ::serde::de::Deserialize<'de> for MemberAction {
10784 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10785 use serde::de::{self, MapAccess, Visitor};
10787 struct EnumVisitor;
10788 impl<'de> Visitor<'de> for EnumVisitor {
10789 type Value = MemberAction;
10790 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10791 f.write_str("a MemberAction structure")
10792 }
10793 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
10794 let tag: &str = match map.next_key()? {
10795 Some(".tag") => map.next_value()?,
10796 _ => return Err(de::Error::missing_field(".tag"))
10797 };
10798 let value = match tag {
10799 "leave_a_copy" => MemberAction::LeaveACopy,
10800 "make_editor" => MemberAction::MakeEditor,
10801 "make_owner" => MemberAction::MakeOwner,
10802 "make_viewer" => MemberAction::MakeViewer,
10803 "make_viewer_no_comment" => MemberAction::MakeViewerNoComment,
10804 "remove" => MemberAction::Remove,
10805 _ => MemberAction::Other,
10806 };
10807 crate::eat_json_fields(&mut map)?;
10808 Ok(value)
10809 }
10810 }
10811 const VARIANTS: &[&str] = &["leave_a_copy",
10812 "make_editor",
10813 "make_owner",
10814 "make_viewer",
10815 "make_viewer_no_comment",
10816 "remove",
10817 "other"];
10818 deserializer.deserialize_struct("MemberAction", VARIANTS, EnumVisitor)
10819 }
10820}
10821
10822impl ::serde::ser::Serialize for MemberAction {
10823 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10824 use serde::ser::SerializeStruct;
10826 match self {
10827 MemberAction::LeaveACopy => {
10828 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10830 s.serialize_field(".tag", "leave_a_copy")?;
10831 s.end()
10832 }
10833 MemberAction::MakeEditor => {
10834 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10836 s.serialize_field(".tag", "make_editor")?;
10837 s.end()
10838 }
10839 MemberAction::MakeOwner => {
10840 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10842 s.serialize_field(".tag", "make_owner")?;
10843 s.end()
10844 }
10845 MemberAction::MakeViewer => {
10846 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10848 s.serialize_field(".tag", "make_viewer")?;
10849 s.end()
10850 }
10851 MemberAction::MakeViewerNoComment => {
10852 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10854 s.serialize_field(".tag", "make_viewer_no_comment")?;
10855 s.end()
10856 }
10857 MemberAction::Remove => {
10858 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10860 s.serialize_field(".tag", "remove")?;
10861 s.end()
10862 }
10863 MemberAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
10864 }
10865 }
10866}
10867
10868#[derive(Debug, Clone, PartialEq, Eq)]
10870#[non_exhaustive] pub struct MemberPermission {
10872 pub action: MemberAction,
10874 pub allow: bool,
10876 pub reason: Option<PermissionDeniedReason>,
10878}
10879
10880impl MemberPermission {
10881 pub fn new(action: MemberAction, allow: bool) -> Self {
10882 MemberPermission {
10883 action,
10884 allow,
10885 reason: None,
10886 }
10887 }
10888
10889 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
10890 self.reason = Some(value);
10891 self
10892 }
10893}
10894
10895const MEMBER_PERMISSION_FIELDS: &[&str] = &["action",
10896 "allow",
10897 "reason"];
10898impl MemberPermission {
10899 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10900 map: V,
10901 ) -> Result<MemberPermission, V::Error> {
10902 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
10903 }
10904
10905 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
10906 mut map: V,
10907 optional: bool,
10908 ) -> Result<Option<MemberPermission>, V::Error> {
10909 let mut field_action = None;
10910 let mut field_allow = None;
10911 let mut field_reason = None;
10912 let mut nothing = true;
10913 while let Some(key) = map.next_key::<&str>()? {
10914 nothing = false;
10915 match key {
10916 "action" => {
10917 if field_action.is_some() {
10918 return Err(::serde::de::Error::duplicate_field("action"));
10919 }
10920 field_action = Some(map.next_value()?);
10921 }
10922 "allow" => {
10923 if field_allow.is_some() {
10924 return Err(::serde::de::Error::duplicate_field("allow"));
10925 }
10926 field_allow = Some(map.next_value()?);
10927 }
10928 "reason" => {
10929 if field_reason.is_some() {
10930 return Err(::serde::de::Error::duplicate_field("reason"));
10931 }
10932 field_reason = Some(map.next_value()?);
10933 }
10934 _ => {
10935 map.next_value::<::serde_json::Value>()?;
10937 }
10938 }
10939 }
10940 if optional && nothing {
10941 return Ok(None);
10942 }
10943 let result = MemberPermission {
10944 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
10945 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
10946 reason: field_reason.and_then(Option::flatten),
10947 };
10948 Ok(Some(result))
10949 }
10950
10951 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10952 &self,
10953 s: &mut S::SerializeStruct,
10954 ) -> Result<(), S::Error> {
10955 use serde::ser::SerializeStruct;
10956 s.serialize_field("action", &self.action)?;
10957 s.serialize_field("allow", &self.allow)?;
10958 if let Some(val) = &self.reason {
10959 s.serialize_field("reason", val)?;
10960 }
10961 Ok(())
10962 }
10963}
10964
10965impl<'de> ::serde::de::Deserialize<'de> for MemberPermission {
10966 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10967 use serde::de::{MapAccess, Visitor};
10969 struct StructVisitor;
10970 impl<'de> Visitor<'de> for StructVisitor {
10971 type Value = MemberPermission;
10972 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10973 f.write_str("a MemberPermission struct")
10974 }
10975 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10976 MemberPermission::internal_deserialize(map)
10977 }
10978 }
10979 deserializer.deserialize_struct("MemberPermission", MEMBER_PERMISSION_FIELDS, StructVisitor)
10980 }
10981}
10982
10983impl ::serde::ser::Serialize for MemberPermission {
10984 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10985 use serde::ser::SerializeStruct;
10987 let mut s = serializer.serialize_struct("MemberPermission", 3)?;
10988 self.internal_serialize::<S>(&mut s)?;
10989 s.end()
10990 }
10991}
10992
10993#[derive(Debug, Clone, PartialEq, Eq)]
10996#[non_exhaustive] pub enum MemberPolicy {
10998 Team,
11000 Anyone,
11002 TeamAndApproved,
11004 Other,
11007}
11008
11009impl<'de> ::serde::de::Deserialize<'de> for MemberPolicy {
11010 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11011 use serde::de::{self, MapAccess, Visitor};
11013 struct EnumVisitor;
11014 impl<'de> Visitor<'de> for EnumVisitor {
11015 type Value = MemberPolicy;
11016 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11017 f.write_str("a MemberPolicy structure")
11018 }
11019 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11020 let tag: &str = match map.next_key()? {
11021 Some(".tag") => map.next_value()?,
11022 _ => return Err(de::Error::missing_field(".tag"))
11023 };
11024 let value = match tag {
11025 "team" => MemberPolicy::Team,
11026 "anyone" => MemberPolicy::Anyone,
11027 "team_and_approved" => MemberPolicy::TeamAndApproved,
11028 _ => MemberPolicy::Other,
11029 };
11030 crate::eat_json_fields(&mut map)?;
11031 Ok(value)
11032 }
11033 }
11034 const VARIANTS: &[&str] = &["team",
11035 "anyone",
11036 "team_and_approved",
11037 "other"];
11038 deserializer.deserialize_struct("MemberPolicy", VARIANTS, EnumVisitor)
11039 }
11040}
11041
11042impl ::serde::ser::Serialize for MemberPolicy {
11043 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11044 use serde::ser::SerializeStruct;
11046 match self {
11047 MemberPolicy::Team => {
11048 let mut s = serializer.serialize_struct("MemberPolicy", 1)?;
11050 s.serialize_field(".tag", "team")?;
11051 s.end()
11052 }
11053 MemberPolicy::Anyone => {
11054 let mut s = serializer.serialize_struct("MemberPolicy", 1)?;
11056 s.serialize_field(".tag", "anyone")?;
11057 s.end()
11058 }
11059 MemberPolicy::TeamAndApproved => {
11060 let mut s = serializer.serialize_struct("MemberPolicy", 1)?;
11062 s.serialize_field(".tag", "team_and_approved")?;
11063 s.end()
11064 }
11065 MemberPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
11066 }
11067 }
11068}
11069
11070#[derive(Debug, Clone, PartialEq, Eq)]
11072#[non_exhaustive] pub enum MemberSelector {
11074 DropboxId(DropboxId),
11076 Email(crate::types::common::EmailAddress),
11078 Other,
11081}
11082
11083impl<'de> ::serde::de::Deserialize<'de> for MemberSelector {
11084 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11085 use serde::de::{self, MapAccess, Visitor};
11087 struct EnumVisitor;
11088 impl<'de> Visitor<'de> for EnumVisitor {
11089 type Value = MemberSelector;
11090 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11091 f.write_str("a MemberSelector structure")
11092 }
11093 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11094 let tag: &str = match map.next_key()? {
11095 Some(".tag") => map.next_value()?,
11096 _ => return Err(de::Error::missing_field(".tag"))
11097 };
11098 let value = match tag {
11099 "dropbox_id" => {
11100 match map.next_key()? {
11101 Some("dropbox_id") => MemberSelector::DropboxId(map.next_value()?),
11102 None => return Err(de::Error::missing_field("dropbox_id")),
11103 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
11104 }
11105 }
11106 "email" => {
11107 match map.next_key()? {
11108 Some("email") => MemberSelector::Email(map.next_value()?),
11109 None => return Err(de::Error::missing_field("email")),
11110 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
11111 }
11112 }
11113 _ => MemberSelector::Other,
11114 };
11115 crate::eat_json_fields(&mut map)?;
11116 Ok(value)
11117 }
11118 }
11119 const VARIANTS: &[&str] = &["dropbox_id",
11120 "email",
11121 "other"];
11122 deserializer.deserialize_struct("MemberSelector", VARIANTS, EnumVisitor)
11123 }
11124}
11125
11126impl ::serde::ser::Serialize for MemberSelector {
11127 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11128 use serde::ser::SerializeStruct;
11130 match self {
11131 MemberSelector::DropboxId(x) => {
11132 let mut s = serializer.serialize_struct("MemberSelector", 2)?;
11134 s.serialize_field(".tag", "dropbox_id")?;
11135 s.serialize_field("dropbox_id", x)?;
11136 s.end()
11137 }
11138 MemberSelector::Email(x) => {
11139 let mut s = serializer.serialize_struct("MemberSelector", 2)?;
11141 s.serialize_field(".tag", "email")?;
11142 s.serialize_field("email", x)?;
11143 s.end()
11144 }
11145 MemberSelector::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
11146 }
11147 }
11148}
11149
11150#[derive(Debug, Clone, PartialEq, Eq)]
11152#[non_exhaustive] pub struct MembershipInfo {
11154 pub access_type: AccessLevel,
11157 pub permissions: Option<Vec<MemberPermission>>,
11160 pub initials: Option<String>,
11162 pub is_inherited: bool,
11164}
11165
11166impl MembershipInfo {
11167 pub fn new(access_type: AccessLevel) -> Self {
11168 MembershipInfo {
11169 access_type,
11170 permissions: None,
11171 initials: None,
11172 is_inherited: false,
11173 }
11174 }
11175
11176 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
11177 self.permissions = Some(value);
11178 self
11179 }
11180
11181 pub fn with_initials(mut self, value: String) -> Self {
11182 self.initials = Some(value);
11183 self
11184 }
11185
11186 pub fn with_is_inherited(mut self, value: bool) -> Self {
11187 self.is_inherited = value;
11188 self
11189 }
11190}
11191
11192const MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
11193 "permissions",
11194 "initials",
11195 "is_inherited"];
11196impl MembershipInfo {
11197 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11198 map: V,
11199 ) -> Result<MembershipInfo, V::Error> {
11200 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11201 }
11202
11203 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11204 mut map: V,
11205 optional: bool,
11206 ) -> Result<Option<MembershipInfo>, V::Error> {
11207 let mut field_access_type = None;
11208 let mut field_permissions = None;
11209 let mut field_initials = None;
11210 let mut field_is_inherited = None;
11211 let mut nothing = true;
11212 while let Some(key) = map.next_key::<&str>()? {
11213 nothing = false;
11214 match key {
11215 "access_type" => {
11216 if field_access_type.is_some() {
11217 return Err(::serde::de::Error::duplicate_field("access_type"));
11218 }
11219 field_access_type = Some(map.next_value()?);
11220 }
11221 "permissions" => {
11222 if field_permissions.is_some() {
11223 return Err(::serde::de::Error::duplicate_field("permissions"));
11224 }
11225 field_permissions = Some(map.next_value()?);
11226 }
11227 "initials" => {
11228 if field_initials.is_some() {
11229 return Err(::serde::de::Error::duplicate_field("initials"));
11230 }
11231 field_initials = Some(map.next_value()?);
11232 }
11233 "is_inherited" => {
11234 if field_is_inherited.is_some() {
11235 return Err(::serde::de::Error::duplicate_field("is_inherited"));
11236 }
11237 field_is_inherited = Some(map.next_value()?);
11238 }
11239 _ => {
11240 map.next_value::<::serde_json::Value>()?;
11242 }
11243 }
11244 }
11245 if optional && nothing {
11246 return Ok(None);
11247 }
11248 let result = MembershipInfo {
11249 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
11250 permissions: field_permissions.and_then(Option::flatten),
11251 initials: field_initials.and_then(Option::flatten),
11252 is_inherited: field_is_inherited.unwrap_or(false),
11253 };
11254 Ok(Some(result))
11255 }
11256
11257 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11258 &self,
11259 s: &mut S::SerializeStruct,
11260 ) -> Result<(), S::Error> {
11261 use serde::ser::SerializeStruct;
11262 s.serialize_field("access_type", &self.access_type)?;
11263 if let Some(val) = &self.permissions {
11264 s.serialize_field("permissions", val)?;
11265 }
11266 if let Some(val) = &self.initials {
11267 s.serialize_field("initials", val)?;
11268 }
11269 if self.is_inherited {
11270 s.serialize_field("is_inherited", &self.is_inherited)?;
11271 }
11272 Ok(())
11273 }
11274}
11275
11276impl<'de> ::serde::de::Deserialize<'de> for MembershipInfo {
11277 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11278 use serde::de::{MapAccess, Visitor};
11280 struct StructVisitor;
11281 impl<'de> Visitor<'de> for StructVisitor {
11282 type Value = MembershipInfo;
11283 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11284 f.write_str("a MembershipInfo struct")
11285 }
11286 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11287 MembershipInfo::internal_deserialize(map)
11288 }
11289 }
11290 deserializer.deserialize_struct("MembershipInfo", MEMBERSHIP_INFO_FIELDS, StructVisitor)
11291 }
11292}
11293
11294impl ::serde::ser::Serialize for MembershipInfo {
11295 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11296 use serde::ser::SerializeStruct;
11298 let mut s = serializer.serialize_struct("MembershipInfo", 4)?;
11299 self.internal_serialize::<S>(&mut s)?;
11300 s.end()
11301 }
11302}
11303
11304#[derive(Debug, Clone, PartialEq, Eq)]
11305#[non_exhaustive] pub struct ModifySharedLinkSettingsArgs {
11307 pub url: String,
11309 pub settings: SharedLinkSettings,
11311 pub remove_expiration: bool,
11313}
11314
11315impl ModifySharedLinkSettingsArgs {
11316 pub fn new(url: String, settings: SharedLinkSettings) -> Self {
11317 ModifySharedLinkSettingsArgs {
11318 url,
11319 settings,
11320 remove_expiration: false,
11321 }
11322 }
11323
11324 pub fn with_remove_expiration(mut self, value: bool) -> Self {
11325 self.remove_expiration = value;
11326 self
11327 }
11328}
11329
11330const MODIFY_SHARED_LINK_SETTINGS_ARGS_FIELDS: &[&str] = &["url",
11331 "settings",
11332 "remove_expiration"];
11333impl ModifySharedLinkSettingsArgs {
11334 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11335 map: V,
11336 ) -> Result<ModifySharedLinkSettingsArgs, V::Error> {
11337 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11338 }
11339
11340 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11341 mut map: V,
11342 optional: bool,
11343 ) -> Result<Option<ModifySharedLinkSettingsArgs>, V::Error> {
11344 let mut field_url = None;
11345 let mut field_settings = None;
11346 let mut field_remove_expiration = None;
11347 let mut nothing = true;
11348 while let Some(key) = map.next_key::<&str>()? {
11349 nothing = false;
11350 match key {
11351 "url" => {
11352 if field_url.is_some() {
11353 return Err(::serde::de::Error::duplicate_field("url"));
11354 }
11355 field_url = Some(map.next_value()?);
11356 }
11357 "settings" => {
11358 if field_settings.is_some() {
11359 return Err(::serde::de::Error::duplicate_field("settings"));
11360 }
11361 field_settings = Some(map.next_value()?);
11362 }
11363 "remove_expiration" => {
11364 if field_remove_expiration.is_some() {
11365 return Err(::serde::de::Error::duplicate_field("remove_expiration"));
11366 }
11367 field_remove_expiration = Some(map.next_value()?);
11368 }
11369 _ => {
11370 map.next_value::<::serde_json::Value>()?;
11372 }
11373 }
11374 }
11375 if optional && nothing {
11376 return Ok(None);
11377 }
11378 let result = ModifySharedLinkSettingsArgs {
11379 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
11380 settings: field_settings.ok_or_else(|| ::serde::de::Error::missing_field("settings"))?,
11381 remove_expiration: field_remove_expiration.unwrap_or(false),
11382 };
11383 Ok(Some(result))
11384 }
11385
11386 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11387 &self,
11388 s: &mut S::SerializeStruct,
11389 ) -> Result<(), S::Error> {
11390 use serde::ser::SerializeStruct;
11391 s.serialize_field("url", &self.url)?;
11392 s.serialize_field("settings", &self.settings)?;
11393 if self.remove_expiration {
11394 s.serialize_field("remove_expiration", &self.remove_expiration)?;
11395 }
11396 Ok(())
11397 }
11398}
11399
11400impl<'de> ::serde::de::Deserialize<'de> for ModifySharedLinkSettingsArgs {
11401 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11402 use serde::de::{MapAccess, Visitor};
11404 struct StructVisitor;
11405 impl<'de> Visitor<'de> for StructVisitor {
11406 type Value = ModifySharedLinkSettingsArgs;
11407 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11408 f.write_str("a ModifySharedLinkSettingsArgs struct")
11409 }
11410 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11411 ModifySharedLinkSettingsArgs::internal_deserialize(map)
11412 }
11413 }
11414 deserializer.deserialize_struct("ModifySharedLinkSettingsArgs", MODIFY_SHARED_LINK_SETTINGS_ARGS_FIELDS, StructVisitor)
11415 }
11416}
11417
11418impl ::serde::ser::Serialize for ModifySharedLinkSettingsArgs {
11419 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11420 use serde::ser::SerializeStruct;
11422 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsArgs", 3)?;
11423 self.internal_serialize::<S>(&mut s)?;
11424 s.end()
11425 }
11426}
11427
11428#[derive(Debug, Clone, PartialEq, Eq)]
11429#[non_exhaustive] pub enum ModifySharedLinkSettingsError {
11431 SharedLinkNotFound,
11433 SharedLinkAccessDenied,
11435 UnsupportedLinkType,
11437 UnsupportedParameterField,
11439 SettingsError(SharedLinkSettingsError),
11441 EmailNotVerified,
11445 Other,
11448}
11449
11450impl<'de> ::serde::de::Deserialize<'de> for ModifySharedLinkSettingsError {
11451 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11452 use serde::de::{self, MapAccess, Visitor};
11454 struct EnumVisitor;
11455 impl<'de> Visitor<'de> for EnumVisitor {
11456 type Value = ModifySharedLinkSettingsError;
11457 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11458 f.write_str("a ModifySharedLinkSettingsError structure")
11459 }
11460 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11461 let tag: &str = match map.next_key()? {
11462 Some(".tag") => map.next_value()?,
11463 _ => return Err(de::Error::missing_field(".tag"))
11464 };
11465 let value = match tag {
11466 "shared_link_not_found" => ModifySharedLinkSettingsError::SharedLinkNotFound,
11467 "shared_link_access_denied" => ModifySharedLinkSettingsError::SharedLinkAccessDenied,
11468 "unsupported_link_type" => ModifySharedLinkSettingsError::UnsupportedLinkType,
11469 "unsupported_parameter_field" => ModifySharedLinkSettingsError::UnsupportedParameterField,
11470 "settings_error" => {
11471 match map.next_key()? {
11472 Some("settings_error") => ModifySharedLinkSettingsError::SettingsError(map.next_value()?),
11473 None => return Err(de::Error::missing_field("settings_error")),
11474 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
11475 }
11476 }
11477 "email_not_verified" => ModifySharedLinkSettingsError::EmailNotVerified,
11478 _ => ModifySharedLinkSettingsError::Other,
11479 };
11480 crate::eat_json_fields(&mut map)?;
11481 Ok(value)
11482 }
11483 }
11484 const VARIANTS: &[&str] = &["shared_link_not_found",
11485 "shared_link_access_denied",
11486 "unsupported_link_type",
11487 "unsupported_parameter_field",
11488 "other",
11489 "settings_error",
11490 "email_not_verified"];
11491 deserializer.deserialize_struct("ModifySharedLinkSettingsError", VARIANTS, EnumVisitor)
11492 }
11493}
11494
11495impl ::serde::ser::Serialize for ModifySharedLinkSettingsError {
11496 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11497 use serde::ser::SerializeStruct;
11499 match self {
11500 ModifySharedLinkSettingsError::SharedLinkNotFound => {
11501 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11503 s.serialize_field(".tag", "shared_link_not_found")?;
11504 s.end()
11505 }
11506 ModifySharedLinkSettingsError::SharedLinkAccessDenied => {
11507 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11509 s.serialize_field(".tag", "shared_link_access_denied")?;
11510 s.end()
11511 }
11512 ModifySharedLinkSettingsError::UnsupportedLinkType => {
11513 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11515 s.serialize_field(".tag", "unsupported_link_type")?;
11516 s.end()
11517 }
11518 ModifySharedLinkSettingsError::UnsupportedParameterField => {
11519 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11521 s.serialize_field(".tag", "unsupported_parameter_field")?;
11522 s.end()
11523 }
11524 ModifySharedLinkSettingsError::SettingsError(x) => {
11525 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 2)?;
11527 s.serialize_field(".tag", "settings_error")?;
11528 s.serialize_field("settings_error", x)?;
11529 s.end()
11530 }
11531 ModifySharedLinkSettingsError::EmailNotVerified => {
11532 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11534 s.serialize_field(".tag", "email_not_verified")?;
11535 s.end()
11536 }
11537 ModifySharedLinkSettingsError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
11538 }
11539 }
11540}
11541
11542impl ::std::error::Error for ModifySharedLinkSettingsError {
11543 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
11544 match self {
11545 ModifySharedLinkSettingsError::SettingsError(inner) => Some(inner),
11546 _ => None,
11547 }
11548 }
11549}
11550
11551impl ::std::fmt::Display for ModifySharedLinkSettingsError {
11552 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11553 match self {
11554 ModifySharedLinkSettingsError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
11555 ModifySharedLinkSettingsError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
11556 ModifySharedLinkSettingsError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."),
11557 ModifySharedLinkSettingsError::SettingsError(inner) => write!(f, "There is an error with the given settings: {}", inner),
11558 _ => write!(f, "{:?}", *self),
11559 }
11560 }
11561}
11562
11563impl From<SharedLinkError> for ModifySharedLinkSettingsError {
11565 fn from(parent: SharedLinkError) -> Self {
11566 match parent {
11567 SharedLinkError::SharedLinkNotFound => ModifySharedLinkSettingsError::SharedLinkNotFound,
11568 SharedLinkError::SharedLinkAccessDenied => ModifySharedLinkSettingsError::SharedLinkAccessDenied,
11569 SharedLinkError::UnsupportedLinkType => ModifySharedLinkSettingsError::UnsupportedLinkType,
11570 SharedLinkError::UnsupportedParameterField => ModifySharedLinkSettingsError::UnsupportedParameterField,
11571 SharedLinkError::Other => ModifySharedLinkSettingsError::Other,
11572 }
11573 }
11574}
11575#[derive(Debug, Clone, PartialEq, Eq)]
11576#[non_exhaustive] pub struct MountFolderArg {
11578 pub shared_folder_id: crate::types::common::SharedFolderId,
11580}
11581
11582impl MountFolderArg {
11583 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
11584 MountFolderArg {
11585 shared_folder_id,
11586 }
11587 }
11588}
11589
11590const MOUNT_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id"];
11591impl MountFolderArg {
11592 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11593 map: V,
11594 ) -> Result<MountFolderArg, V::Error> {
11595 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11596 }
11597
11598 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11599 mut map: V,
11600 optional: bool,
11601 ) -> Result<Option<MountFolderArg>, V::Error> {
11602 let mut field_shared_folder_id = None;
11603 let mut nothing = true;
11604 while let Some(key) = map.next_key::<&str>()? {
11605 nothing = false;
11606 match key {
11607 "shared_folder_id" => {
11608 if field_shared_folder_id.is_some() {
11609 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
11610 }
11611 field_shared_folder_id = Some(map.next_value()?);
11612 }
11613 _ => {
11614 map.next_value::<::serde_json::Value>()?;
11616 }
11617 }
11618 }
11619 if optional && nothing {
11620 return Ok(None);
11621 }
11622 let result = MountFolderArg {
11623 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
11624 };
11625 Ok(Some(result))
11626 }
11627
11628 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11629 &self,
11630 s: &mut S::SerializeStruct,
11631 ) -> Result<(), S::Error> {
11632 use serde::ser::SerializeStruct;
11633 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
11634 Ok(())
11635 }
11636}
11637
11638impl<'de> ::serde::de::Deserialize<'de> for MountFolderArg {
11639 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11640 use serde::de::{MapAccess, Visitor};
11642 struct StructVisitor;
11643 impl<'de> Visitor<'de> for StructVisitor {
11644 type Value = MountFolderArg;
11645 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11646 f.write_str("a MountFolderArg struct")
11647 }
11648 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11649 MountFolderArg::internal_deserialize(map)
11650 }
11651 }
11652 deserializer.deserialize_struct("MountFolderArg", MOUNT_FOLDER_ARG_FIELDS, StructVisitor)
11653 }
11654}
11655
11656impl ::serde::ser::Serialize for MountFolderArg {
11657 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11658 use serde::ser::SerializeStruct;
11660 let mut s = serializer.serialize_struct("MountFolderArg", 1)?;
11661 self.internal_serialize::<S>(&mut s)?;
11662 s.end()
11663 }
11664}
11665
11666#[derive(Debug, Clone, PartialEq, Eq)]
11667#[non_exhaustive] pub enum MountFolderError {
11669 AccessError(SharedFolderAccessError),
11670 InsideSharedFolder,
11672 InsufficientQuota(InsufficientQuotaAmounts),
11674 AlreadyMounted,
11676 NoPermission,
11678 NotMountable,
11681 MustAutomount,
11684 Other,
11687}
11688
11689impl<'de> ::serde::de::Deserialize<'de> for MountFolderError {
11690 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11691 use serde::de::{self, MapAccess, Visitor};
11693 struct EnumVisitor;
11694 impl<'de> Visitor<'de> for EnumVisitor {
11695 type Value = MountFolderError;
11696 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11697 f.write_str("a MountFolderError structure")
11698 }
11699 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11700 let tag: &str = match map.next_key()? {
11701 Some(".tag") => map.next_value()?,
11702 _ => return Err(de::Error::missing_field(".tag"))
11703 };
11704 let value = match tag {
11705 "access_error" => {
11706 match map.next_key()? {
11707 Some("access_error") => MountFolderError::AccessError(map.next_value()?),
11708 None => return Err(de::Error::missing_field("access_error")),
11709 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
11710 }
11711 }
11712 "inside_shared_folder" => MountFolderError::InsideSharedFolder,
11713 "insufficient_quota" => MountFolderError::InsufficientQuota(InsufficientQuotaAmounts::internal_deserialize(&mut map)?),
11714 "already_mounted" => MountFolderError::AlreadyMounted,
11715 "no_permission" => MountFolderError::NoPermission,
11716 "not_mountable" => MountFolderError::NotMountable,
11717 "must_automount" => MountFolderError::MustAutomount,
11718 _ => MountFolderError::Other,
11719 };
11720 crate::eat_json_fields(&mut map)?;
11721 Ok(value)
11722 }
11723 }
11724 const VARIANTS: &[&str] = &["access_error",
11725 "inside_shared_folder",
11726 "insufficient_quota",
11727 "already_mounted",
11728 "no_permission",
11729 "not_mountable",
11730 "must_automount",
11731 "other"];
11732 deserializer.deserialize_struct("MountFolderError", VARIANTS, EnumVisitor)
11733 }
11734}
11735
11736impl ::serde::ser::Serialize for MountFolderError {
11737 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11738 use serde::ser::SerializeStruct;
11740 match self {
11741 MountFolderError::AccessError(x) => {
11742 let mut s = serializer.serialize_struct("MountFolderError", 2)?;
11744 s.serialize_field(".tag", "access_error")?;
11745 s.serialize_field("access_error", x)?;
11746 s.end()
11747 }
11748 MountFolderError::InsideSharedFolder => {
11749 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11751 s.serialize_field(".tag", "inside_shared_folder")?;
11752 s.end()
11753 }
11754 MountFolderError::InsufficientQuota(x) => {
11755 let mut s = serializer.serialize_struct("MountFolderError", 4)?;
11757 s.serialize_field(".tag", "insufficient_quota")?;
11758 x.internal_serialize::<S>(&mut s)?;
11759 s.end()
11760 }
11761 MountFolderError::AlreadyMounted => {
11762 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11764 s.serialize_field(".tag", "already_mounted")?;
11765 s.end()
11766 }
11767 MountFolderError::NoPermission => {
11768 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11770 s.serialize_field(".tag", "no_permission")?;
11771 s.end()
11772 }
11773 MountFolderError::NotMountable => {
11774 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11776 s.serialize_field(".tag", "not_mountable")?;
11777 s.end()
11778 }
11779 MountFolderError::MustAutomount => {
11780 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11782 s.serialize_field(".tag", "must_automount")?;
11783 s.end()
11784 }
11785 MountFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
11786 }
11787 }
11788}
11789
11790impl ::std::error::Error for MountFolderError {
11791 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
11792 match self {
11793 MountFolderError::AccessError(inner) => Some(inner),
11794 _ => None,
11795 }
11796 }
11797}
11798
11799impl ::std::fmt::Display for MountFolderError {
11800 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11801 match self {
11802 MountFolderError::AccessError(inner) => write!(f, "MountFolderError: {}", inner),
11803 MountFolderError::InsideSharedFolder => f.write_str("Mounting would cause a shared folder to be inside another, which is disallowed."),
11804 MountFolderError::InsufficientQuota(inner) => write!(f, "The current user does not have enough space to mount the shared folder: {:?}", inner),
11805 MountFolderError::AlreadyMounted => f.write_str("The shared folder is already mounted."),
11806 MountFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
11807 MountFolderError::NotMountable => f.write_str("The shared folder is not mountable. One example where this can occur is when the shared folder belongs within a team folder in the user's Dropbox."),
11808 MountFolderError::MustAutomount => f.write_str("The shared folder is not mountable by directly call APIs, instead the automounter is responsible for mounting it."),
11809 _ => write!(f, "{:?}", *self),
11810 }
11811 }
11812}
11813
11814#[derive(Debug, Clone, PartialEq, Eq)]
11816#[non_exhaustive] pub struct ParentFolderAccessInfo {
11818 pub folder_name: String,
11820 pub shared_folder_id: crate::types::common::SharedFolderId,
11822 pub permissions: Vec<MemberPermission>,
11824 pub path: String,
11826}
11827
11828impl ParentFolderAccessInfo {
11829 pub fn new(
11830 folder_name: String,
11831 shared_folder_id: crate::types::common::SharedFolderId,
11832 permissions: Vec<MemberPermission>,
11833 path: String,
11834 ) -> Self {
11835 ParentFolderAccessInfo {
11836 folder_name,
11837 shared_folder_id,
11838 permissions,
11839 path,
11840 }
11841 }
11842}
11843
11844const PARENT_FOLDER_ACCESS_INFO_FIELDS: &[&str] = &["folder_name",
11845 "shared_folder_id",
11846 "permissions",
11847 "path"];
11848impl ParentFolderAccessInfo {
11849 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11850 map: V,
11851 ) -> Result<ParentFolderAccessInfo, V::Error> {
11852 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11853 }
11854
11855 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11856 mut map: V,
11857 optional: bool,
11858 ) -> Result<Option<ParentFolderAccessInfo>, V::Error> {
11859 let mut field_folder_name = None;
11860 let mut field_shared_folder_id = None;
11861 let mut field_permissions = None;
11862 let mut field_path = None;
11863 let mut nothing = true;
11864 while let Some(key) = map.next_key::<&str>()? {
11865 nothing = false;
11866 match key {
11867 "folder_name" => {
11868 if field_folder_name.is_some() {
11869 return Err(::serde::de::Error::duplicate_field("folder_name"));
11870 }
11871 field_folder_name = Some(map.next_value()?);
11872 }
11873 "shared_folder_id" => {
11874 if field_shared_folder_id.is_some() {
11875 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
11876 }
11877 field_shared_folder_id = Some(map.next_value()?);
11878 }
11879 "permissions" => {
11880 if field_permissions.is_some() {
11881 return Err(::serde::de::Error::duplicate_field("permissions"));
11882 }
11883 field_permissions = Some(map.next_value()?);
11884 }
11885 "path" => {
11886 if field_path.is_some() {
11887 return Err(::serde::de::Error::duplicate_field("path"));
11888 }
11889 field_path = Some(map.next_value()?);
11890 }
11891 _ => {
11892 map.next_value::<::serde_json::Value>()?;
11894 }
11895 }
11896 }
11897 if optional && nothing {
11898 return Ok(None);
11899 }
11900 let result = ParentFolderAccessInfo {
11901 folder_name: field_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("folder_name"))?,
11902 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
11903 permissions: field_permissions.ok_or_else(|| ::serde::de::Error::missing_field("permissions"))?,
11904 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
11905 };
11906 Ok(Some(result))
11907 }
11908
11909 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11910 &self,
11911 s: &mut S::SerializeStruct,
11912 ) -> Result<(), S::Error> {
11913 use serde::ser::SerializeStruct;
11914 s.serialize_field("folder_name", &self.folder_name)?;
11915 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
11916 s.serialize_field("permissions", &self.permissions)?;
11917 s.serialize_field("path", &self.path)?;
11918 Ok(())
11919 }
11920}
11921
11922impl<'de> ::serde::de::Deserialize<'de> for ParentFolderAccessInfo {
11923 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11924 use serde::de::{MapAccess, Visitor};
11926 struct StructVisitor;
11927 impl<'de> Visitor<'de> for StructVisitor {
11928 type Value = ParentFolderAccessInfo;
11929 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11930 f.write_str("a ParentFolderAccessInfo struct")
11931 }
11932 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11933 ParentFolderAccessInfo::internal_deserialize(map)
11934 }
11935 }
11936 deserializer.deserialize_struct("ParentFolderAccessInfo", PARENT_FOLDER_ACCESS_INFO_FIELDS, StructVisitor)
11937 }
11938}
11939
11940impl ::serde::ser::Serialize for ParentFolderAccessInfo {
11941 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11942 use serde::ser::SerializeStruct;
11944 let mut s = serializer.serialize_struct("ParentFolderAccessInfo", 4)?;
11945 self.internal_serialize::<S>(&mut s)?;
11946 s.end()
11947 }
11948}
11949
11950#[derive(Debug, Clone, PartialEq, Eq)]
11952#[non_exhaustive] pub struct PathLinkMetadata {
11954 pub url: String,
11956 pub visibility: Visibility,
11958 pub path: String,
11960 pub expires: Option<crate::types::common::DropboxTimestamp>,
11962}
11963
11964impl PathLinkMetadata {
11965 pub fn new(url: String, visibility: Visibility, path: String) -> Self {
11966 PathLinkMetadata {
11967 url,
11968 visibility,
11969 path,
11970 expires: None,
11971 }
11972 }
11973
11974 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
11975 self.expires = Some(value);
11976 self
11977 }
11978}
11979
11980const PATH_LINK_METADATA_FIELDS: &[&str] = &["url",
11981 "visibility",
11982 "path",
11983 "expires"];
11984impl PathLinkMetadata {
11985 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11986 map: V,
11987 ) -> Result<PathLinkMetadata, V::Error> {
11988 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11989 }
11990
11991 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11992 mut map: V,
11993 optional: bool,
11994 ) -> Result<Option<PathLinkMetadata>, V::Error> {
11995 let mut field_url = None;
11996 let mut field_visibility = None;
11997 let mut field_path = None;
11998 let mut field_expires = None;
11999 let mut nothing = true;
12000 while let Some(key) = map.next_key::<&str>()? {
12001 nothing = false;
12002 match key {
12003 "url" => {
12004 if field_url.is_some() {
12005 return Err(::serde::de::Error::duplicate_field("url"));
12006 }
12007 field_url = Some(map.next_value()?);
12008 }
12009 "visibility" => {
12010 if field_visibility.is_some() {
12011 return Err(::serde::de::Error::duplicate_field("visibility"));
12012 }
12013 field_visibility = Some(map.next_value()?);
12014 }
12015 "path" => {
12016 if field_path.is_some() {
12017 return Err(::serde::de::Error::duplicate_field("path"));
12018 }
12019 field_path = Some(map.next_value()?);
12020 }
12021 "expires" => {
12022 if field_expires.is_some() {
12023 return Err(::serde::de::Error::duplicate_field("expires"));
12024 }
12025 field_expires = Some(map.next_value()?);
12026 }
12027 _ => {
12028 map.next_value::<::serde_json::Value>()?;
12030 }
12031 }
12032 }
12033 if optional && nothing {
12034 return Ok(None);
12035 }
12036 let result = PathLinkMetadata {
12037 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
12038 visibility: field_visibility.ok_or_else(|| ::serde::de::Error::missing_field("visibility"))?,
12039 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
12040 expires: field_expires.and_then(Option::flatten),
12041 };
12042 Ok(Some(result))
12043 }
12044
12045 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
12046 &self,
12047 s: &mut S::SerializeStruct,
12048 ) -> Result<(), S::Error> {
12049 use serde::ser::SerializeStruct;
12050 s.serialize_field("url", &self.url)?;
12051 s.serialize_field("visibility", &self.visibility)?;
12052 s.serialize_field("path", &self.path)?;
12053 if let Some(val) = &self.expires {
12054 s.serialize_field("expires", val)?;
12055 }
12056 Ok(())
12057 }
12058}
12059
12060impl<'de> ::serde::de::Deserialize<'de> for PathLinkMetadata {
12061 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12062 use serde::de::{MapAccess, Visitor};
12064 struct StructVisitor;
12065 impl<'de> Visitor<'de> for StructVisitor {
12066 type Value = PathLinkMetadata;
12067 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12068 f.write_str("a PathLinkMetadata struct")
12069 }
12070 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12071 PathLinkMetadata::internal_deserialize(map)
12072 }
12073 }
12074 deserializer.deserialize_struct("PathLinkMetadata", PATH_LINK_METADATA_FIELDS, StructVisitor)
12075 }
12076}
12077
12078impl ::serde::ser::Serialize for PathLinkMetadata {
12079 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12080 use serde::ser::SerializeStruct;
12082 let mut s = serializer.serialize_struct("PathLinkMetadata", 4)?;
12083 self.internal_serialize::<S>(&mut s)?;
12084 s.end()
12085 }
12086}
12087
12088impl From<PathLinkMetadata> for LinkMetadata {
12090 fn from(subtype: PathLinkMetadata) -> Self {
12091 LinkMetadata::Path(subtype)
12092 }
12093}
12094#[derive(Debug, Clone, PartialEq, Eq)]
12096pub enum PendingUploadMode {
12097 File,
12099 Folder,
12101}
12102
12103impl<'de> ::serde::de::Deserialize<'de> for PendingUploadMode {
12104 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12105 use serde::de::{self, MapAccess, Visitor};
12107 struct EnumVisitor;
12108 impl<'de> Visitor<'de> for EnumVisitor {
12109 type Value = PendingUploadMode;
12110 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12111 f.write_str("a PendingUploadMode structure")
12112 }
12113 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12114 let tag: &str = match map.next_key()? {
12115 Some(".tag") => map.next_value()?,
12116 _ => return Err(de::Error::missing_field(".tag"))
12117 };
12118 let value = match tag {
12119 "file" => PendingUploadMode::File,
12120 "folder" => PendingUploadMode::Folder,
12121 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
12122 };
12123 crate::eat_json_fields(&mut map)?;
12124 Ok(value)
12125 }
12126 }
12127 const VARIANTS: &[&str] = &["file",
12128 "folder"];
12129 deserializer.deserialize_struct("PendingUploadMode", VARIANTS, EnumVisitor)
12130 }
12131}
12132
12133impl ::serde::ser::Serialize for PendingUploadMode {
12134 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12135 use serde::ser::SerializeStruct;
12137 match self {
12138 PendingUploadMode::File => {
12139 let mut s = serializer.serialize_struct("PendingUploadMode", 1)?;
12141 s.serialize_field(".tag", "file")?;
12142 s.end()
12143 }
12144 PendingUploadMode::Folder => {
12145 let mut s = serializer.serialize_struct("PendingUploadMode", 1)?;
12147 s.serialize_field(".tag", "folder")?;
12148 s.end()
12149 }
12150 }
12151 }
12152}
12153
12154#[derive(Debug, Clone, PartialEq, Eq)]
12156#[non_exhaustive] pub enum PermissionDeniedReason {
12158 UserNotSameTeamAsOwner,
12160 UserNotAllowedByOwner,
12162 TargetIsIndirectMember,
12164 TargetIsOwner,
12166 TargetIsSelf,
12168 TargetNotActive,
12170 FolderIsLimitedTeamFolder,
12172 OwnerNotOnTeam,
12174 PermissionDenied,
12176 RestrictedByTeam,
12178 UserAccountType,
12180 UserNotOnTeam,
12182 FolderIsInsideSharedFolder,
12184 RestrictedByParentFolder,
12186 InsufficientPlan(InsufficientPlan),
12187 Other,
12190}
12191
12192impl<'de> ::serde::de::Deserialize<'de> for PermissionDeniedReason {
12193 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12194 use serde::de::{self, MapAccess, Visitor};
12196 struct EnumVisitor;
12197 impl<'de> Visitor<'de> for EnumVisitor {
12198 type Value = PermissionDeniedReason;
12199 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12200 f.write_str("a PermissionDeniedReason structure")
12201 }
12202 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12203 let tag: &str = match map.next_key()? {
12204 Some(".tag") => map.next_value()?,
12205 _ => return Err(de::Error::missing_field(".tag"))
12206 };
12207 let value = match tag {
12208 "user_not_same_team_as_owner" => PermissionDeniedReason::UserNotSameTeamAsOwner,
12209 "user_not_allowed_by_owner" => PermissionDeniedReason::UserNotAllowedByOwner,
12210 "target_is_indirect_member" => PermissionDeniedReason::TargetIsIndirectMember,
12211 "target_is_owner" => PermissionDeniedReason::TargetIsOwner,
12212 "target_is_self" => PermissionDeniedReason::TargetIsSelf,
12213 "target_not_active" => PermissionDeniedReason::TargetNotActive,
12214 "folder_is_limited_team_folder" => PermissionDeniedReason::FolderIsLimitedTeamFolder,
12215 "owner_not_on_team" => PermissionDeniedReason::OwnerNotOnTeam,
12216 "permission_denied" => PermissionDeniedReason::PermissionDenied,
12217 "restricted_by_team" => PermissionDeniedReason::RestrictedByTeam,
12218 "user_account_type" => PermissionDeniedReason::UserAccountType,
12219 "user_not_on_team" => PermissionDeniedReason::UserNotOnTeam,
12220 "folder_is_inside_shared_folder" => PermissionDeniedReason::FolderIsInsideSharedFolder,
12221 "restricted_by_parent_folder" => PermissionDeniedReason::RestrictedByParentFolder,
12222 "insufficient_plan" => PermissionDeniedReason::InsufficientPlan(InsufficientPlan::internal_deserialize(&mut map)?),
12223 _ => PermissionDeniedReason::Other,
12224 };
12225 crate::eat_json_fields(&mut map)?;
12226 Ok(value)
12227 }
12228 }
12229 const VARIANTS: &[&str] = &["user_not_same_team_as_owner",
12230 "user_not_allowed_by_owner",
12231 "target_is_indirect_member",
12232 "target_is_owner",
12233 "target_is_self",
12234 "target_not_active",
12235 "folder_is_limited_team_folder",
12236 "owner_not_on_team",
12237 "permission_denied",
12238 "restricted_by_team",
12239 "user_account_type",
12240 "user_not_on_team",
12241 "folder_is_inside_shared_folder",
12242 "restricted_by_parent_folder",
12243 "insufficient_plan",
12244 "other"];
12245 deserializer.deserialize_struct("PermissionDeniedReason", VARIANTS, EnumVisitor)
12246 }
12247}
12248
12249impl ::serde::ser::Serialize for PermissionDeniedReason {
12250 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12251 use serde::ser::SerializeStruct;
12253 match self {
12254 PermissionDeniedReason::UserNotSameTeamAsOwner => {
12255 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12257 s.serialize_field(".tag", "user_not_same_team_as_owner")?;
12258 s.end()
12259 }
12260 PermissionDeniedReason::UserNotAllowedByOwner => {
12261 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12263 s.serialize_field(".tag", "user_not_allowed_by_owner")?;
12264 s.end()
12265 }
12266 PermissionDeniedReason::TargetIsIndirectMember => {
12267 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12269 s.serialize_field(".tag", "target_is_indirect_member")?;
12270 s.end()
12271 }
12272 PermissionDeniedReason::TargetIsOwner => {
12273 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12275 s.serialize_field(".tag", "target_is_owner")?;
12276 s.end()
12277 }
12278 PermissionDeniedReason::TargetIsSelf => {
12279 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12281 s.serialize_field(".tag", "target_is_self")?;
12282 s.end()
12283 }
12284 PermissionDeniedReason::TargetNotActive => {
12285 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12287 s.serialize_field(".tag", "target_not_active")?;
12288 s.end()
12289 }
12290 PermissionDeniedReason::FolderIsLimitedTeamFolder => {
12291 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12293 s.serialize_field(".tag", "folder_is_limited_team_folder")?;
12294 s.end()
12295 }
12296 PermissionDeniedReason::OwnerNotOnTeam => {
12297 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12299 s.serialize_field(".tag", "owner_not_on_team")?;
12300 s.end()
12301 }
12302 PermissionDeniedReason::PermissionDenied => {
12303 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12305 s.serialize_field(".tag", "permission_denied")?;
12306 s.end()
12307 }
12308 PermissionDeniedReason::RestrictedByTeam => {
12309 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12311 s.serialize_field(".tag", "restricted_by_team")?;
12312 s.end()
12313 }
12314 PermissionDeniedReason::UserAccountType => {
12315 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12317 s.serialize_field(".tag", "user_account_type")?;
12318 s.end()
12319 }
12320 PermissionDeniedReason::UserNotOnTeam => {
12321 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12323 s.serialize_field(".tag", "user_not_on_team")?;
12324 s.end()
12325 }
12326 PermissionDeniedReason::FolderIsInsideSharedFolder => {
12327 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12329 s.serialize_field(".tag", "folder_is_inside_shared_folder")?;
12330 s.end()
12331 }
12332 PermissionDeniedReason::RestrictedByParentFolder => {
12333 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12335 s.serialize_field(".tag", "restricted_by_parent_folder")?;
12336 s.end()
12337 }
12338 PermissionDeniedReason::InsufficientPlan(x) => {
12339 let mut s = serializer.serialize_struct("PermissionDeniedReason", 3)?;
12341 s.serialize_field(".tag", "insufficient_plan")?;
12342 x.internal_serialize::<S>(&mut s)?;
12343 s.end()
12344 }
12345 PermissionDeniedReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
12346 }
12347 }
12348}
12349
12350#[derive(Debug, Clone, PartialEq, Eq)]
12354#[non_exhaustive] pub struct RelinquishAccessArg {
12356 pub file_id: String,
12358}
12359
12360impl RelinquishAccessArg {
12361 pub fn new(file_id: String) -> Self {
12362 RelinquishAccessArg {
12363 file_id,
12364 }
12365 }
12366}
12367
12368const RELINQUISH_ACCESS_ARG_FIELDS: &[&str] = &["file_id"];
12369impl RelinquishAccessArg {
12370 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12371 map: V,
12372 ) -> Result<RelinquishAccessArg, V::Error> {
12373 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
12374 }
12375
12376 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
12377 mut map: V,
12378 optional: bool,
12379 ) -> Result<Option<RelinquishAccessArg>, V::Error> {
12380 let mut field_file_id = None;
12381 let mut nothing = true;
12382 while let Some(key) = map.next_key::<&str>()? {
12383 nothing = false;
12384 match key {
12385 "file_id" => {
12386 if field_file_id.is_some() {
12387 return Err(::serde::de::Error::duplicate_field("file_id"));
12388 }
12389 field_file_id = Some(map.next_value()?);
12390 }
12391 _ => {
12392 map.next_value::<::serde_json::Value>()?;
12394 }
12395 }
12396 }
12397 if optional && nothing {
12398 return Ok(None);
12399 }
12400 let result = RelinquishAccessArg {
12401 file_id: field_file_id.ok_or_else(|| ::serde::de::Error::missing_field("file_id"))?,
12402 };
12403 Ok(Some(result))
12404 }
12405
12406 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
12407 &self,
12408 s: &mut S::SerializeStruct,
12409 ) -> Result<(), S::Error> {
12410 use serde::ser::SerializeStruct;
12411 s.serialize_field("file_id", &self.file_id)?;
12412 Ok(())
12413 }
12414}
12415
12416impl<'de> ::serde::de::Deserialize<'de> for RelinquishAccessArg {
12417 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12418 use serde::de::{MapAccess, Visitor};
12420 struct StructVisitor;
12421 impl<'de> Visitor<'de> for StructVisitor {
12422 type Value = RelinquishAccessArg;
12423 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12424 f.write_str("a RelinquishAccessArg struct")
12425 }
12426 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12427 RelinquishAccessArg::internal_deserialize(map)
12428 }
12429 }
12430 deserializer.deserialize_struct("RelinquishAccessArg", RELINQUISH_ACCESS_ARG_FIELDS, StructVisitor)
12431 }
12432}
12433
12434impl ::serde::ser::Serialize for RelinquishAccessArg {
12435 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12436 use serde::ser::SerializeStruct;
12438 let mut s = serializer.serialize_struct("RelinquishAccessArg", 1)?;
12439 self.internal_serialize::<S>(&mut s)?;
12440 s.end()
12441 }
12442}
12443
12444#[derive(Debug, Clone, PartialEq, Eq)]
12446#[non_exhaustive] pub enum RelinquishAccessError {
12448 InvalidFileId,
12450 EmailUnverified,
12452 Owner,
12454 NoExplicitAccess,
12456 GroupAccess,
12458 TeamFolder,
12460 NoPermission,
12462 Other,
12465}
12466
12467impl<'de> ::serde::de::Deserialize<'de> for RelinquishAccessError {
12468 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12469 use serde::de::{self, MapAccess, Visitor};
12471 struct EnumVisitor;
12472 impl<'de> Visitor<'de> for EnumVisitor {
12473 type Value = RelinquishAccessError;
12474 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12475 f.write_str("a RelinquishAccessError structure")
12476 }
12477 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12478 let tag: &str = match map.next_key()? {
12479 Some(".tag") => map.next_value()?,
12480 _ => return Err(de::Error::missing_field(".tag"))
12481 };
12482 let value = match tag {
12483 "invalid_file_id" => RelinquishAccessError::InvalidFileId,
12484 "email_unverified" => RelinquishAccessError::EmailUnverified,
12485 "owner" => RelinquishAccessError::Owner,
12486 "no_explicit_access" => RelinquishAccessError::NoExplicitAccess,
12487 "group_access" => RelinquishAccessError::GroupAccess,
12488 "team_folder" => RelinquishAccessError::TeamFolder,
12489 "no_permission" => RelinquishAccessError::NoPermission,
12490 _ => RelinquishAccessError::Other,
12491 };
12492 crate::eat_json_fields(&mut map)?;
12493 Ok(value)
12494 }
12495 }
12496 const VARIANTS: &[&str] = &["invalid_file_id",
12497 "email_unverified",
12498 "owner",
12499 "no_explicit_access",
12500 "group_access",
12501 "team_folder",
12502 "no_permission",
12503 "other"];
12504 deserializer.deserialize_struct("RelinquishAccessError", VARIANTS, EnumVisitor)
12505 }
12506}
12507
12508impl ::serde::ser::Serialize for RelinquishAccessError {
12509 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12510 use serde::ser::SerializeStruct;
12512 match self {
12513 RelinquishAccessError::InvalidFileId => {
12514 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12516 s.serialize_field(".tag", "invalid_file_id")?;
12517 s.end()
12518 }
12519 RelinquishAccessError::EmailUnverified => {
12520 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12522 s.serialize_field(".tag", "email_unverified")?;
12523 s.end()
12524 }
12525 RelinquishAccessError::Owner => {
12526 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12528 s.serialize_field(".tag", "owner")?;
12529 s.end()
12530 }
12531 RelinquishAccessError::NoExplicitAccess => {
12532 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12534 s.serialize_field(".tag", "no_explicit_access")?;
12535 s.end()
12536 }
12537 RelinquishAccessError::GroupAccess => {
12538 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12540 s.serialize_field(".tag", "group_access")?;
12541 s.end()
12542 }
12543 RelinquishAccessError::TeamFolder => {
12544 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12546 s.serialize_field(".tag", "team_folder")?;
12547 s.end()
12548 }
12549 RelinquishAccessError::NoPermission => {
12550 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12552 s.serialize_field(".tag", "no_permission")?;
12553 s.end()
12554 }
12555 RelinquishAccessError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
12556 }
12557 }
12558}
12559
12560impl ::std::error::Error for RelinquishAccessError {
12561}
12562
12563impl ::std::fmt::Display for RelinquishAccessError {
12564 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12565 match self {
12566 RelinquishAccessError::InvalidFileId => f.write_str("File or folder not found or has been deleted."),
12567 RelinquishAccessError::EmailUnverified => f.write_str("Caller's email address is not verified."),
12568 RelinquishAccessError::Owner => f.write_str("User is the owner of the file/folder."),
12569 RelinquishAccessError::NoExplicitAccess => f.write_str("User only has inherited access from a parent folder."),
12570 RelinquishAccessError::GroupAccess => f.write_str("User has access only via group membership."),
12571 RelinquishAccessError::TeamFolder => f.write_str("Team folder restrictions apply."),
12572 RelinquishAccessError::NoPermission => f.write_str("Caller does not have permission to perform this action. Generic fallback."),
12573 _ => write!(f, "{:?}", *self),
12574 }
12575 }
12576}
12577
12578#[derive(Debug, Clone, PartialEq, Eq, Default)]
12580#[non_exhaustive] pub struct RelinquishAccessResult {
12582}
12583
12584const RELINQUISH_ACCESS_RESULT_FIELDS: &[&str] = &[];
12585impl RelinquishAccessResult {
12586 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12588 mut map: V,
12589 ) -> Result<RelinquishAccessResult, V::Error> {
12590 crate::eat_json_fields(&mut map)?;
12592 Ok(RelinquishAccessResult {})
12593 }
12594}
12595
12596impl<'de> ::serde::de::Deserialize<'de> for RelinquishAccessResult {
12597 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12598 use serde::de::{MapAccess, Visitor};
12600 struct StructVisitor;
12601 impl<'de> Visitor<'de> for StructVisitor {
12602 type Value = RelinquishAccessResult;
12603 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12604 f.write_str("a RelinquishAccessResult struct")
12605 }
12606 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12607 RelinquishAccessResult::internal_deserialize(map)
12608 }
12609 }
12610 deserializer.deserialize_struct("RelinquishAccessResult", RELINQUISH_ACCESS_RESULT_FIELDS, StructVisitor)
12611 }
12612}
12613
12614impl ::serde::ser::Serialize for RelinquishAccessResult {
12615 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12616 use serde::ser::SerializeStruct;
12618 serializer.serialize_struct("RelinquishAccessResult", 0)?.end()
12619 }
12620}
12621
12622#[derive(Debug, Clone, PartialEq, Eq)]
12623#[non_exhaustive] pub struct RelinquishFileMembershipArg {
12625 pub file: PathOrId,
12627}
12628
12629impl RelinquishFileMembershipArg {
12630 pub fn new(file: PathOrId) -> Self {
12631 RelinquishFileMembershipArg {
12632 file,
12633 }
12634 }
12635}
12636
12637const RELINQUISH_FILE_MEMBERSHIP_ARG_FIELDS: &[&str] = &["file"];
12638impl RelinquishFileMembershipArg {
12639 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12640 map: V,
12641 ) -> Result<RelinquishFileMembershipArg, V::Error> {
12642 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
12643 }
12644
12645 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
12646 mut map: V,
12647 optional: bool,
12648 ) -> Result<Option<RelinquishFileMembershipArg>, V::Error> {
12649 let mut field_file = None;
12650 let mut nothing = true;
12651 while let Some(key) = map.next_key::<&str>()? {
12652 nothing = false;
12653 match key {
12654 "file" => {
12655 if field_file.is_some() {
12656 return Err(::serde::de::Error::duplicate_field("file"));
12657 }
12658 field_file = Some(map.next_value()?);
12659 }
12660 _ => {
12661 map.next_value::<::serde_json::Value>()?;
12663 }
12664 }
12665 }
12666 if optional && nothing {
12667 return Ok(None);
12668 }
12669 let result = RelinquishFileMembershipArg {
12670 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
12671 };
12672 Ok(Some(result))
12673 }
12674
12675 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
12676 &self,
12677 s: &mut S::SerializeStruct,
12678 ) -> Result<(), S::Error> {
12679 use serde::ser::SerializeStruct;
12680 s.serialize_field("file", &self.file)?;
12681 Ok(())
12682 }
12683}
12684
12685impl<'de> ::serde::de::Deserialize<'de> for RelinquishFileMembershipArg {
12686 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12687 use serde::de::{MapAccess, Visitor};
12689 struct StructVisitor;
12690 impl<'de> Visitor<'de> for StructVisitor {
12691 type Value = RelinquishFileMembershipArg;
12692 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12693 f.write_str("a RelinquishFileMembershipArg struct")
12694 }
12695 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12696 RelinquishFileMembershipArg::internal_deserialize(map)
12697 }
12698 }
12699 deserializer.deserialize_struct("RelinquishFileMembershipArg", RELINQUISH_FILE_MEMBERSHIP_ARG_FIELDS, StructVisitor)
12700 }
12701}
12702
12703impl ::serde::ser::Serialize for RelinquishFileMembershipArg {
12704 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12705 use serde::ser::SerializeStruct;
12707 let mut s = serializer.serialize_struct("RelinquishFileMembershipArg", 1)?;
12708 self.internal_serialize::<S>(&mut s)?;
12709 s.end()
12710 }
12711}
12712
12713#[derive(Debug, Clone, PartialEq, Eq)]
12714#[non_exhaustive] pub enum RelinquishFileMembershipError {
12716 AccessError(SharingFileAccessError),
12717 GroupAccess,
12720 NoPermission,
12722 Other,
12725}
12726
12727impl<'de> ::serde::de::Deserialize<'de> for RelinquishFileMembershipError {
12728 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12729 use serde::de::{self, MapAccess, Visitor};
12731 struct EnumVisitor;
12732 impl<'de> Visitor<'de> for EnumVisitor {
12733 type Value = RelinquishFileMembershipError;
12734 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12735 f.write_str("a RelinquishFileMembershipError structure")
12736 }
12737 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12738 let tag: &str = match map.next_key()? {
12739 Some(".tag") => map.next_value()?,
12740 _ => return Err(de::Error::missing_field(".tag"))
12741 };
12742 let value = match tag {
12743 "access_error" => {
12744 match map.next_key()? {
12745 Some("access_error") => RelinquishFileMembershipError::AccessError(map.next_value()?),
12746 None => return Err(de::Error::missing_field("access_error")),
12747 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
12748 }
12749 }
12750 "group_access" => RelinquishFileMembershipError::GroupAccess,
12751 "no_permission" => RelinquishFileMembershipError::NoPermission,
12752 _ => RelinquishFileMembershipError::Other,
12753 };
12754 crate::eat_json_fields(&mut map)?;
12755 Ok(value)
12756 }
12757 }
12758 const VARIANTS: &[&str] = &["access_error",
12759 "group_access",
12760 "no_permission",
12761 "other"];
12762 deserializer.deserialize_struct("RelinquishFileMembershipError", VARIANTS, EnumVisitor)
12763 }
12764}
12765
12766impl ::serde::ser::Serialize for RelinquishFileMembershipError {
12767 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12768 use serde::ser::SerializeStruct;
12770 match self {
12771 RelinquishFileMembershipError::AccessError(x) => {
12772 let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 2)?;
12774 s.serialize_field(".tag", "access_error")?;
12775 s.serialize_field("access_error", x)?;
12776 s.end()
12777 }
12778 RelinquishFileMembershipError::GroupAccess => {
12779 let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 1)?;
12781 s.serialize_field(".tag", "group_access")?;
12782 s.end()
12783 }
12784 RelinquishFileMembershipError::NoPermission => {
12785 let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 1)?;
12787 s.serialize_field(".tag", "no_permission")?;
12788 s.end()
12789 }
12790 RelinquishFileMembershipError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
12791 }
12792 }
12793}
12794
12795impl ::std::error::Error for RelinquishFileMembershipError {
12796 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
12797 match self {
12798 RelinquishFileMembershipError::AccessError(inner) => Some(inner),
12799 _ => None,
12800 }
12801 }
12802}
12803
12804impl ::std::fmt::Display for RelinquishFileMembershipError {
12805 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12806 match self {
12807 RelinquishFileMembershipError::AccessError(inner) => write!(f, "RelinquishFileMembershipError: {}", inner),
12808 RelinquishFileMembershipError::GroupAccess => f.write_str("The current user has access to the shared file via a group. You can't relinquish membership to a file shared via groups."),
12809 RelinquishFileMembershipError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
12810 _ => write!(f, "{:?}", *self),
12811 }
12812 }
12813}
12814
12815#[derive(Debug, Clone, PartialEq, Eq)]
12816#[non_exhaustive] pub struct RelinquishFolderMembershipArg {
12818 pub shared_folder_id: crate::types::common::SharedFolderId,
12820 pub leave_a_copy: bool,
12823}
12824
12825impl RelinquishFolderMembershipArg {
12826 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
12827 RelinquishFolderMembershipArg {
12828 shared_folder_id,
12829 leave_a_copy: false,
12830 }
12831 }
12832
12833 pub fn with_leave_a_copy(mut self, value: bool) -> Self {
12834 self.leave_a_copy = value;
12835 self
12836 }
12837}
12838
12839const RELINQUISH_FOLDER_MEMBERSHIP_ARG_FIELDS: &[&str] = &["shared_folder_id",
12840 "leave_a_copy"];
12841impl RelinquishFolderMembershipArg {
12842 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12843 map: V,
12844 ) -> Result<RelinquishFolderMembershipArg, V::Error> {
12845 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
12846 }
12847
12848 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
12849 mut map: V,
12850 optional: bool,
12851 ) -> Result<Option<RelinquishFolderMembershipArg>, V::Error> {
12852 let mut field_shared_folder_id = None;
12853 let mut field_leave_a_copy = None;
12854 let mut nothing = true;
12855 while let Some(key) = map.next_key::<&str>()? {
12856 nothing = false;
12857 match key {
12858 "shared_folder_id" => {
12859 if field_shared_folder_id.is_some() {
12860 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
12861 }
12862 field_shared_folder_id = Some(map.next_value()?);
12863 }
12864 "leave_a_copy" => {
12865 if field_leave_a_copy.is_some() {
12866 return Err(::serde::de::Error::duplicate_field("leave_a_copy"));
12867 }
12868 field_leave_a_copy = Some(map.next_value()?);
12869 }
12870 _ => {
12871 map.next_value::<::serde_json::Value>()?;
12873 }
12874 }
12875 }
12876 if optional && nothing {
12877 return Ok(None);
12878 }
12879 let result = RelinquishFolderMembershipArg {
12880 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
12881 leave_a_copy: field_leave_a_copy.unwrap_or(false),
12882 };
12883 Ok(Some(result))
12884 }
12885
12886 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
12887 &self,
12888 s: &mut S::SerializeStruct,
12889 ) -> Result<(), S::Error> {
12890 use serde::ser::SerializeStruct;
12891 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
12892 if self.leave_a_copy {
12893 s.serialize_field("leave_a_copy", &self.leave_a_copy)?;
12894 }
12895 Ok(())
12896 }
12897}
12898
12899impl<'de> ::serde::de::Deserialize<'de> for RelinquishFolderMembershipArg {
12900 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12901 use serde::de::{MapAccess, Visitor};
12903 struct StructVisitor;
12904 impl<'de> Visitor<'de> for StructVisitor {
12905 type Value = RelinquishFolderMembershipArg;
12906 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12907 f.write_str("a RelinquishFolderMembershipArg struct")
12908 }
12909 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12910 RelinquishFolderMembershipArg::internal_deserialize(map)
12911 }
12912 }
12913 deserializer.deserialize_struct("RelinquishFolderMembershipArg", RELINQUISH_FOLDER_MEMBERSHIP_ARG_FIELDS, StructVisitor)
12914 }
12915}
12916
12917impl ::serde::ser::Serialize for RelinquishFolderMembershipArg {
12918 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12919 use serde::ser::SerializeStruct;
12921 let mut s = serializer.serialize_struct("RelinquishFolderMembershipArg", 2)?;
12922 self.internal_serialize::<S>(&mut s)?;
12923 s.end()
12924 }
12925}
12926
12927#[derive(Debug, Clone, PartialEq, Eq)]
12928#[non_exhaustive] pub enum RelinquishFolderMembershipError {
12930 AccessError(SharedFolderAccessError),
12931 FolderOwner,
12934 Mounted,
12937 GroupAccess,
12940 TeamFolder,
12942 NoPermission,
12944 NoExplicitAccess,
12947 Other,
12950}
12951
12952impl<'de> ::serde::de::Deserialize<'de> for RelinquishFolderMembershipError {
12953 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12954 use serde::de::{self, MapAccess, Visitor};
12956 struct EnumVisitor;
12957 impl<'de> Visitor<'de> for EnumVisitor {
12958 type Value = RelinquishFolderMembershipError;
12959 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12960 f.write_str("a RelinquishFolderMembershipError structure")
12961 }
12962 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12963 let tag: &str = match map.next_key()? {
12964 Some(".tag") => map.next_value()?,
12965 _ => return Err(de::Error::missing_field(".tag"))
12966 };
12967 let value = match tag {
12968 "access_error" => {
12969 match map.next_key()? {
12970 Some("access_error") => RelinquishFolderMembershipError::AccessError(map.next_value()?),
12971 None => return Err(de::Error::missing_field("access_error")),
12972 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
12973 }
12974 }
12975 "folder_owner" => RelinquishFolderMembershipError::FolderOwner,
12976 "mounted" => RelinquishFolderMembershipError::Mounted,
12977 "group_access" => RelinquishFolderMembershipError::GroupAccess,
12978 "team_folder" => RelinquishFolderMembershipError::TeamFolder,
12979 "no_permission" => RelinquishFolderMembershipError::NoPermission,
12980 "no_explicit_access" => RelinquishFolderMembershipError::NoExplicitAccess,
12981 _ => RelinquishFolderMembershipError::Other,
12982 };
12983 crate::eat_json_fields(&mut map)?;
12984 Ok(value)
12985 }
12986 }
12987 const VARIANTS: &[&str] = &["access_error",
12988 "folder_owner",
12989 "mounted",
12990 "group_access",
12991 "team_folder",
12992 "no_permission",
12993 "no_explicit_access",
12994 "other"];
12995 deserializer.deserialize_struct("RelinquishFolderMembershipError", VARIANTS, EnumVisitor)
12996 }
12997}
12998
12999impl ::serde::ser::Serialize for RelinquishFolderMembershipError {
13000 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13001 use serde::ser::SerializeStruct;
13003 match self {
13004 RelinquishFolderMembershipError::AccessError(x) => {
13005 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 2)?;
13007 s.serialize_field(".tag", "access_error")?;
13008 s.serialize_field("access_error", x)?;
13009 s.end()
13010 }
13011 RelinquishFolderMembershipError::FolderOwner => {
13012 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13014 s.serialize_field(".tag", "folder_owner")?;
13015 s.end()
13016 }
13017 RelinquishFolderMembershipError::Mounted => {
13018 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13020 s.serialize_field(".tag", "mounted")?;
13021 s.end()
13022 }
13023 RelinquishFolderMembershipError::GroupAccess => {
13024 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13026 s.serialize_field(".tag", "group_access")?;
13027 s.end()
13028 }
13029 RelinquishFolderMembershipError::TeamFolder => {
13030 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13032 s.serialize_field(".tag", "team_folder")?;
13033 s.end()
13034 }
13035 RelinquishFolderMembershipError::NoPermission => {
13036 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13038 s.serialize_field(".tag", "no_permission")?;
13039 s.end()
13040 }
13041 RelinquishFolderMembershipError::NoExplicitAccess => {
13042 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13044 s.serialize_field(".tag", "no_explicit_access")?;
13045 s.end()
13046 }
13047 RelinquishFolderMembershipError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13048 }
13049 }
13050}
13051
13052impl ::std::error::Error for RelinquishFolderMembershipError {
13053 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
13054 match self {
13055 RelinquishFolderMembershipError::AccessError(inner) => Some(inner),
13056 _ => None,
13057 }
13058 }
13059}
13060
13061impl ::std::fmt::Display for RelinquishFolderMembershipError {
13062 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13063 match self {
13064 RelinquishFolderMembershipError::AccessError(inner) => write!(f, "RelinquishFolderMembershipError: {}", inner),
13065 RelinquishFolderMembershipError::FolderOwner => f.write_str("The current user is the owner of the shared folder. Owners cannot relinquish membership to their own folders. Try unsharing or transferring ownership first."),
13066 RelinquishFolderMembershipError::Mounted => f.write_str("The shared folder is currently mounted. Unmount the shared folder before relinquishing membership."),
13067 RelinquishFolderMembershipError::GroupAccess => f.write_str("The current user has access to the shared folder via a group. You can't relinquish membership to folders shared via groups."),
13068 RelinquishFolderMembershipError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
13069 RelinquishFolderMembershipError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
13070 RelinquishFolderMembershipError::NoExplicitAccess => f.write_str("The current user only has inherited access to the shared folder. You can't relinquish inherited membership to folders."),
13071 _ => write!(f, "{:?}", *self),
13072 }
13073 }
13074}
13075
13076#[derive(Debug, Clone, PartialEq, Eq)]
13078#[non_exhaustive] pub struct RemoveFileMemberArg {
13080 pub file: PathOrId,
13082 pub member: MemberSelector,
13086}
13087
13088impl RemoveFileMemberArg {
13089 pub fn new(file: PathOrId, member: MemberSelector) -> Self {
13090 RemoveFileMemberArg {
13091 file,
13092 member,
13093 }
13094 }
13095}
13096
13097const REMOVE_FILE_MEMBER_ARG_FIELDS: &[&str] = &["file",
13098 "member"];
13099impl RemoveFileMemberArg {
13100 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
13101 map: V,
13102 ) -> Result<RemoveFileMemberArg, V::Error> {
13103 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
13104 }
13105
13106 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
13107 mut map: V,
13108 optional: bool,
13109 ) -> Result<Option<RemoveFileMemberArg>, V::Error> {
13110 let mut field_file = None;
13111 let mut field_member = None;
13112 let mut nothing = true;
13113 while let Some(key) = map.next_key::<&str>()? {
13114 nothing = false;
13115 match key {
13116 "file" => {
13117 if field_file.is_some() {
13118 return Err(::serde::de::Error::duplicate_field("file"));
13119 }
13120 field_file = Some(map.next_value()?);
13121 }
13122 "member" => {
13123 if field_member.is_some() {
13124 return Err(::serde::de::Error::duplicate_field("member"));
13125 }
13126 field_member = Some(map.next_value()?);
13127 }
13128 _ => {
13129 map.next_value::<::serde_json::Value>()?;
13131 }
13132 }
13133 }
13134 if optional && nothing {
13135 return Ok(None);
13136 }
13137 let result = RemoveFileMemberArg {
13138 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
13139 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
13140 };
13141 Ok(Some(result))
13142 }
13143
13144 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
13145 &self,
13146 s: &mut S::SerializeStruct,
13147 ) -> Result<(), S::Error> {
13148 use serde::ser::SerializeStruct;
13149 s.serialize_field("file", &self.file)?;
13150 s.serialize_field("member", &self.member)?;
13151 Ok(())
13152 }
13153}
13154
13155impl<'de> ::serde::de::Deserialize<'de> for RemoveFileMemberArg {
13156 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13157 use serde::de::{MapAccess, Visitor};
13159 struct StructVisitor;
13160 impl<'de> Visitor<'de> for StructVisitor {
13161 type Value = RemoveFileMemberArg;
13162 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13163 f.write_str("a RemoveFileMemberArg struct")
13164 }
13165 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
13166 RemoveFileMemberArg::internal_deserialize(map)
13167 }
13168 }
13169 deserializer.deserialize_struct("RemoveFileMemberArg", REMOVE_FILE_MEMBER_ARG_FIELDS, StructVisitor)
13170 }
13171}
13172
13173impl ::serde::ser::Serialize for RemoveFileMemberArg {
13174 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13175 use serde::ser::SerializeStruct;
13177 let mut s = serializer.serialize_struct("RemoveFileMemberArg", 2)?;
13178 self.internal_serialize::<S>(&mut s)?;
13179 s.end()
13180 }
13181}
13182
13183#[derive(Debug, Clone, PartialEq, Eq)]
13185#[non_exhaustive] pub enum RemoveFileMemberError {
13187 UserError(SharingUserError),
13188 AccessError(SharingFileAccessError),
13189 NoExplicitAccess(MemberAccessLevelResult),
13192 Other,
13195}
13196
13197impl<'de> ::serde::de::Deserialize<'de> for RemoveFileMemberError {
13198 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13199 use serde::de::{self, MapAccess, Visitor};
13201 struct EnumVisitor;
13202 impl<'de> Visitor<'de> for EnumVisitor {
13203 type Value = RemoveFileMemberError;
13204 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13205 f.write_str("a RemoveFileMemberError structure")
13206 }
13207 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13208 let tag: &str = match map.next_key()? {
13209 Some(".tag") => map.next_value()?,
13210 _ => return Err(de::Error::missing_field(".tag"))
13211 };
13212 let value = match tag {
13213 "user_error" => {
13214 match map.next_key()? {
13215 Some("user_error") => RemoveFileMemberError::UserError(map.next_value()?),
13216 None => return Err(de::Error::missing_field("user_error")),
13217 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13218 }
13219 }
13220 "access_error" => {
13221 match map.next_key()? {
13222 Some("access_error") => RemoveFileMemberError::AccessError(map.next_value()?),
13223 None => return Err(de::Error::missing_field("access_error")),
13224 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13225 }
13226 }
13227 "no_explicit_access" => RemoveFileMemberError::NoExplicitAccess(MemberAccessLevelResult::internal_deserialize(&mut map)?),
13228 _ => RemoveFileMemberError::Other,
13229 };
13230 crate::eat_json_fields(&mut map)?;
13231 Ok(value)
13232 }
13233 }
13234 const VARIANTS: &[&str] = &["user_error",
13235 "access_error",
13236 "no_explicit_access",
13237 "other"];
13238 deserializer.deserialize_struct("RemoveFileMemberError", VARIANTS, EnumVisitor)
13239 }
13240}
13241
13242impl ::serde::ser::Serialize for RemoveFileMemberError {
13243 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13244 use serde::ser::SerializeStruct;
13246 match self {
13247 RemoveFileMemberError::UserError(x) => {
13248 let mut s = serializer.serialize_struct("RemoveFileMemberError", 2)?;
13250 s.serialize_field(".tag", "user_error")?;
13251 s.serialize_field("user_error", x)?;
13252 s.end()
13253 }
13254 RemoveFileMemberError::AccessError(x) => {
13255 let mut s = serializer.serialize_struct("RemoveFileMemberError", 2)?;
13257 s.serialize_field(".tag", "access_error")?;
13258 s.serialize_field("access_error", x)?;
13259 s.end()
13260 }
13261 RemoveFileMemberError::NoExplicitAccess(x) => {
13262 let mut s = serializer.serialize_struct("RemoveFileMemberError", 4)?;
13264 s.serialize_field(".tag", "no_explicit_access")?;
13265 x.internal_serialize::<S>(&mut s)?;
13266 s.end()
13267 }
13268 RemoveFileMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13269 }
13270 }
13271}
13272
13273impl ::std::error::Error for RemoveFileMemberError {
13274 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
13275 match self {
13276 RemoveFileMemberError::UserError(inner) => Some(inner),
13277 RemoveFileMemberError::AccessError(inner) => Some(inner),
13278 _ => None,
13279 }
13280 }
13281}
13282
13283impl ::std::fmt::Display for RemoveFileMemberError {
13284 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13285 match self {
13286 RemoveFileMemberError::UserError(inner) => write!(f, "RemoveFileMemberError: {}", inner),
13287 RemoveFileMemberError::AccessError(inner) => write!(f, "RemoveFileMemberError: {}", inner),
13288 RemoveFileMemberError::NoExplicitAccess(inner) => write!(f, "This member does not have explicit access to the file and therefore cannot be removed. The return value is the access that a user might have to the file from a parent folder: {:?}", inner),
13289 _ => write!(f, "{:?}", *self),
13290 }
13291 }
13292}
13293
13294#[derive(Debug, Clone, PartialEq, Eq)]
13295#[non_exhaustive] pub struct RemoveFolderMemberArg {
13297 pub shared_folder_id: crate::types::common::SharedFolderId,
13299 pub member: MemberSelector,
13301 pub leave_a_copy: bool,
13305}
13306
13307impl RemoveFolderMemberArg {
13308 pub fn new(
13309 shared_folder_id: crate::types::common::SharedFolderId,
13310 member: MemberSelector,
13311 leave_a_copy: bool,
13312 ) -> Self {
13313 RemoveFolderMemberArg {
13314 shared_folder_id,
13315 member,
13316 leave_a_copy,
13317 }
13318 }
13319}
13320
13321const REMOVE_FOLDER_MEMBER_ARG_FIELDS: &[&str] = &["shared_folder_id",
13322 "member",
13323 "leave_a_copy"];
13324impl RemoveFolderMemberArg {
13325 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
13326 map: V,
13327 ) -> Result<RemoveFolderMemberArg, V::Error> {
13328 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
13329 }
13330
13331 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
13332 mut map: V,
13333 optional: bool,
13334 ) -> Result<Option<RemoveFolderMemberArg>, V::Error> {
13335 let mut field_shared_folder_id = None;
13336 let mut field_member = None;
13337 let mut field_leave_a_copy = None;
13338 let mut nothing = true;
13339 while let Some(key) = map.next_key::<&str>()? {
13340 nothing = false;
13341 match key {
13342 "shared_folder_id" => {
13343 if field_shared_folder_id.is_some() {
13344 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
13345 }
13346 field_shared_folder_id = Some(map.next_value()?);
13347 }
13348 "member" => {
13349 if field_member.is_some() {
13350 return Err(::serde::de::Error::duplicate_field("member"));
13351 }
13352 field_member = Some(map.next_value()?);
13353 }
13354 "leave_a_copy" => {
13355 if field_leave_a_copy.is_some() {
13356 return Err(::serde::de::Error::duplicate_field("leave_a_copy"));
13357 }
13358 field_leave_a_copy = Some(map.next_value()?);
13359 }
13360 _ => {
13361 map.next_value::<::serde_json::Value>()?;
13363 }
13364 }
13365 }
13366 if optional && nothing {
13367 return Ok(None);
13368 }
13369 let result = RemoveFolderMemberArg {
13370 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
13371 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
13372 leave_a_copy: field_leave_a_copy.ok_or_else(|| ::serde::de::Error::missing_field("leave_a_copy"))?,
13373 };
13374 Ok(Some(result))
13375 }
13376
13377 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
13378 &self,
13379 s: &mut S::SerializeStruct,
13380 ) -> Result<(), S::Error> {
13381 use serde::ser::SerializeStruct;
13382 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
13383 s.serialize_field("member", &self.member)?;
13384 s.serialize_field("leave_a_copy", &self.leave_a_copy)?;
13385 Ok(())
13386 }
13387}
13388
13389impl<'de> ::serde::de::Deserialize<'de> for RemoveFolderMemberArg {
13390 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13391 use serde::de::{MapAccess, Visitor};
13393 struct StructVisitor;
13394 impl<'de> Visitor<'de> for StructVisitor {
13395 type Value = RemoveFolderMemberArg;
13396 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13397 f.write_str("a RemoveFolderMemberArg struct")
13398 }
13399 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
13400 RemoveFolderMemberArg::internal_deserialize(map)
13401 }
13402 }
13403 deserializer.deserialize_struct("RemoveFolderMemberArg", REMOVE_FOLDER_MEMBER_ARG_FIELDS, StructVisitor)
13404 }
13405}
13406
13407impl ::serde::ser::Serialize for RemoveFolderMemberArg {
13408 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13409 use serde::ser::SerializeStruct;
13411 let mut s = serializer.serialize_struct("RemoveFolderMemberArg", 3)?;
13412 self.internal_serialize::<S>(&mut s)?;
13413 s.end()
13414 }
13415}
13416
13417#[derive(Debug, Clone, PartialEq, Eq)]
13418#[non_exhaustive] pub enum RemoveFolderMemberError {
13420 AccessError(SharedFolderAccessError),
13421 MemberError(SharedFolderMemberError),
13422 FolderOwner,
13425 GroupAccess,
13427 TeamFolder,
13429 NoPermission,
13431 TooManyFiles,
13434 Other,
13437}
13438
13439impl<'de> ::serde::de::Deserialize<'de> for RemoveFolderMemberError {
13440 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13441 use serde::de::{self, MapAccess, Visitor};
13443 struct EnumVisitor;
13444 impl<'de> Visitor<'de> for EnumVisitor {
13445 type Value = RemoveFolderMemberError;
13446 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13447 f.write_str("a RemoveFolderMemberError structure")
13448 }
13449 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13450 let tag: &str = match map.next_key()? {
13451 Some(".tag") => map.next_value()?,
13452 _ => return Err(de::Error::missing_field(".tag"))
13453 };
13454 let value = match tag {
13455 "access_error" => {
13456 match map.next_key()? {
13457 Some("access_error") => RemoveFolderMemberError::AccessError(map.next_value()?),
13458 None => return Err(de::Error::missing_field("access_error")),
13459 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13460 }
13461 }
13462 "member_error" => {
13463 match map.next_key()? {
13464 Some("member_error") => RemoveFolderMemberError::MemberError(map.next_value()?),
13465 None => return Err(de::Error::missing_field("member_error")),
13466 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13467 }
13468 }
13469 "folder_owner" => RemoveFolderMemberError::FolderOwner,
13470 "group_access" => RemoveFolderMemberError::GroupAccess,
13471 "team_folder" => RemoveFolderMemberError::TeamFolder,
13472 "no_permission" => RemoveFolderMemberError::NoPermission,
13473 "too_many_files" => RemoveFolderMemberError::TooManyFiles,
13474 _ => RemoveFolderMemberError::Other,
13475 };
13476 crate::eat_json_fields(&mut map)?;
13477 Ok(value)
13478 }
13479 }
13480 const VARIANTS: &[&str] = &["access_error",
13481 "member_error",
13482 "folder_owner",
13483 "group_access",
13484 "team_folder",
13485 "no_permission",
13486 "too_many_files",
13487 "other"];
13488 deserializer.deserialize_struct("RemoveFolderMemberError", VARIANTS, EnumVisitor)
13489 }
13490}
13491
13492impl ::serde::ser::Serialize for RemoveFolderMemberError {
13493 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13494 use serde::ser::SerializeStruct;
13496 match self {
13497 RemoveFolderMemberError::AccessError(x) => {
13498 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 2)?;
13500 s.serialize_field(".tag", "access_error")?;
13501 s.serialize_field("access_error", x)?;
13502 s.end()
13503 }
13504 RemoveFolderMemberError::MemberError(x) => {
13505 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 2)?;
13507 s.serialize_field(".tag", "member_error")?;
13508 s.serialize_field("member_error", x)?;
13509 s.end()
13510 }
13511 RemoveFolderMemberError::FolderOwner => {
13512 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
13514 s.serialize_field(".tag", "folder_owner")?;
13515 s.end()
13516 }
13517 RemoveFolderMemberError::GroupAccess => {
13518 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
13520 s.serialize_field(".tag", "group_access")?;
13521 s.end()
13522 }
13523 RemoveFolderMemberError::TeamFolder => {
13524 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
13526 s.serialize_field(".tag", "team_folder")?;
13527 s.end()
13528 }
13529 RemoveFolderMemberError::NoPermission => {
13530 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
13532 s.serialize_field(".tag", "no_permission")?;
13533 s.end()
13534 }
13535 RemoveFolderMemberError::TooManyFiles => {
13536 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
13538 s.serialize_field(".tag", "too_many_files")?;
13539 s.end()
13540 }
13541 RemoveFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13542 }
13543 }
13544}
13545
13546impl ::std::error::Error for RemoveFolderMemberError {
13547 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
13548 match self {
13549 RemoveFolderMemberError::AccessError(inner) => Some(inner),
13550 RemoveFolderMemberError::MemberError(inner) => Some(inner),
13551 _ => None,
13552 }
13553 }
13554}
13555
13556impl ::std::fmt::Display for RemoveFolderMemberError {
13557 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13558 match self {
13559 RemoveFolderMemberError::AccessError(inner) => write!(f, "RemoveFolderMemberError: {}", inner),
13560 RemoveFolderMemberError::MemberError(inner) => write!(f, "RemoveFolderMemberError: {}", inner),
13561 RemoveFolderMemberError::FolderOwner => f.write_str("The target user is the owner of the shared folder. You can't remove this user until ownership has been transferred to another member."),
13562 RemoveFolderMemberError::GroupAccess => f.write_str("The target user has access to the shared folder via a group."),
13563 RemoveFolderMemberError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
13564 RemoveFolderMemberError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
13565 RemoveFolderMemberError::TooManyFiles => f.write_str("This shared folder has too many files for leaving a copy. You can still remove this user without leaving a copy."),
13566 _ => write!(f, "{:?}", *self),
13567 }
13568 }
13569}
13570
13571#[derive(Debug, Clone, PartialEq, Eq)]
13572pub enum RemoveMemberJobStatus {
13573 InProgress,
13575 Complete(MemberAccessLevelResult),
13578 Failed(RemoveFolderMemberError),
13579}
13580
13581impl<'de> ::serde::de::Deserialize<'de> for RemoveMemberJobStatus {
13582 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13583 use serde::de::{self, MapAccess, Visitor};
13585 struct EnumVisitor;
13586 impl<'de> Visitor<'de> for EnumVisitor {
13587 type Value = RemoveMemberJobStatus;
13588 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13589 f.write_str("a RemoveMemberJobStatus structure")
13590 }
13591 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13592 let tag: &str = match map.next_key()? {
13593 Some(".tag") => map.next_value()?,
13594 _ => return Err(de::Error::missing_field(".tag"))
13595 };
13596 let value = match tag {
13597 "in_progress" => RemoveMemberJobStatus::InProgress,
13598 "complete" => RemoveMemberJobStatus::Complete(MemberAccessLevelResult::internal_deserialize(&mut map)?),
13599 "failed" => {
13600 match map.next_key()? {
13601 Some("failed") => RemoveMemberJobStatus::Failed(map.next_value()?),
13602 None => return Err(de::Error::missing_field("failed")),
13603 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13604 }
13605 }
13606 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
13607 };
13608 crate::eat_json_fields(&mut map)?;
13609 Ok(value)
13610 }
13611 }
13612 const VARIANTS: &[&str] = &["in_progress",
13613 "complete",
13614 "failed"];
13615 deserializer.deserialize_struct("RemoveMemberJobStatus", VARIANTS, EnumVisitor)
13616 }
13617}
13618
13619impl ::serde::ser::Serialize for RemoveMemberJobStatus {
13620 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13621 use serde::ser::SerializeStruct;
13623 match self {
13624 RemoveMemberJobStatus::InProgress => {
13625 let mut s = serializer.serialize_struct("RemoveMemberJobStatus", 1)?;
13627 s.serialize_field(".tag", "in_progress")?;
13628 s.end()
13629 }
13630 RemoveMemberJobStatus::Complete(x) => {
13631 let mut s = serializer.serialize_struct("RemoveMemberJobStatus", 4)?;
13633 s.serialize_field(".tag", "complete")?;
13634 x.internal_serialize::<S>(&mut s)?;
13635 s.end()
13636 }
13637 RemoveMemberJobStatus::Failed(x) => {
13638 let mut s = serializer.serialize_struct("RemoveMemberJobStatus", 2)?;
13640 s.serialize_field(".tag", "failed")?;
13641 s.serialize_field("failed", x)?;
13642 s.end()
13643 }
13644 }
13645 }
13646}
13647
13648impl From<crate::types::dbx_async::PollResultBase> for RemoveMemberJobStatus {
13650 fn from(parent: crate::types::dbx_async::PollResultBase) -> Self {
13651 match parent {
13652 crate::types::dbx_async::PollResultBase::InProgress => RemoveMemberJobStatus::InProgress,
13653 }
13654 }
13655}
13656#[derive(Debug, Clone, PartialEq, Eq)]
13657#[non_exhaustive] pub enum RequestedLinkAccessLevel {
13659 Viewer,
13661 Editor,
13664 Max,
13666 Default,
13668 Other,
13671}
13672
13673impl<'de> ::serde::de::Deserialize<'de> for RequestedLinkAccessLevel {
13674 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13675 use serde::de::{self, MapAccess, Visitor};
13677 struct EnumVisitor;
13678 impl<'de> Visitor<'de> for EnumVisitor {
13679 type Value = RequestedLinkAccessLevel;
13680 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13681 f.write_str("a RequestedLinkAccessLevel structure")
13682 }
13683 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13684 let tag: &str = match map.next_key()? {
13685 Some(".tag") => map.next_value()?,
13686 _ => return Err(de::Error::missing_field(".tag"))
13687 };
13688 let value = match tag {
13689 "viewer" => RequestedLinkAccessLevel::Viewer,
13690 "editor" => RequestedLinkAccessLevel::Editor,
13691 "max" => RequestedLinkAccessLevel::Max,
13692 "default" => RequestedLinkAccessLevel::Default,
13693 _ => RequestedLinkAccessLevel::Other,
13694 };
13695 crate::eat_json_fields(&mut map)?;
13696 Ok(value)
13697 }
13698 }
13699 const VARIANTS: &[&str] = &["viewer",
13700 "editor",
13701 "max",
13702 "default",
13703 "other"];
13704 deserializer.deserialize_struct("RequestedLinkAccessLevel", VARIANTS, EnumVisitor)
13705 }
13706}
13707
13708impl ::serde::ser::Serialize for RequestedLinkAccessLevel {
13709 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13710 use serde::ser::SerializeStruct;
13712 match self {
13713 RequestedLinkAccessLevel::Viewer => {
13714 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13716 s.serialize_field(".tag", "viewer")?;
13717 s.end()
13718 }
13719 RequestedLinkAccessLevel::Editor => {
13720 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13722 s.serialize_field(".tag", "editor")?;
13723 s.end()
13724 }
13725 RequestedLinkAccessLevel::Max => {
13726 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13728 s.serialize_field(".tag", "max")?;
13729 s.end()
13730 }
13731 RequestedLinkAccessLevel::Default => {
13732 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13734 s.serialize_field(".tag", "default")?;
13735 s.end()
13736 }
13737 RequestedLinkAccessLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13738 }
13739 }
13740}
13741
13742#[derive(Debug, Clone, PartialEq, Eq)]
13747pub enum RequestedVisibility {
13748 Public,
13750 TeamOnly,
13752 Password,
13754}
13755
13756impl<'de> ::serde::de::Deserialize<'de> for RequestedVisibility {
13757 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13758 use serde::de::{self, MapAccess, Visitor};
13760 struct EnumVisitor;
13761 impl<'de> Visitor<'de> for EnumVisitor {
13762 type Value = RequestedVisibility;
13763 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13764 f.write_str("a RequestedVisibility structure")
13765 }
13766 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13767 let tag: &str = match map.next_key()? {
13768 Some(".tag") => map.next_value()?,
13769 _ => return Err(de::Error::missing_field(".tag"))
13770 };
13771 let value = match tag {
13772 "public" => RequestedVisibility::Public,
13773 "team_only" => RequestedVisibility::TeamOnly,
13774 "password" => RequestedVisibility::Password,
13775 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
13776 };
13777 crate::eat_json_fields(&mut map)?;
13778 Ok(value)
13779 }
13780 }
13781 const VARIANTS: &[&str] = &["public",
13782 "team_only",
13783 "password"];
13784 deserializer.deserialize_struct("RequestedVisibility", VARIANTS, EnumVisitor)
13785 }
13786}
13787
13788impl ::serde::ser::Serialize for RequestedVisibility {
13789 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13790 use serde::ser::SerializeStruct;
13792 match self {
13793 RequestedVisibility::Public => {
13794 let mut s = serializer.serialize_struct("RequestedVisibility", 1)?;
13796 s.serialize_field(".tag", "public")?;
13797 s.end()
13798 }
13799 RequestedVisibility::TeamOnly => {
13800 let mut s = serializer.serialize_struct("RequestedVisibility", 1)?;
13802 s.serialize_field(".tag", "team_only")?;
13803 s.end()
13804 }
13805 RequestedVisibility::Password => {
13806 let mut s = serializer.serialize_struct("RequestedVisibility", 1)?;
13808 s.serialize_field(".tag", "password")?;
13809 s.end()
13810 }
13811 }
13812 }
13813}
13814
13815#[derive(Debug, Clone, PartialEq, Eq)]
13819#[non_exhaustive] pub enum ResolvedVisibility {
13821 Public,
13823 TeamOnly,
13825 Password,
13827 TeamAndPassword,
13830 SharedFolderOnly,
13833 NoOne,
13837 OnlyYou,
13839 Other,
13842}
13843
13844impl<'de> ::serde::de::Deserialize<'de> for ResolvedVisibility {
13845 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13846 use serde::de::{self, MapAccess, Visitor};
13848 struct EnumVisitor;
13849 impl<'de> Visitor<'de> for EnumVisitor {
13850 type Value = ResolvedVisibility;
13851 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13852 f.write_str("a ResolvedVisibility structure")
13853 }
13854 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13855 let tag: &str = match map.next_key()? {
13856 Some(".tag") => map.next_value()?,
13857 _ => return Err(de::Error::missing_field(".tag"))
13858 };
13859 let value = match tag {
13860 "public" => ResolvedVisibility::Public,
13861 "team_only" => ResolvedVisibility::TeamOnly,
13862 "password" => ResolvedVisibility::Password,
13863 "team_and_password" => ResolvedVisibility::TeamAndPassword,
13864 "shared_folder_only" => ResolvedVisibility::SharedFolderOnly,
13865 "no_one" => ResolvedVisibility::NoOne,
13866 "only_you" => ResolvedVisibility::OnlyYou,
13867 _ => ResolvedVisibility::Other,
13868 };
13869 crate::eat_json_fields(&mut map)?;
13870 Ok(value)
13871 }
13872 }
13873 const VARIANTS: &[&str] = &["public",
13874 "team_only",
13875 "password",
13876 "team_and_password",
13877 "shared_folder_only",
13878 "no_one",
13879 "only_you",
13880 "other"];
13881 deserializer.deserialize_struct("ResolvedVisibility", VARIANTS, EnumVisitor)
13882 }
13883}
13884
13885impl ::serde::ser::Serialize for ResolvedVisibility {
13886 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13887 use serde::ser::SerializeStruct;
13889 match self {
13890 ResolvedVisibility::Public => {
13891 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13893 s.serialize_field(".tag", "public")?;
13894 s.end()
13895 }
13896 ResolvedVisibility::TeamOnly => {
13897 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13899 s.serialize_field(".tag", "team_only")?;
13900 s.end()
13901 }
13902 ResolvedVisibility::Password => {
13903 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13905 s.serialize_field(".tag", "password")?;
13906 s.end()
13907 }
13908 ResolvedVisibility::TeamAndPassword => {
13909 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13911 s.serialize_field(".tag", "team_and_password")?;
13912 s.end()
13913 }
13914 ResolvedVisibility::SharedFolderOnly => {
13915 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13917 s.serialize_field(".tag", "shared_folder_only")?;
13918 s.end()
13919 }
13920 ResolvedVisibility::NoOne => {
13921 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13923 s.serialize_field(".tag", "no_one")?;
13924 s.end()
13925 }
13926 ResolvedVisibility::OnlyYou => {
13927 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13929 s.serialize_field(".tag", "only_you")?;
13930 s.end()
13931 }
13932 ResolvedVisibility::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13933 }
13934 }
13935}
13936
13937impl From<RequestedVisibility> for ResolvedVisibility {
13939 fn from(parent: RequestedVisibility) -> Self {
13940 match parent {
13941 RequestedVisibility::Public => ResolvedVisibility::Public,
13942 RequestedVisibility::TeamOnly => ResolvedVisibility::TeamOnly,
13943 RequestedVisibility::Password => ResolvedVisibility::Password,
13944 }
13945 }
13946}
13947#[derive(Debug, Clone, PartialEq, Eq)]
13948#[non_exhaustive] pub struct RevokeSharedLinkArg {
13950 pub url: String,
13952}
13953
13954impl RevokeSharedLinkArg {
13955 pub fn new(url: String) -> Self {
13956 RevokeSharedLinkArg {
13957 url,
13958 }
13959 }
13960}
13961
13962const REVOKE_SHARED_LINK_ARG_FIELDS: &[&str] = &["url"];
13963impl RevokeSharedLinkArg {
13964 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
13965 map: V,
13966 ) -> Result<RevokeSharedLinkArg, V::Error> {
13967 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
13968 }
13969
13970 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
13971 mut map: V,
13972 optional: bool,
13973 ) -> Result<Option<RevokeSharedLinkArg>, V::Error> {
13974 let mut field_url = None;
13975 let mut nothing = true;
13976 while let Some(key) = map.next_key::<&str>()? {
13977 nothing = false;
13978 match key {
13979 "url" => {
13980 if field_url.is_some() {
13981 return Err(::serde::de::Error::duplicate_field("url"));
13982 }
13983 field_url = Some(map.next_value()?);
13984 }
13985 _ => {
13986 map.next_value::<::serde_json::Value>()?;
13988 }
13989 }
13990 }
13991 if optional && nothing {
13992 return Ok(None);
13993 }
13994 let result = RevokeSharedLinkArg {
13995 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
13996 };
13997 Ok(Some(result))
13998 }
13999
14000 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
14001 &self,
14002 s: &mut S::SerializeStruct,
14003 ) -> Result<(), S::Error> {
14004 use serde::ser::SerializeStruct;
14005 s.serialize_field("url", &self.url)?;
14006 Ok(())
14007 }
14008}
14009
14010impl<'de> ::serde::de::Deserialize<'de> for RevokeSharedLinkArg {
14011 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14012 use serde::de::{MapAccess, Visitor};
14014 struct StructVisitor;
14015 impl<'de> Visitor<'de> for StructVisitor {
14016 type Value = RevokeSharedLinkArg;
14017 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14018 f.write_str("a RevokeSharedLinkArg struct")
14019 }
14020 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
14021 RevokeSharedLinkArg::internal_deserialize(map)
14022 }
14023 }
14024 deserializer.deserialize_struct("RevokeSharedLinkArg", REVOKE_SHARED_LINK_ARG_FIELDS, StructVisitor)
14025 }
14026}
14027
14028impl ::serde::ser::Serialize for RevokeSharedLinkArg {
14029 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14030 use serde::ser::SerializeStruct;
14032 let mut s = serializer.serialize_struct("RevokeSharedLinkArg", 1)?;
14033 self.internal_serialize::<S>(&mut s)?;
14034 s.end()
14035 }
14036}
14037
14038#[derive(Debug, Clone, PartialEq, Eq)]
14039#[non_exhaustive] pub enum RevokeSharedLinkError {
14041 SharedLinkNotFound,
14043 SharedLinkAccessDenied,
14045 UnsupportedLinkType,
14047 UnsupportedParameterField,
14049 SharedLinkMalformed,
14051 Other,
14054}
14055
14056impl<'de> ::serde::de::Deserialize<'de> for RevokeSharedLinkError {
14057 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14058 use serde::de::{self, MapAccess, Visitor};
14060 struct EnumVisitor;
14061 impl<'de> Visitor<'de> for EnumVisitor {
14062 type Value = RevokeSharedLinkError;
14063 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14064 f.write_str("a RevokeSharedLinkError structure")
14065 }
14066 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
14067 let tag: &str = match map.next_key()? {
14068 Some(".tag") => map.next_value()?,
14069 _ => return Err(de::Error::missing_field(".tag"))
14070 };
14071 let value = match tag {
14072 "shared_link_not_found" => RevokeSharedLinkError::SharedLinkNotFound,
14073 "shared_link_access_denied" => RevokeSharedLinkError::SharedLinkAccessDenied,
14074 "unsupported_link_type" => RevokeSharedLinkError::UnsupportedLinkType,
14075 "unsupported_parameter_field" => RevokeSharedLinkError::UnsupportedParameterField,
14076 "shared_link_malformed" => RevokeSharedLinkError::SharedLinkMalformed,
14077 _ => RevokeSharedLinkError::Other,
14078 };
14079 crate::eat_json_fields(&mut map)?;
14080 Ok(value)
14081 }
14082 }
14083 const VARIANTS: &[&str] = &["shared_link_not_found",
14084 "shared_link_access_denied",
14085 "unsupported_link_type",
14086 "unsupported_parameter_field",
14087 "other",
14088 "shared_link_malformed"];
14089 deserializer.deserialize_struct("RevokeSharedLinkError", VARIANTS, EnumVisitor)
14090 }
14091}
14092
14093impl ::serde::ser::Serialize for RevokeSharedLinkError {
14094 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14095 use serde::ser::SerializeStruct;
14097 match self {
14098 RevokeSharedLinkError::SharedLinkNotFound => {
14099 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
14101 s.serialize_field(".tag", "shared_link_not_found")?;
14102 s.end()
14103 }
14104 RevokeSharedLinkError::SharedLinkAccessDenied => {
14105 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
14107 s.serialize_field(".tag", "shared_link_access_denied")?;
14108 s.end()
14109 }
14110 RevokeSharedLinkError::UnsupportedLinkType => {
14111 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
14113 s.serialize_field(".tag", "unsupported_link_type")?;
14114 s.end()
14115 }
14116 RevokeSharedLinkError::UnsupportedParameterField => {
14117 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
14119 s.serialize_field(".tag", "unsupported_parameter_field")?;
14120 s.end()
14121 }
14122 RevokeSharedLinkError::SharedLinkMalformed => {
14123 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
14125 s.serialize_field(".tag", "shared_link_malformed")?;
14126 s.end()
14127 }
14128 RevokeSharedLinkError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
14129 }
14130 }
14131}
14132
14133impl ::std::error::Error for RevokeSharedLinkError {
14134}
14135
14136impl ::std::fmt::Display for RevokeSharedLinkError {
14137 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14138 match self {
14139 RevokeSharedLinkError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
14140 RevokeSharedLinkError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
14141 RevokeSharedLinkError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."),
14142 RevokeSharedLinkError::SharedLinkMalformed => f.write_str("Shared link is malformed."),
14143 _ => write!(f, "{:?}", *self),
14144 }
14145 }
14146}
14147
14148impl From<SharedLinkError> for RevokeSharedLinkError {
14150 fn from(parent: SharedLinkError) -> Self {
14151 match parent {
14152 SharedLinkError::SharedLinkNotFound => RevokeSharedLinkError::SharedLinkNotFound,
14153 SharedLinkError::SharedLinkAccessDenied => RevokeSharedLinkError::SharedLinkAccessDenied,
14154 SharedLinkError::UnsupportedLinkType => RevokeSharedLinkError::UnsupportedLinkType,
14155 SharedLinkError::UnsupportedParameterField => RevokeSharedLinkError::UnsupportedParameterField,
14156 SharedLinkError::Other => RevokeSharedLinkError::Other,
14157 }
14158 }
14159}
14160#[derive(Debug, Clone, PartialEq, Eq)]
14161#[non_exhaustive] pub struct SetAccessInheritanceArg {
14163 pub shared_folder_id: crate::types::common::SharedFolderId,
14165 pub access_inheritance: AccessInheritance,
14167}
14168
14169impl SetAccessInheritanceArg {
14170 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
14171 SetAccessInheritanceArg {
14172 shared_folder_id,
14173 access_inheritance: AccessInheritance::Inherit,
14174 }
14175 }
14176
14177 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
14178 self.access_inheritance = value;
14179 self
14180 }
14181}
14182
14183const SET_ACCESS_INHERITANCE_ARG_FIELDS: &[&str] = &["shared_folder_id",
14184 "access_inheritance"];
14185impl SetAccessInheritanceArg {
14186 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
14187 map: V,
14188 ) -> Result<SetAccessInheritanceArg, V::Error> {
14189 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
14190 }
14191
14192 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
14193 mut map: V,
14194 optional: bool,
14195 ) -> Result<Option<SetAccessInheritanceArg>, V::Error> {
14196 let mut field_shared_folder_id = None;
14197 let mut field_access_inheritance = None;
14198 let mut nothing = true;
14199 while let Some(key) = map.next_key::<&str>()? {
14200 nothing = false;
14201 match key {
14202 "shared_folder_id" => {
14203 if field_shared_folder_id.is_some() {
14204 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
14205 }
14206 field_shared_folder_id = Some(map.next_value()?);
14207 }
14208 "access_inheritance" => {
14209 if field_access_inheritance.is_some() {
14210 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
14211 }
14212 field_access_inheritance = Some(map.next_value()?);
14213 }
14214 _ => {
14215 map.next_value::<::serde_json::Value>()?;
14217 }
14218 }
14219 }
14220 if optional && nothing {
14221 return Ok(None);
14222 }
14223 let result = SetAccessInheritanceArg {
14224 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
14225 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
14226 };
14227 Ok(Some(result))
14228 }
14229
14230 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
14231 &self,
14232 s: &mut S::SerializeStruct,
14233 ) -> Result<(), S::Error> {
14234 use serde::ser::SerializeStruct;
14235 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
14236 if self.access_inheritance != AccessInheritance::Inherit {
14237 s.serialize_field("access_inheritance", &self.access_inheritance)?;
14238 }
14239 Ok(())
14240 }
14241}
14242
14243impl<'de> ::serde::de::Deserialize<'de> for SetAccessInheritanceArg {
14244 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14245 use serde::de::{MapAccess, Visitor};
14247 struct StructVisitor;
14248 impl<'de> Visitor<'de> for StructVisitor {
14249 type Value = SetAccessInheritanceArg;
14250 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14251 f.write_str("a SetAccessInheritanceArg struct")
14252 }
14253 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
14254 SetAccessInheritanceArg::internal_deserialize(map)
14255 }
14256 }
14257 deserializer.deserialize_struct("SetAccessInheritanceArg", SET_ACCESS_INHERITANCE_ARG_FIELDS, StructVisitor)
14258 }
14259}
14260
14261impl ::serde::ser::Serialize for SetAccessInheritanceArg {
14262 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14263 use serde::ser::SerializeStruct;
14265 let mut s = serializer.serialize_struct("SetAccessInheritanceArg", 2)?;
14266 self.internal_serialize::<S>(&mut s)?;
14267 s.end()
14268 }
14269}
14270
14271#[derive(Debug, Clone, PartialEq, Eq)]
14272#[non_exhaustive] pub enum SetAccessInheritanceError {
14274 AccessError(SharedFolderAccessError),
14276 NoPermission,
14278 Other,
14281}
14282
14283impl<'de> ::serde::de::Deserialize<'de> for SetAccessInheritanceError {
14284 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14285 use serde::de::{self, MapAccess, Visitor};
14287 struct EnumVisitor;
14288 impl<'de> Visitor<'de> for EnumVisitor {
14289 type Value = SetAccessInheritanceError;
14290 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14291 f.write_str("a SetAccessInheritanceError structure")
14292 }
14293 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
14294 let tag: &str = match map.next_key()? {
14295 Some(".tag") => map.next_value()?,
14296 _ => return Err(de::Error::missing_field(".tag"))
14297 };
14298 let value = match tag {
14299 "access_error" => {
14300 match map.next_key()? {
14301 Some("access_error") => SetAccessInheritanceError::AccessError(map.next_value()?),
14302 None => return Err(de::Error::missing_field("access_error")),
14303 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
14304 }
14305 }
14306 "no_permission" => SetAccessInheritanceError::NoPermission,
14307 _ => SetAccessInheritanceError::Other,
14308 };
14309 crate::eat_json_fields(&mut map)?;
14310 Ok(value)
14311 }
14312 }
14313 const VARIANTS: &[&str] = &["access_error",
14314 "no_permission",
14315 "other"];
14316 deserializer.deserialize_struct("SetAccessInheritanceError", VARIANTS, EnumVisitor)
14317 }
14318}
14319
14320impl ::serde::ser::Serialize for SetAccessInheritanceError {
14321 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14322 use serde::ser::SerializeStruct;
14324 match self {
14325 SetAccessInheritanceError::AccessError(x) => {
14326 let mut s = serializer.serialize_struct("SetAccessInheritanceError", 2)?;
14328 s.serialize_field(".tag", "access_error")?;
14329 s.serialize_field("access_error", x)?;
14330 s.end()
14331 }
14332 SetAccessInheritanceError::NoPermission => {
14333 let mut s = serializer.serialize_struct("SetAccessInheritanceError", 1)?;
14335 s.serialize_field(".tag", "no_permission")?;
14336 s.end()
14337 }
14338 SetAccessInheritanceError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
14339 }
14340 }
14341}
14342
14343impl ::std::error::Error for SetAccessInheritanceError {
14344 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
14345 match self {
14346 SetAccessInheritanceError::AccessError(inner) => Some(inner),
14347 _ => None,
14348 }
14349 }
14350}
14351
14352impl ::std::fmt::Display for SetAccessInheritanceError {
14353 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14354 match self {
14355 SetAccessInheritanceError::AccessError(inner) => write!(f, "Unable to access shared folder: {}", inner),
14356 SetAccessInheritanceError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
14357 _ => write!(f, "{:?}", *self),
14358 }
14359 }
14360}
14361
14362#[derive(Debug, Clone, PartialEq, Eq)]
14363#[non_exhaustive] pub struct ShareFolderArg {
14365 pub path: crate::types::files::WritePathOrId,
14368 pub acl_update_policy: Option<AclUpdatePolicy>,
14370 pub force_async: bool,
14372 pub member_policy: Option<MemberPolicy>,
14374 pub shared_link_policy: Option<SharedLinkPolicy>,
14377 pub viewer_info_policy: Option<ViewerInfoPolicy>,
14379 pub access_inheritance: AccessInheritance,
14381 pub actions: Option<Vec<FolderAction>>,
14385 pub link_settings: Option<LinkSettings>,
14387}
14388
14389impl ShareFolderArg {
14390 pub fn new(path: crate::types::files::WritePathOrId) -> Self {
14391 ShareFolderArg {
14392 path,
14393 acl_update_policy: None,
14394 force_async: false,
14395 member_policy: None,
14396 shared_link_policy: None,
14397 viewer_info_policy: None,
14398 access_inheritance: AccessInheritance::Inherit,
14399 actions: None,
14400 link_settings: None,
14401 }
14402 }
14403
14404 pub fn with_acl_update_policy(mut self, value: AclUpdatePolicy) -> Self {
14405 self.acl_update_policy = Some(value);
14406 self
14407 }
14408
14409 pub fn with_force_async(mut self, value: bool) -> Self {
14410 self.force_async = value;
14411 self
14412 }
14413
14414 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
14415 self.member_policy = Some(value);
14416 self
14417 }
14418
14419 pub fn with_shared_link_policy(mut self, value: SharedLinkPolicy) -> Self {
14420 self.shared_link_policy = Some(value);
14421 self
14422 }
14423
14424 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
14425 self.viewer_info_policy = Some(value);
14426 self
14427 }
14428
14429 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
14430 self.access_inheritance = value;
14431 self
14432 }
14433
14434 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
14435 self.actions = Some(value);
14436 self
14437 }
14438
14439 pub fn with_link_settings(mut self, value: LinkSettings) -> Self {
14440 self.link_settings = Some(value);
14441 self
14442 }
14443}
14444
14445const SHARE_FOLDER_ARG_FIELDS: &[&str] = &["path",
14446 "acl_update_policy",
14447 "force_async",
14448 "member_policy",
14449 "shared_link_policy",
14450 "viewer_info_policy",
14451 "access_inheritance",
14452 "actions",
14453 "link_settings"];
14454impl ShareFolderArg {
14455 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
14456 map: V,
14457 ) -> Result<ShareFolderArg, V::Error> {
14458 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
14459 }
14460
14461 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
14462 mut map: V,
14463 optional: bool,
14464 ) -> Result<Option<ShareFolderArg>, V::Error> {
14465 let mut field_path = None;
14466 let mut field_acl_update_policy = None;
14467 let mut field_force_async = None;
14468 let mut field_member_policy = None;
14469 let mut field_shared_link_policy = None;
14470 let mut field_viewer_info_policy = None;
14471 let mut field_access_inheritance = None;
14472 let mut field_actions = None;
14473 let mut field_link_settings = None;
14474 let mut nothing = true;
14475 while let Some(key) = map.next_key::<&str>()? {
14476 nothing = false;
14477 match key {
14478 "path" => {
14479 if field_path.is_some() {
14480 return Err(::serde::de::Error::duplicate_field("path"));
14481 }
14482 field_path = Some(map.next_value()?);
14483 }
14484 "acl_update_policy" => {
14485 if field_acl_update_policy.is_some() {
14486 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
14487 }
14488 field_acl_update_policy = Some(map.next_value()?);
14489 }
14490 "force_async" => {
14491 if field_force_async.is_some() {
14492 return Err(::serde::de::Error::duplicate_field("force_async"));
14493 }
14494 field_force_async = Some(map.next_value()?);
14495 }
14496 "member_policy" => {
14497 if field_member_policy.is_some() {
14498 return Err(::serde::de::Error::duplicate_field("member_policy"));
14499 }
14500 field_member_policy = Some(map.next_value()?);
14501 }
14502 "shared_link_policy" => {
14503 if field_shared_link_policy.is_some() {
14504 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
14505 }
14506 field_shared_link_policy = Some(map.next_value()?);
14507 }
14508 "viewer_info_policy" => {
14509 if field_viewer_info_policy.is_some() {
14510 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
14511 }
14512 field_viewer_info_policy = Some(map.next_value()?);
14513 }
14514 "access_inheritance" => {
14515 if field_access_inheritance.is_some() {
14516 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
14517 }
14518 field_access_inheritance = Some(map.next_value()?);
14519 }
14520 "actions" => {
14521 if field_actions.is_some() {
14522 return Err(::serde::de::Error::duplicate_field("actions"));
14523 }
14524 field_actions = Some(map.next_value()?);
14525 }
14526 "link_settings" => {
14527 if field_link_settings.is_some() {
14528 return Err(::serde::de::Error::duplicate_field("link_settings"));
14529 }
14530 field_link_settings = Some(map.next_value()?);
14531 }
14532 _ => {
14533 map.next_value::<::serde_json::Value>()?;
14535 }
14536 }
14537 }
14538 if optional && nothing {
14539 return Ok(None);
14540 }
14541 let result = ShareFolderArg {
14542 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
14543 acl_update_policy: field_acl_update_policy.and_then(Option::flatten),
14544 force_async: field_force_async.unwrap_or(false),
14545 member_policy: field_member_policy.and_then(Option::flatten),
14546 shared_link_policy: field_shared_link_policy.and_then(Option::flatten),
14547 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
14548 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
14549 actions: field_actions.and_then(Option::flatten),
14550 link_settings: field_link_settings.and_then(Option::flatten),
14551 };
14552 Ok(Some(result))
14553 }
14554
14555 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
14556 &self,
14557 s: &mut S::SerializeStruct,
14558 ) -> Result<(), S::Error> {
14559 use serde::ser::SerializeStruct;
14560 s.serialize_field("path", &self.path)?;
14561 if let Some(val) = &self.acl_update_policy {
14562 s.serialize_field("acl_update_policy", val)?;
14563 }
14564 if self.force_async {
14565 s.serialize_field("force_async", &self.force_async)?;
14566 }
14567 if let Some(val) = &self.member_policy {
14568 s.serialize_field("member_policy", val)?;
14569 }
14570 if let Some(val) = &self.shared_link_policy {
14571 s.serialize_field("shared_link_policy", val)?;
14572 }
14573 if let Some(val) = &self.viewer_info_policy {
14574 s.serialize_field("viewer_info_policy", val)?;
14575 }
14576 if self.access_inheritance != AccessInheritance::Inherit {
14577 s.serialize_field("access_inheritance", &self.access_inheritance)?;
14578 }
14579 if let Some(val) = &self.actions {
14580 s.serialize_field("actions", val)?;
14581 }
14582 if let Some(val) = &self.link_settings {
14583 s.serialize_field("link_settings", val)?;
14584 }
14585 Ok(())
14586 }
14587}
14588
14589impl<'de> ::serde::de::Deserialize<'de> for ShareFolderArg {
14590 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14591 use serde::de::{MapAccess, Visitor};
14593 struct StructVisitor;
14594 impl<'de> Visitor<'de> for StructVisitor {
14595 type Value = ShareFolderArg;
14596 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14597 f.write_str("a ShareFolderArg struct")
14598 }
14599 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
14600 ShareFolderArg::internal_deserialize(map)
14601 }
14602 }
14603 deserializer.deserialize_struct("ShareFolderArg", SHARE_FOLDER_ARG_FIELDS, StructVisitor)
14604 }
14605}
14606
14607impl ::serde::ser::Serialize for ShareFolderArg {
14608 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14609 use serde::ser::SerializeStruct;
14611 let mut s = serializer.serialize_struct("ShareFolderArg", 9)?;
14612 self.internal_serialize::<S>(&mut s)?;
14613 s.end()
14614 }
14615}
14616
14617impl From<ShareFolderArg> for ShareFolderArgBase {
14619 fn from(subtype: ShareFolderArg) -> Self {
14620 Self {
14621 path: subtype.path,
14622 acl_update_policy: subtype.acl_update_policy,
14623 force_async: subtype.force_async,
14624 member_policy: subtype.member_policy,
14625 shared_link_policy: subtype.shared_link_policy,
14626 viewer_info_policy: subtype.viewer_info_policy,
14627 access_inheritance: subtype.access_inheritance,
14628 }
14629 }
14630}
14631#[derive(Debug, Clone, PartialEq, Eq)]
14632#[non_exhaustive] pub struct ShareFolderArgBase {
14634 pub path: crate::types::files::WritePathOrId,
14637 pub acl_update_policy: Option<AclUpdatePolicy>,
14639 pub force_async: bool,
14641 pub member_policy: Option<MemberPolicy>,
14643 pub shared_link_policy: Option<SharedLinkPolicy>,
14646 pub viewer_info_policy: Option<ViewerInfoPolicy>,
14648 pub access_inheritance: AccessInheritance,
14650}
14651
14652impl ShareFolderArgBase {
14653 pub fn new(path: crate::types::files::WritePathOrId) -> Self {
14654 ShareFolderArgBase {
14655 path,
14656 acl_update_policy: None,
14657 force_async: false,
14658 member_policy: None,
14659 shared_link_policy: None,
14660 viewer_info_policy: None,
14661 access_inheritance: AccessInheritance::Inherit,
14662 }
14663 }
14664
14665 pub fn with_acl_update_policy(mut self, value: AclUpdatePolicy) -> Self {
14666 self.acl_update_policy = Some(value);
14667 self
14668 }
14669
14670 pub fn with_force_async(mut self, value: bool) -> Self {
14671 self.force_async = value;
14672 self
14673 }
14674
14675 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
14676 self.member_policy = Some(value);
14677 self
14678 }
14679
14680 pub fn with_shared_link_policy(mut self, value: SharedLinkPolicy) -> Self {
14681 self.shared_link_policy = Some(value);
14682 self
14683 }
14684
14685 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
14686 self.viewer_info_policy = Some(value);
14687 self
14688 }
14689
14690 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
14691 self.access_inheritance = value;
14692 self
14693 }
14694}
14695
14696const SHARE_FOLDER_ARG_BASE_FIELDS: &[&str] = &["path",
14697 "acl_update_policy",
14698 "force_async",
14699 "member_policy",
14700 "shared_link_policy",
14701 "viewer_info_policy",
14702 "access_inheritance"];
14703impl ShareFolderArgBase {
14704 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
14705 map: V,
14706 ) -> Result<ShareFolderArgBase, V::Error> {
14707 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
14708 }
14709
14710 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
14711 mut map: V,
14712 optional: bool,
14713 ) -> Result<Option<ShareFolderArgBase>, V::Error> {
14714 let mut field_path = None;
14715 let mut field_acl_update_policy = None;
14716 let mut field_force_async = None;
14717 let mut field_member_policy = None;
14718 let mut field_shared_link_policy = None;
14719 let mut field_viewer_info_policy = None;
14720 let mut field_access_inheritance = None;
14721 let mut nothing = true;
14722 while let Some(key) = map.next_key::<&str>()? {
14723 nothing = false;
14724 match key {
14725 "path" => {
14726 if field_path.is_some() {
14727 return Err(::serde::de::Error::duplicate_field("path"));
14728 }
14729 field_path = Some(map.next_value()?);
14730 }
14731 "acl_update_policy" => {
14732 if field_acl_update_policy.is_some() {
14733 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
14734 }
14735 field_acl_update_policy = Some(map.next_value()?);
14736 }
14737 "force_async" => {
14738 if field_force_async.is_some() {
14739 return Err(::serde::de::Error::duplicate_field("force_async"));
14740 }
14741 field_force_async = Some(map.next_value()?);
14742 }
14743 "member_policy" => {
14744 if field_member_policy.is_some() {
14745 return Err(::serde::de::Error::duplicate_field("member_policy"));
14746 }
14747 field_member_policy = Some(map.next_value()?);
14748 }
14749 "shared_link_policy" => {
14750 if field_shared_link_policy.is_some() {
14751 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
14752 }
14753 field_shared_link_policy = Some(map.next_value()?);
14754 }
14755 "viewer_info_policy" => {
14756 if field_viewer_info_policy.is_some() {
14757 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
14758 }
14759 field_viewer_info_policy = Some(map.next_value()?);
14760 }
14761 "access_inheritance" => {
14762 if field_access_inheritance.is_some() {
14763 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
14764 }
14765 field_access_inheritance = Some(map.next_value()?);
14766 }
14767 _ => {
14768 map.next_value::<::serde_json::Value>()?;
14770 }
14771 }
14772 }
14773 if optional && nothing {
14774 return Ok(None);
14775 }
14776 let result = ShareFolderArgBase {
14777 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
14778 acl_update_policy: field_acl_update_policy.and_then(Option::flatten),
14779 force_async: field_force_async.unwrap_or(false),
14780 member_policy: field_member_policy.and_then(Option::flatten),
14781 shared_link_policy: field_shared_link_policy.and_then(Option::flatten),
14782 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
14783 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
14784 };
14785 Ok(Some(result))
14786 }
14787
14788 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
14789 &self,
14790 s: &mut S::SerializeStruct,
14791 ) -> Result<(), S::Error> {
14792 use serde::ser::SerializeStruct;
14793 s.serialize_field("path", &self.path)?;
14794 if let Some(val) = &self.acl_update_policy {
14795 s.serialize_field("acl_update_policy", val)?;
14796 }
14797 if self.force_async {
14798 s.serialize_field("force_async", &self.force_async)?;
14799 }
14800 if let Some(val) = &self.member_policy {
14801 s.serialize_field("member_policy", val)?;
14802 }
14803 if let Some(val) = &self.shared_link_policy {
14804 s.serialize_field("shared_link_policy", val)?;
14805 }
14806 if let Some(val) = &self.viewer_info_policy {
14807 s.serialize_field("viewer_info_policy", val)?;
14808 }
14809 if self.access_inheritance != AccessInheritance::Inherit {
14810 s.serialize_field("access_inheritance", &self.access_inheritance)?;
14811 }
14812 Ok(())
14813 }
14814}
14815
14816impl<'de> ::serde::de::Deserialize<'de> for ShareFolderArgBase {
14817 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14818 use serde::de::{MapAccess, Visitor};
14820 struct StructVisitor;
14821 impl<'de> Visitor<'de> for StructVisitor {
14822 type Value = ShareFolderArgBase;
14823 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14824 f.write_str("a ShareFolderArgBase struct")
14825 }
14826 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
14827 ShareFolderArgBase::internal_deserialize(map)
14828 }
14829 }
14830 deserializer.deserialize_struct("ShareFolderArgBase", SHARE_FOLDER_ARG_BASE_FIELDS, StructVisitor)
14831 }
14832}
14833
14834impl ::serde::ser::Serialize for ShareFolderArgBase {
14835 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14836 use serde::ser::SerializeStruct;
14838 let mut s = serializer.serialize_struct("ShareFolderArgBase", 7)?;
14839 self.internal_serialize::<S>(&mut s)?;
14840 s.end()
14841 }
14842}
14843
14844#[derive(Debug, Clone, PartialEq, Eq)]
14845#[non_exhaustive] pub enum ShareFolderError {
14847 EmailUnverified,
14851 BadPath(SharePathError),
14853 TeamPolicyDisallowsMemberPolicy,
14856 DisallowedSharedLinkPolicy,
14859 NoPermission,
14861 Other,
14864}
14865
14866impl<'de> ::serde::de::Deserialize<'de> for ShareFolderError {
14867 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14868 use serde::de::{self, MapAccess, Visitor};
14870 struct EnumVisitor;
14871 impl<'de> Visitor<'de> for EnumVisitor {
14872 type Value = ShareFolderError;
14873 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14874 f.write_str("a ShareFolderError structure")
14875 }
14876 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
14877 let tag: &str = match map.next_key()? {
14878 Some(".tag") => map.next_value()?,
14879 _ => return Err(de::Error::missing_field(".tag"))
14880 };
14881 let value = match tag {
14882 "email_unverified" => ShareFolderError::EmailUnverified,
14883 "bad_path" => {
14884 match map.next_key()? {
14885 Some("bad_path") => ShareFolderError::BadPath(map.next_value()?),
14886 None => return Err(de::Error::missing_field("bad_path")),
14887 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
14888 }
14889 }
14890 "team_policy_disallows_member_policy" => ShareFolderError::TeamPolicyDisallowsMemberPolicy,
14891 "disallowed_shared_link_policy" => ShareFolderError::DisallowedSharedLinkPolicy,
14892 "no_permission" => ShareFolderError::NoPermission,
14893 _ => ShareFolderError::Other,
14894 };
14895 crate::eat_json_fields(&mut map)?;
14896 Ok(value)
14897 }
14898 }
14899 const VARIANTS: &[&str] = &["email_unverified",
14900 "bad_path",
14901 "team_policy_disallows_member_policy",
14902 "disallowed_shared_link_policy",
14903 "other",
14904 "no_permission"];
14905 deserializer.deserialize_struct("ShareFolderError", VARIANTS, EnumVisitor)
14906 }
14907}
14908
14909impl ::serde::ser::Serialize for ShareFolderError {
14910 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14911 use serde::ser::SerializeStruct;
14913 match self {
14914 ShareFolderError::EmailUnverified => {
14915 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14917 s.serialize_field(".tag", "email_unverified")?;
14918 s.end()
14919 }
14920 ShareFolderError::BadPath(x) => {
14921 let mut s = serializer.serialize_struct("ShareFolderError", 2)?;
14923 s.serialize_field(".tag", "bad_path")?;
14924 s.serialize_field("bad_path", x)?;
14925 s.end()
14926 }
14927 ShareFolderError::TeamPolicyDisallowsMemberPolicy => {
14928 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14930 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
14931 s.end()
14932 }
14933 ShareFolderError::DisallowedSharedLinkPolicy => {
14934 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14936 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
14937 s.end()
14938 }
14939 ShareFolderError::NoPermission => {
14940 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14942 s.serialize_field(".tag", "no_permission")?;
14943 s.end()
14944 }
14945 ShareFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
14946 }
14947 }
14948}
14949
14950impl ::std::error::Error for ShareFolderError {
14951 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
14952 match self {
14953 ShareFolderError::BadPath(inner) => Some(inner),
14954 _ => None,
14955 }
14956 }
14957}
14958
14959impl ::std::fmt::Display for ShareFolderError {
14960 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14961 match self {
14962 ShareFolderError::BadPath(inner) => write!(f, "ShareFolderError: {}", inner),
14963 ShareFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
14964 _ => write!(f, "{:?}", *self),
14965 }
14966 }
14967}
14968
14969impl From<ShareFolderErrorBase> for ShareFolderError {
14971 fn from(parent: ShareFolderErrorBase) -> Self {
14972 match parent {
14973 ShareFolderErrorBase::EmailUnverified => ShareFolderError::EmailUnverified,
14974 ShareFolderErrorBase::BadPath(x) => ShareFolderError::BadPath(x),
14975 ShareFolderErrorBase::TeamPolicyDisallowsMemberPolicy => ShareFolderError::TeamPolicyDisallowsMemberPolicy,
14976 ShareFolderErrorBase::DisallowedSharedLinkPolicy => ShareFolderError::DisallowedSharedLinkPolicy,
14977 ShareFolderErrorBase::Other => ShareFolderError::Other,
14978 }
14979 }
14980}
14981#[derive(Debug, Clone, PartialEq, Eq)]
14982#[non_exhaustive] pub enum ShareFolderErrorBase {
14984 EmailUnverified,
14988 BadPath(SharePathError),
14990 TeamPolicyDisallowsMemberPolicy,
14993 DisallowedSharedLinkPolicy,
14996 Other,
14999}
15000
15001impl<'de> ::serde::de::Deserialize<'de> for ShareFolderErrorBase {
15002 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15003 use serde::de::{self, MapAccess, Visitor};
15005 struct EnumVisitor;
15006 impl<'de> Visitor<'de> for EnumVisitor {
15007 type Value = ShareFolderErrorBase;
15008 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15009 f.write_str("a ShareFolderErrorBase structure")
15010 }
15011 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15012 let tag: &str = match map.next_key()? {
15013 Some(".tag") => map.next_value()?,
15014 _ => return Err(de::Error::missing_field(".tag"))
15015 };
15016 let value = match tag {
15017 "email_unverified" => ShareFolderErrorBase::EmailUnverified,
15018 "bad_path" => {
15019 match map.next_key()? {
15020 Some("bad_path") => ShareFolderErrorBase::BadPath(map.next_value()?),
15021 None => return Err(de::Error::missing_field("bad_path")),
15022 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
15023 }
15024 }
15025 "team_policy_disallows_member_policy" => ShareFolderErrorBase::TeamPolicyDisallowsMemberPolicy,
15026 "disallowed_shared_link_policy" => ShareFolderErrorBase::DisallowedSharedLinkPolicy,
15027 _ => ShareFolderErrorBase::Other,
15028 };
15029 crate::eat_json_fields(&mut map)?;
15030 Ok(value)
15031 }
15032 }
15033 const VARIANTS: &[&str] = &["email_unverified",
15034 "bad_path",
15035 "team_policy_disallows_member_policy",
15036 "disallowed_shared_link_policy",
15037 "other"];
15038 deserializer.deserialize_struct("ShareFolderErrorBase", VARIANTS, EnumVisitor)
15039 }
15040}
15041
15042impl ::serde::ser::Serialize for ShareFolderErrorBase {
15043 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15044 use serde::ser::SerializeStruct;
15046 match self {
15047 ShareFolderErrorBase::EmailUnverified => {
15048 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 1)?;
15050 s.serialize_field(".tag", "email_unverified")?;
15051 s.end()
15052 }
15053 ShareFolderErrorBase::BadPath(x) => {
15054 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 2)?;
15056 s.serialize_field(".tag", "bad_path")?;
15057 s.serialize_field("bad_path", x)?;
15058 s.end()
15059 }
15060 ShareFolderErrorBase::TeamPolicyDisallowsMemberPolicy => {
15061 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 1)?;
15063 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
15064 s.end()
15065 }
15066 ShareFolderErrorBase::DisallowedSharedLinkPolicy => {
15067 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 1)?;
15069 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
15070 s.end()
15071 }
15072 ShareFolderErrorBase::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15073 }
15074 }
15075}
15076
15077#[derive(Debug, Clone, PartialEq, Eq)]
15078#[non_exhaustive] pub enum ShareFolderErrorBaseV2 {
15080 EmailUnverified,
15084 TeamPolicyDisallowsMemberPolicy,
15087 DisallowedSharedLinkPolicy,
15090 Other,
15093}
15094
15095impl<'de> ::serde::de::Deserialize<'de> for ShareFolderErrorBaseV2 {
15096 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15097 use serde::de::{self, MapAccess, Visitor};
15099 struct EnumVisitor;
15100 impl<'de> Visitor<'de> for EnumVisitor {
15101 type Value = ShareFolderErrorBaseV2;
15102 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15103 f.write_str("a ShareFolderErrorBaseV2 structure")
15104 }
15105 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15106 let tag: &str = match map.next_key()? {
15107 Some(".tag") => map.next_value()?,
15108 _ => return Err(de::Error::missing_field(".tag"))
15109 };
15110 let value = match tag {
15111 "email_unverified" => ShareFolderErrorBaseV2::EmailUnverified,
15112 "team_policy_disallows_member_policy" => ShareFolderErrorBaseV2::TeamPolicyDisallowsMemberPolicy,
15113 "disallowed_shared_link_policy" => ShareFolderErrorBaseV2::DisallowedSharedLinkPolicy,
15114 _ => ShareFolderErrorBaseV2::Other,
15115 };
15116 crate::eat_json_fields(&mut map)?;
15117 Ok(value)
15118 }
15119 }
15120 const VARIANTS: &[&str] = &["email_unverified",
15121 "team_policy_disallows_member_policy",
15122 "disallowed_shared_link_policy",
15123 "other"];
15124 deserializer.deserialize_struct("ShareFolderErrorBaseV2", VARIANTS, EnumVisitor)
15125 }
15126}
15127
15128impl ::serde::ser::Serialize for ShareFolderErrorBaseV2 {
15129 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15130 use serde::ser::SerializeStruct;
15132 match self {
15133 ShareFolderErrorBaseV2::EmailUnverified => {
15134 let mut s = serializer.serialize_struct("ShareFolderErrorBaseV2", 1)?;
15136 s.serialize_field(".tag", "email_unverified")?;
15137 s.end()
15138 }
15139 ShareFolderErrorBaseV2::TeamPolicyDisallowsMemberPolicy => {
15140 let mut s = serializer.serialize_struct("ShareFolderErrorBaseV2", 1)?;
15142 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
15143 s.end()
15144 }
15145 ShareFolderErrorBaseV2::DisallowedSharedLinkPolicy => {
15146 let mut s = serializer.serialize_struct("ShareFolderErrorBaseV2", 1)?;
15148 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
15149 s.end()
15150 }
15151 ShareFolderErrorBaseV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15152 }
15153 }
15154}
15155
15156#[derive(Debug, Clone, PartialEq, Eq)]
15157#[non_exhaustive] pub enum ShareFolderErrorV2 {
15159 EmailUnverified,
15163 TeamPolicyDisallowsMemberPolicy,
15166 DisallowedSharedLinkPolicy,
15169 NoPermission,
15171 Other,
15174}
15175
15176impl<'de> ::serde::de::Deserialize<'de> for ShareFolderErrorV2 {
15177 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15178 use serde::de::{self, MapAccess, Visitor};
15180 struct EnumVisitor;
15181 impl<'de> Visitor<'de> for EnumVisitor {
15182 type Value = ShareFolderErrorV2;
15183 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15184 f.write_str("a ShareFolderErrorV2 structure")
15185 }
15186 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15187 let tag: &str = match map.next_key()? {
15188 Some(".tag") => map.next_value()?,
15189 _ => return Err(de::Error::missing_field(".tag"))
15190 };
15191 let value = match tag {
15192 "email_unverified" => ShareFolderErrorV2::EmailUnverified,
15193 "team_policy_disallows_member_policy" => ShareFolderErrorV2::TeamPolicyDisallowsMemberPolicy,
15194 "disallowed_shared_link_policy" => ShareFolderErrorV2::DisallowedSharedLinkPolicy,
15195 "no_permission" => ShareFolderErrorV2::NoPermission,
15196 _ => ShareFolderErrorV2::Other,
15197 };
15198 crate::eat_json_fields(&mut map)?;
15199 Ok(value)
15200 }
15201 }
15202 const VARIANTS: &[&str] = &["email_unverified",
15203 "team_policy_disallows_member_policy",
15204 "disallowed_shared_link_policy",
15205 "other",
15206 "no_permission"];
15207 deserializer.deserialize_struct("ShareFolderErrorV2", VARIANTS, EnumVisitor)
15208 }
15209}
15210
15211impl ::serde::ser::Serialize for ShareFolderErrorV2 {
15212 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15213 use serde::ser::SerializeStruct;
15215 match self {
15216 ShareFolderErrorV2::EmailUnverified => {
15217 let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?;
15219 s.serialize_field(".tag", "email_unverified")?;
15220 s.end()
15221 }
15222 ShareFolderErrorV2::TeamPolicyDisallowsMemberPolicy => {
15223 let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?;
15225 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
15226 s.end()
15227 }
15228 ShareFolderErrorV2::DisallowedSharedLinkPolicy => {
15229 let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?;
15231 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
15232 s.end()
15233 }
15234 ShareFolderErrorV2::NoPermission => {
15235 let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?;
15237 s.serialize_field(".tag", "no_permission")?;
15238 s.end()
15239 }
15240 ShareFolderErrorV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15241 }
15242 }
15243}
15244
15245impl From<ShareFolderErrorBaseV2> for ShareFolderErrorV2 {
15247 fn from(parent: ShareFolderErrorBaseV2) -> Self {
15248 match parent {
15249 ShareFolderErrorBaseV2::EmailUnverified => ShareFolderErrorV2::EmailUnverified,
15250 ShareFolderErrorBaseV2::TeamPolicyDisallowsMemberPolicy => ShareFolderErrorV2::TeamPolicyDisallowsMemberPolicy,
15251 ShareFolderErrorBaseV2::DisallowedSharedLinkPolicy => ShareFolderErrorV2::DisallowedSharedLinkPolicy,
15252 ShareFolderErrorBaseV2::Other => ShareFolderErrorV2::Other,
15253 }
15254 }
15255}
15256#[derive(Debug, Clone, PartialEq, Eq)]
15257pub enum ShareFolderJobStatus {
15258 InProgress,
15260 Complete(SharedFolderMetadata),
15262 Failed(ShareFolderError),
15263}
15264
15265impl<'de> ::serde::de::Deserialize<'de> for ShareFolderJobStatus {
15266 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15267 use serde::de::{self, MapAccess, Visitor};
15269 struct EnumVisitor;
15270 impl<'de> Visitor<'de> for EnumVisitor {
15271 type Value = ShareFolderJobStatus;
15272 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15273 f.write_str("a ShareFolderJobStatus structure")
15274 }
15275 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15276 let tag: &str = match map.next_key()? {
15277 Some(".tag") => map.next_value()?,
15278 _ => return Err(de::Error::missing_field(".tag"))
15279 };
15280 let value = match tag {
15281 "in_progress" => ShareFolderJobStatus::InProgress,
15282 "complete" => ShareFolderJobStatus::Complete(SharedFolderMetadata::internal_deserialize(&mut map)?),
15283 "failed" => {
15284 match map.next_key()? {
15285 Some("failed") => ShareFolderJobStatus::Failed(map.next_value()?),
15286 None => return Err(de::Error::missing_field("failed")),
15287 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
15288 }
15289 }
15290 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
15291 };
15292 crate::eat_json_fields(&mut map)?;
15293 Ok(value)
15294 }
15295 }
15296 const VARIANTS: &[&str] = &["in_progress",
15297 "complete",
15298 "failed"];
15299 deserializer.deserialize_struct("ShareFolderJobStatus", VARIANTS, EnumVisitor)
15300 }
15301}
15302
15303impl ::serde::ser::Serialize for ShareFolderJobStatus {
15304 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15305 use serde::ser::SerializeStruct;
15307 match self {
15308 ShareFolderJobStatus::InProgress => {
15309 let mut s = serializer.serialize_struct("ShareFolderJobStatus", 1)?;
15311 s.serialize_field(".tag", "in_progress")?;
15312 s.end()
15313 }
15314 ShareFolderJobStatus::Complete(x) => {
15315 let mut s = serializer.serialize_struct("ShareFolderJobStatus", 19)?;
15317 s.serialize_field(".tag", "complete")?;
15318 x.internal_serialize::<S>(&mut s)?;
15319 s.end()
15320 }
15321 ShareFolderJobStatus::Failed(x) => {
15322 let mut s = serializer.serialize_struct("ShareFolderJobStatus", 2)?;
15324 s.serialize_field(".tag", "failed")?;
15325 s.serialize_field("failed", x)?;
15326 s.end()
15327 }
15328 }
15329 }
15330}
15331
15332impl From<crate::types::dbx_async::PollResultBase> for ShareFolderJobStatus {
15334 fn from(parent: crate::types::dbx_async::PollResultBase) -> Self {
15335 match parent {
15336 crate::types::dbx_async::PollResultBase::InProgress => ShareFolderJobStatus::InProgress,
15337 }
15338 }
15339}
15340#[derive(Debug, Clone, PartialEq, Eq)]
15341pub enum ShareFolderLaunch {
15342 AsyncJobId(crate::types::dbx_async::AsyncJobId),
15345 Complete(SharedFolderMetadata),
15346}
15347
15348impl<'de> ::serde::de::Deserialize<'de> for ShareFolderLaunch {
15349 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15350 use serde::de::{self, MapAccess, Visitor};
15352 struct EnumVisitor;
15353 impl<'de> Visitor<'de> for EnumVisitor {
15354 type Value = ShareFolderLaunch;
15355 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15356 f.write_str("a ShareFolderLaunch structure")
15357 }
15358 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15359 let tag: &str = match map.next_key()? {
15360 Some(".tag") => map.next_value()?,
15361 _ => return Err(de::Error::missing_field(".tag"))
15362 };
15363 let value = match tag {
15364 "async_job_id" => {
15365 match map.next_key()? {
15366 Some("async_job_id") => ShareFolderLaunch::AsyncJobId(map.next_value()?),
15367 None => return Err(de::Error::missing_field("async_job_id")),
15368 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
15369 }
15370 }
15371 "complete" => ShareFolderLaunch::Complete(SharedFolderMetadata::internal_deserialize(&mut map)?),
15372 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
15373 };
15374 crate::eat_json_fields(&mut map)?;
15375 Ok(value)
15376 }
15377 }
15378 const VARIANTS: &[&str] = &["async_job_id",
15379 "complete"];
15380 deserializer.deserialize_struct("ShareFolderLaunch", VARIANTS, EnumVisitor)
15381 }
15382}
15383
15384impl ::serde::ser::Serialize for ShareFolderLaunch {
15385 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15386 use serde::ser::SerializeStruct;
15388 match self {
15389 ShareFolderLaunch::AsyncJobId(x) => {
15390 let mut s = serializer.serialize_struct("ShareFolderLaunch", 2)?;
15392 s.serialize_field(".tag", "async_job_id")?;
15393 s.serialize_field("async_job_id", x)?;
15394 s.end()
15395 }
15396 ShareFolderLaunch::Complete(x) => {
15397 let mut s = serializer.serialize_struct("ShareFolderLaunch", 19)?;
15399 s.serialize_field(".tag", "complete")?;
15400 x.internal_serialize::<S>(&mut s)?;
15401 s.end()
15402 }
15403 }
15404 }
15405}
15406
15407impl From<crate::types::dbx_async::LaunchResultBase> for ShareFolderLaunch {
15409 fn from(parent: crate::types::dbx_async::LaunchResultBase) -> Self {
15410 match parent {
15411 crate::types::dbx_async::LaunchResultBase::AsyncJobId(x) => ShareFolderLaunch::AsyncJobId(x),
15412 }
15413 }
15414}
15415#[derive(Debug, Clone, PartialEq, Eq)]
15416#[non_exhaustive] pub enum SharePathError {
15418 IsFile,
15420 InsideSharedFolder,
15422 ContainsSharedFolder,
15424 ContainsAppFolder,
15426 ContainsTeamFolder,
15428 IsAppFolder,
15430 InsideAppFolder,
15432 IsPublicFolder,
15434 InsidePublicFolder,
15436 AlreadyShared(SharedFolderMetadata),
15438 InvalidPath,
15440 IsOsxPackage,
15442 InsideOsxPackage,
15444 IsVault,
15446 IsVaultLocked,
15448 IsFamily,
15450 Other,
15453}
15454
15455impl<'de> ::serde::de::Deserialize<'de> for SharePathError {
15456 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15457 use serde::de::{self, MapAccess, Visitor};
15459 struct EnumVisitor;
15460 impl<'de> Visitor<'de> for EnumVisitor {
15461 type Value = SharePathError;
15462 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15463 f.write_str("a SharePathError structure")
15464 }
15465 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15466 let tag: &str = match map.next_key()? {
15467 Some(".tag") => map.next_value()?,
15468 _ => return Err(de::Error::missing_field(".tag"))
15469 };
15470 let value = match tag {
15471 "is_file" => SharePathError::IsFile,
15472 "inside_shared_folder" => SharePathError::InsideSharedFolder,
15473 "contains_shared_folder" => SharePathError::ContainsSharedFolder,
15474 "contains_app_folder" => SharePathError::ContainsAppFolder,
15475 "contains_team_folder" => SharePathError::ContainsTeamFolder,
15476 "is_app_folder" => SharePathError::IsAppFolder,
15477 "inside_app_folder" => SharePathError::InsideAppFolder,
15478 "is_public_folder" => SharePathError::IsPublicFolder,
15479 "inside_public_folder" => SharePathError::InsidePublicFolder,
15480 "already_shared" => SharePathError::AlreadyShared(SharedFolderMetadata::internal_deserialize(&mut map)?),
15481 "invalid_path" => SharePathError::InvalidPath,
15482 "is_osx_package" => SharePathError::IsOsxPackage,
15483 "inside_osx_package" => SharePathError::InsideOsxPackage,
15484 "is_vault" => SharePathError::IsVault,
15485 "is_vault_locked" => SharePathError::IsVaultLocked,
15486 "is_family" => SharePathError::IsFamily,
15487 _ => SharePathError::Other,
15488 };
15489 crate::eat_json_fields(&mut map)?;
15490 Ok(value)
15491 }
15492 }
15493 const VARIANTS: &[&str] = &["is_file",
15494 "inside_shared_folder",
15495 "contains_shared_folder",
15496 "contains_app_folder",
15497 "contains_team_folder",
15498 "is_app_folder",
15499 "inside_app_folder",
15500 "is_public_folder",
15501 "inside_public_folder",
15502 "already_shared",
15503 "invalid_path",
15504 "is_osx_package",
15505 "inside_osx_package",
15506 "is_vault",
15507 "is_vault_locked",
15508 "is_family",
15509 "other"];
15510 deserializer.deserialize_struct("SharePathError", VARIANTS, EnumVisitor)
15511 }
15512}
15513
15514impl ::serde::ser::Serialize for SharePathError {
15515 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15516 use serde::ser::SerializeStruct;
15518 match self {
15519 SharePathError::IsFile => {
15520 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15522 s.serialize_field(".tag", "is_file")?;
15523 s.end()
15524 }
15525 SharePathError::InsideSharedFolder => {
15526 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15528 s.serialize_field(".tag", "inside_shared_folder")?;
15529 s.end()
15530 }
15531 SharePathError::ContainsSharedFolder => {
15532 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15534 s.serialize_field(".tag", "contains_shared_folder")?;
15535 s.end()
15536 }
15537 SharePathError::ContainsAppFolder => {
15538 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15540 s.serialize_field(".tag", "contains_app_folder")?;
15541 s.end()
15542 }
15543 SharePathError::ContainsTeamFolder => {
15544 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15546 s.serialize_field(".tag", "contains_team_folder")?;
15547 s.end()
15548 }
15549 SharePathError::IsAppFolder => {
15550 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15552 s.serialize_field(".tag", "is_app_folder")?;
15553 s.end()
15554 }
15555 SharePathError::InsideAppFolder => {
15556 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15558 s.serialize_field(".tag", "inside_app_folder")?;
15559 s.end()
15560 }
15561 SharePathError::IsPublicFolder => {
15562 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15564 s.serialize_field(".tag", "is_public_folder")?;
15565 s.end()
15566 }
15567 SharePathError::InsidePublicFolder => {
15568 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15570 s.serialize_field(".tag", "inside_public_folder")?;
15571 s.end()
15572 }
15573 SharePathError::AlreadyShared(x) => {
15574 let mut s = serializer.serialize_struct("SharePathError", 19)?;
15576 s.serialize_field(".tag", "already_shared")?;
15577 x.internal_serialize::<S>(&mut s)?;
15578 s.end()
15579 }
15580 SharePathError::InvalidPath => {
15581 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15583 s.serialize_field(".tag", "invalid_path")?;
15584 s.end()
15585 }
15586 SharePathError::IsOsxPackage => {
15587 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15589 s.serialize_field(".tag", "is_osx_package")?;
15590 s.end()
15591 }
15592 SharePathError::InsideOsxPackage => {
15593 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15595 s.serialize_field(".tag", "inside_osx_package")?;
15596 s.end()
15597 }
15598 SharePathError::IsVault => {
15599 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15601 s.serialize_field(".tag", "is_vault")?;
15602 s.end()
15603 }
15604 SharePathError::IsVaultLocked => {
15605 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15607 s.serialize_field(".tag", "is_vault_locked")?;
15608 s.end()
15609 }
15610 SharePathError::IsFamily => {
15611 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15613 s.serialize_field(".tag", "is_family")?;
15614 s.end()
15615 }
15616 SharePathError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15617 }
15618 }
15619}
15620
15621impl ::std::error::Error for SharePathError {
15622}
15623
15624impl ::std::fmt::Display for SharePathError {
15625 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15626 match self {
15627 SharePathError::IsFile => f.write_str("A file is at the specified path."),
15628 SharePathError::InsideSharedFolder => f.write_str("We do not support sharing a folder inside a shared folder."),
15629 SharePathError::ContainsSharedFolder => f.write_str("We do not support shared folders that contain shared folders."),
15630 SharePathError::ContainsAppFolder => f.write_str("We do not support shared folders that contain app folders."),
15631 SharePathError::ContainsTeamFolder => f.write_str("We do not support shared folders that contain team folders."),
15632 SharePathError::IsAppFolder => f.write_str("We do not support sharing an app folder."),
15633 SharePathError::InsideAppFolder => f.write_str("We do not support sharing a folder inside an app folder."),
15634 SharePathError::IsPublicFolder => f.write_str("A public folder can't be shared this way. Use a public link instead."),
15635 SharePathError::InsidePublicFolder => f.write_str("A folder inside a public folder can't be shared this way. Use a public link instead."),
15636 SharePathError::AlreadyShared(inner) => write!(f, "Folder is already shared. Contains metadata about the existing shared folder: {:?}", inner),
15637 SharePathError::InvalidPath => f.write_str("Path is not valid."),
15638 SharePathError::IsOsxPackage => f.write_str("We do not support sharing a Mac OS X package."),
15639 SharePathError::InsideOsxPackage => f.write_str("We do not support sharing a folder inside a Mac OS X package."),
15640 SharePathError::IsVault => f.write_str("We do not support sharing the Vault folder."),
15641 SharePathError::IsVaultLocked => f.write_str("We do not support sharing a folder inside a locked Vault."),
15642 SharePathError::IsFamily => f.write_str("We do not support sharing the Family folder."),
15643 _ => write!(f, "{:?}", *self),
15644 }
15645 }
15646}
15647
15648#[derive(Debug, Clone, PartialEq, Eq)]
15649#[non_exhaustive] pub enum SharePathErrorBaseV2 {
15651 IsFile,
15653 InsideSharedFolder,
15655 ContainsSharedFolder,
15657 ContainsTeamFolder,
15659 IsAppFolder,
15661 InsideAppFolder,
15663 IsPublicFolder,
15665 InsidePublicFolder,
15667 AlreadyShared(SharedFolderMetadata),
15669 InvalidPath,
15671 IsOsxPackage,
15673 InsideOsxPackage,
15675 IsVault,
15677 IsVaultLocked,
15679 Other,
15682}
15683
15684impl<'de> ::serde::de::Deserialize<'de> for SharePathErrorBaseV2 {
15685 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15686 use serde::de::{self, MapAccess, Visitor};
15688 struct EnumVisitor;
15689 impl<'de> Visitor<'de> for EnumVisitor {
15690 type Value = SharePathErrorBaseV2;
15691 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15692 f.write_str("a SharePathErrorBaseV2 structure")
15693 }
15694 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15695 let tag: &str = match map.next_key()? {
15696 Some(".tag") => map.next_value()?,
15697 _ => return Err(de::Error::missing_field(".tag"))
15698 };
15699 let value = match tag {
15700 "is_file" => SharePathErrorBaseV2::IsFile,
15701 "inside_shared_folder" => SharePathErrorBaseV2::InsideSharedFolder,
15702 "contains_shared_folder" => SharePathErrorBaseV2::ContainsSharedFolder,
15703 "contains_team_folder" => SharePathErrorBaseV2::ContainsTeamFolder,
15704 "is_app_folder" => SharePathErrorBaseV2::IsAppFolder,
15705 "inside_app_folder" => SharePathErrorBaseV2::InsideAppFolder,
15706 "is_public_folder" => SharePathErrorBaseV2::IsPublicFolder,
15707 "inside_public_folder" => SharePathErrorBaseV2::InsidePublicFolder,
15708 "already_shared" => SharePathErrorBaseV2::AlreadyShared(SharedFolderMetadata::internal_deserialize(&mut map)?),
15709 "invalid_path" => SharePathErrorBaseV2::InvalidPath,
15710 "is_osx_package" => SharePathErrorBaseV2::IsOsxPackage,
15711 "inside_osx_package" => SharePathErrorBaseV2::InsideOsxPackage,
15712 "is_vault" => SharePathErrorBaseV2::IsVault,
15713 "is_vault_locked" => SharePathErrorBaseV2::IsVaultLocked,
15714 _ => SharePathErrorBaseV2::Other,
15715 };
15716 crate::eat_json_fields(&mut map)?;
15717 Ok(value)
15718 }
15719 }
15720 const VARIANTS: &[&str] = &["is_file",
15721 "inside_shared_folder",
15722 "contains_shared_folder",
15723 "contains_team_folder",
15724 "is_app_folder",
15725 "inside_app_folder",
15726 "is_public_folder",
15727 "inside_public_folder",
15728 "already_shared",
15729 "invalid_path",
15730 "is_osx_package",
15731 "inside_osx_package",
15732 "is_vault",
15733 "is_vault_locked",
15734 "other"];
15735 deserializer.deserialize_struct("SharePathErrorBaseV2", VARIANTS, EnumVisitor)
15736 }
15737}
15738
15739impl ::serde::ser::Serialize for SharePathErrorBaseV2 {
15740 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15741 use serde::ser::SerializeStruct;
15743 match self {
15744 SharePathErrorBaseV2::IsFile => {
15745 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15747 s.serialize_field(".tag", "is_file")?;
15748 s.end()
15749 }
15750 SharePathErrorBaseV2::InsideSharedFolder => {
15751 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15753 s.serialize_field(".tag", "inside_shared_folder")?;
15754 s.end()
15755 }
15756 SharePathErrorBaseV2::ContainsSharedFolder => {
15757 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15759 s.serialize_field(".tag", "contains_shared_folder")?;
15760 s.end()
15761 }
15762 SharePathErrorBaseV2::ContainsTeamFolder => {
15763 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15765 s.serialize_field(".tag", "contains_team_folder")?;
15766 s.end()
15767 }
15768 SharePathErrorBaseV2::IsAppFolder => {
15769 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15771 s.serialize_field(".tag", "is_app_folder")?;
15772 s.end()
15773 }
15774 SharePathErrorBaseV2::InsideAppFolder => {
15775 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15777 s.serialize_field(".tag", "inside_app_folder")?;
15778 s.end()
15779 }
15780 SharePathErrorBaseV2::IsPublicFolder => {
15781 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15783 s.serialize_field(".tag", "is_public_folder")?;
15784 s.end()
15785 }
15786 SharePathErrorBaseV2::InsidePublicFolder => {
15787 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15789 s.serialize_field(".tag", "inside_public_folder")?;
15790 s.end()
15791 }
15792 SharePathErrorBaseV2::AlreadyShared(x) => {
15793 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 19)?;
15795 s.serialize_field(".tag", "already_shared")?;
15796 x.internal_serialize::<S>(&mut s)?;
15797 s.end()
15798 }
15799 SharePathErrorBaseV2::InvalidPath => {
15800 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15802 s.serialize_field(".tag", "invalid_path")?;
15803 s.end()
15804 }
15805 SharePathErrorBaseV2::IsOsxPackage => {
15806 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15808 s.serialize_field(".tag", "is_osx_package")?;
15809 s.end()
15810 }
15811 SharePathErrorBaseV2::InsideOsxPackage => {
15812 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15814 s.serialize_field(".tag", "inside_osx_package")?;
15815 s.end()
15816 }
15817 SharePathErrorBaseV2::IsVault => {
15818 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15820 s.serialize_field(".tag", "is_vault")?;
15821 s.end()
15822 }
15823 SharePathErrorBaseV2::IsVaultLocked => {
15824 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15826 s.serialize_field(".tag", "is_vault_locked")?;
15827 s.end()
15828 }
15829 SharePathErrorBaseV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15830 }
15831 }
15832}
15833
15834#[derive(Debug, Clone, PartialEq, Eq)]
15835#[non_exhaustive] pub enum SharePathErrorV2 {
15837 IsFile,
15839 InsideSharedFolder,
15841 ContainsSharedFolder,
15843 ContainsTeamFolder,
15845 IsAppFolder,
15847 InsideAppFolder,
15849 IsPublicFolder,
15851 InsidePublicFolder,
15853 AlreadyShared(SharedFolderMetadata),
15855 InvalidPath,
15857 IsOsxPackage,
15859 InsideOsxPackage,
15861 IsVault,
15863 IsVaultLocked,
15865 IsFamily,
15867 ContainsAppFolder,
15869 Other,
15872}
15873
15874impl<'de> ::serde::de::Deserialize<'de> for SharePathErrorV2 {
15875 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15876 use serde::de::{self, MapAccess, Visitor};
15878 struct EnumVisitor;
15879 impl<'de> Visitor<'de> for EnumVisitor {
15880 type Value = SharePathErrorV2;
15881 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15882 f.write_str("a SharePathErrorV2 structure")
15883 }
15884 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15885 let tag: &str = match map.next_key()? {
15886 Some(".tag") => map.next_value()?,
15887 _ => return Err(de::Error::missing_field(".tag"))
15888 };
15889 let value = match tag {
15890 "is_file" => SharePathErrorV2::IsFile,
15891 "inside_shared_folder" => SharePathErrorV2::InsideSharedFolder,
15892 "contains_shared_folder" => SharePathErrorV2::ContainsSharedFolder,
15893 "contains_team_folder" => SharePathErrorV2::ContainsTeamFolder,
15894 "is_app_folder" => SharePathErrorV2::IsAppFolder,
15895 "inside_app_folder" => SharePathErrorV2::InsideAppFolder,
15896 "is_public_folder" => SharePathErrorV2::IsPublicFolder,
15897 "inside_public_folder" => SharePathErrorV2::InsidePublicFolder,
15898 "already_shared" => SharePathErrorV2::AlreadyShared(SharedFolderMetadata::internal_deserialize(&mut map)?),
15899 "invalid_path" => SharePathErrorV2::InvalidPath,
15900 "is_osx_package" => SharePathErrorV2::IsOsxPackage,
15901 "inside_osx_package" => SharePathErrorV2::InsideOsxPackage,
15902 "is_vault" => SharePathErrorV2::IsVault,
15903 "is_vault_locked" => SharePathErrorV2::IsVaultLocked,
15904 "is_family" => SharePathErrorV2::IsFamily,
15905 "contains_app_folder" => SharePathErrorV2::ContainsAppFolder,
15906 _ => SharePathErrorV2::Other,
15907 };
15908 crate::eat_json_fields(&mut map)?;
15909 Ok(value)
15910 }
15911 }
15912 const VARIANTS: &[&str] = &["is_file",
15913 "inside_shared_folder",
15914 "contains_shared_folder",
15915 "contains_team_folder",
15916 "is_app_folder",
15917 "inside_app_folder",
15918 "is_public_folder",
15919 "inside_public_folder",
15920 "already_shared",
15921 "invalid_path",
15922 "is_osx_package",
15923 "inside_osx_package",
15924 "is_vault",
15925 "is_vault_locked",
15926 "other",
15927 "is_family",
15928 "contains_app_folder"];
15929 deserializer.deserialize_struct("SharePathErrorV2", VARIANTS, EnumVisitor)
15930 }
15931}
15932
15933impl ::serde::ser::Serialize for SharePathErrorV2 {
15934 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15935 use serde::ser::SerializeStruct;
15937 match self {
15938 SharePathErrorV2::IsFile => {
15939 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15941 s.serialize_field(".tag", "is_file")?;
15942 s.end()
15943 }
15944 SharePathErrorV2::InsideSharedFolder => {
15945 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15947 s.serialize_field(".tag", "inside_shared_folder")?;
15948 s.end()
15949 }
15950 SharePathErrorV2::ContainsSharedFolder => {
15951 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15953 s.serialize_field(".tag", "contains_shared_folder")?;
15954 s.end()
15955 }
15956 SharePathErrorV2::ContainsTeamFolder => {
15957 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15959 s.serialize_field(".tag", "contains_team_folder")?;
15960 s.end()
15961 }
15962 SharePathErrorV2::IsAppFolder => {
15963 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15965 s.serialize_field(".tag", "is_app_folder")?;
15966 s.end()
15967 }
15968 SharePathErrorV2::InsideAppFolder => {
15969 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15971 s.serialize_field(".tag", "inside_app_folder")?;
15972 s.end()
15973 }
15974 SharePathErrorV2::IsPublicFolder => {
15975 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15977 s.serialize_field(".tag", "is_public_folder")?;
15978 s.end()
15979 }
15980 SharePathErrorV2::InsidePublicFolder => {
15981 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15983 s.serialize_field(".tag", "inside_public_folder")?;
15984 s.end()
15985 }
15986 SharePathErrorV2::AlreadyShared(x) => {
15987 let mut s = serializer.serialize_struct("SharePathErrorV2", 19)?;
15989 s.serialize_field(".tag", "already_shared")?;
15990 x.internal_serialize::<S>(&mut s)?;
15991 s.end()
15992 }
15993 SharePathErrorV2::InvalidPath => {
15994 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15996 s.serialize_field(".tag", "invalid_path")?;
15997 s.end()
15998 }
15999 SharePathErrorV2::IsOsxPackage => {
16000 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16002 s.serialize_field(".tag", "is_osx_package")?;
16003 s.end()
16004 }
16005 SharePathErrorV2::InsideOsxPackage => {
16006 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16008 s.serialize_field(".tag", "inside_osx_package")?;
16009 s.end()
16010 }
16011 SharePathErrorV2::IsVault => {
16012 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16014 s.serialize_field(".tag", "is_vault")?;
16015 s.end()
16016 }
16017 SharePathErrorV2::IsVaultLocked => {
16018 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16020 s.serialize_field(".tag", "is_vault_locked")?;
16021 s.end()
16022 }
16023 SharePathErrorV2::IsFamily => {
16024 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16026 s.serialize_field(".tag", "is_family")?;
16027 s.end()
16028 }
16029 SharePathErrorV2::ContainsAppFolder => {
16030 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16032 s.serialize_field(".tag", "contains_app_folder")?;
16033 s.end()
16034 }
16035 SharePathErrorV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
16036 }
16037 }
16038}
16039
16040impl From<SharePathErrorBaseV2> for SharePathErrorV2 {
16042 fn from(parent: SharePathErrorBaseV2) -> Self {
16043 match parent {
16044 SharePathErrorBaseV2::IsFile => SharePathErrorV2::IsFile,
16045 SharePathErrorBaseV2::InsideSharedFolder => SharePathErrorV2::InsideSharedFolder,
16046 SharePathErrorBaseV2::ContainsSharedFolder => SharePathErrorV2::ContainsSharedFolder,
16047 SharePathErrorBaseV2::ContainsTeamFolder => SharePathErrorV2::ContainsTeamFolder,
16048 SharePathErrorBaseV2::IsAppFolder => SharePathErrorV2::IsAppFolder,
16049 SharePathErrorBaseV2::InsideAppFolder => SharePathErrorV2::InsideAppFolder,
16050 SharePathErrorBaseV2::IsPublicFolder => SharePathErrorV2::IsPublicFolder,
16051 SharePathErrorBaseV2::InsidePublicFolder => SharePathErrorV2::InsidePublicFolder,
16052 SharePathErrorBaseV2::AlreadyShared(x) => SharePathErrorV2::AlreadyShared(x),
16053 SharePathErrorBaseV2::InvalidPath => SharePathErrorV2::InvalidPath,
16054 SharePathErrorBaseV2::IsOsxPackage => SharePathErrorV2::IsOsxPackage,
16055 SharePathErrorBaseV2::InsideOsxPackage => SharePathErrorV2::InsideOsxPackage,
16056 SharePathErrorBaseV2::IsVault => SharePathErrorV2::IsVault,
16057 SharePathErrorBaseV2::IsVaultLocked => SharePathErrorV2::IsVaultLocked,
16058 SharePathErrorBaseV2::Other => SharePathErrorV2::Other,
16059 }
16060 }
16061}
16062#[derive(Debug, Clone, PartialEq, Eq)]
16064#[non_exhaustive] pub struct SharedContentLinkMetadata {
16066 pub audience_options: Vec<LinkAudience>,
16071 pub current_audience: LinkAudience,
16073 pub link_permissions: Vec<LinkPermission>,
16075 pub password_protected: bool,
16077 pub url: String,
16079 pub access_level: Option<AccessLevel>,
16081 pub audience_restricting_shared_folder: Option<AudienceRestrictingSharedFolder>,
16083 pub expiry: Option<crate::types::common::DropboxTimestamp>,
16086 pub audience_exceptions: Option<AudienceExceptions>,
16090}
16091
16092impl SharedContentLinkMetadata {
16093 pub fn new(
16094 audience_options: Vec<LinkAudience>,
16095 current_audience: LinkAudience,
16096 link_permissions: Vec<LinkPermission>,
16097 password_protected: bool,
16098 url: String,
16099 ) -> Self {
16100 SharedContentLinkMetadata {
16101 audience_options,
16102 current_audience,
16103 link_permissions,
16104 password_protected,
16105 url,
16106 access_level: None,
16107 audience_restricting_shared_folder: None,
16108 expiry: None,
16109 audience_exceptions: None,
16110 }
16111 }
16112
16113 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
16114 self.access_level = Some(value);
16115 self
16116 }
16117
16118 pub fn with_audience_restricting_shared_folder(
16119 mut self,
16120 value: AudienceRestrictingSharedFolder,
16121 ) -> Self {
16122 self.audience_restricting_shared_folder = Some(value);
16123 self
16124 }
16125
16126 pub fn with_expiry(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
16127 self.expiry = Some(value);
16128 self
16129 }
16130
16131 pub fn with_audience_exceptions(mut self, value: AudienceExceptions) -> Self {
16132 self.audience_exceptions = Some(value);
16133 self
16134 }
16135}
16136
16137const SHARED_CONTENT_LINK_METADATA_FIELDS: &[&str] = &["audience_options",
16138 "current_audience",
16139 "link_permissions",
16140 "password_protected",
16141 "url",
16142 "access_level",
16143 "audience_restricting_shared_folder",
16144 "expiry",
16145 "audience_exceptions"];
16146impl SharedContentLinkMetadata {
16147 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
16148 map: V,
16149 ) -> Result<SharedContentLinkMetadata, V::Error> {
16150 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
16151 }
16152
16153 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
16154 mut map: V,
16155 optional: bool,
16156 ) -> Result<Option<SharedContentLinkMetadata>, V::Error> {
16157 let mut field_audience_options = None;
16158 let mut field_current_audience = None;
16159 let mut field_link_permissions = None;
16160 let mut field_password_protected = None;
16161 let mut field_url = None;
16162 let mut field_access_level = None;
16163 let mut field_audience_restricting_shared_folder = None;
16164 let mut field_expiry = None;
16165 let mut field_audience_exceptions = None;
16166 let mut nothing = true;
16167 while let Some(key) = map.next_key::<&str>()? {
16168 nothing = false;
16169 match key {
16170 "audience_options" => {
16171 if field_audience_options.is_some() {
16172 return Err(::serde::de::Error::duplicate_field("audience_options"));
16173 }
16174 field_audience_options = Some(map.next_value()?);
16175 }
16176 "current_audience" => {
16177 if field_current_audience.is_some() {
16178 return Err(::serde::de::Error::duplicate_field("current_audience"));
16179 }
16180 field_current_audience = Some(map.next_value()?);
16181 }
16182 "link_permissions" => {
16183 if field_link_permissions.is_some() {
16184 return Err(::serde::de::Error::duplicate_field("link_permissions"));
16185 }
16186 field_link_permissions = Some(map.next_value()?);
16187 }
16188 "password_protected" => {
16189 if field_password_protected.is_some() {
16190 return Err(::serde::de::Error::duplicate_field("password_protected"));
16191 }
16192 field_password_protected = Some(map.next_value()?);
16193 }
16194 "url" => {
16195 if field_url.is_some() {
16196 return Err(::serde::de::Error::duplicate_field("url"));
16197 }
16198 field_url = Some(map.next_value()?);
16199 }
16200 "access_level" => {
16201 if field_access_level.is_some() {
16202 return Err(::serde::de::Error::duplicate_field("access_level"));
16203 }
16204 field_access_level = Some(map.next_value()?);
16205 }
16206 "audience_restricting_shared_folder" => {
16207 if field_audience_restricting_shared_folder.is_some() {
16208 return Err(::serde::de::Error::duplicate_field("audience_restricting_shared_folder"));
16209 }
16210 field_audience_restricting_shared_folder = Some(map.next_value()?);
16211 }
16212 "expiry" => {
16213 if field_expiry.is_some() {
16214 return Err(::serde::de::Error::duplicate_field("expiry"));
16215 }
16216 field_expiry = Some(map.next_value()?);
16217 }
16218 "audience_exceptions" => {
16219 if field_audience_exceptions.is_some() {
16220 return Err(::serde::de::Error::duplicate_field("audience_exceptions"));
16221 }
16222 field_audience_exceptions = Some(map.next_value()?);
16223 }
16224 _ => {
16225 map.next_value::<::serde_json::Value>()?;
16227 }
16228 }
16229 }
16230 if optional && nothing {
16231 return Ok(None);
16232 }
16233 let result = SharedContentLinkMetadata {
16234 audience_options: field_audience_options.ok_or_else(|| ::serde::de::Error::missing_field("audience_options"))?,
16235 current_audience: field_current_audience.ok_or_else(|| ::serde::de::Error::missing_field("current_audience"))?,
16236 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
16237 password_protected: field_password_protected.ok_or_else(|| ::serde::de::Error::missing_field("password_protected"))?,
16238 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
16239 access_level: field_access_level.and_then(Option::flatten),
16240 audience_restricting_shared_folder: field_audience_restricting_shared_folder.and_then(Option::flatten),
16241 expiry: field_expiry.and_then(Option::flatten),
16242 audience_exceptions: field_audience_exceptions.and_then(Option::flatten),
16243 };
16244 Ok(Some(result))
16245 }
16246
16247 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
16248 &self,
16249 s: &mut S::SerializeStruct,
16250 ) -> Result<(), S::Error> {
16251 use serde::ser::SerializeStruct;
16252 s.serialize_field("audience_options", &self.audience_options)?;
16253 s.serialize_field("current_audience", &self.current_audience)?;
16254 s.serialize_field("link_permissions", &self.link_permissions)?;
16255 s.serialize_field("password_protected", &self.password_protected)?;
16256 s.serialize_field("url", &self.url)?;
16257 if let Some(val) = &self.access_level {
16258 s.serialize_field("access_level", val)?;
16259 }
16260 if let Some(val) = &self.audience_restricting_shared_folder {
16261 s.serialize_field("audience_restricting_shared_folder", val)?;
16262 }
16263 if let Some(val) = &self.expiry {
16264 s.serialize_field("expiry", val)?;
16265 }
16266 if let Some(val) = &self.audience_exceptions {
16267 s.serialize_field("audience_exceptions", val)?;
16268 }
16269 Ok(())
16270 }
16271}
16272
16273impl<'de> ::serde::de::Deserialize<'de> for SharedContentLinkMetadata {
16274 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16275 use serde::de::{MapAccess, Visitor};
16277 struct StructVisitor;
16278 impl<'de> Visitor<'de> for StructVisitor {
16279 type Value = SharedContentLinkMetadata;
16280 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16281 f.write_str("a SharedContentLinkMetadata struct")
16282 }
16283 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
16284 SharedContentLinkMetadata::internal_deserialize(map)
16285 }
16286 }
16287 deserializer.deserialize_struct("SharedContentLinkMetadata", SHARED_CONTENT_LINK_METADATA_FIELDS, StructVisitor)
16288 }
16289}
16290
16291impl ::serde::ser::Serialize for SharedContentLinkMetadata {
16292 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16293 use serde::ser::SerializeStruct;
16295 let mut s = serializer.serialize_struct("SharedContentLinkMetadata", 9)?;
16296 self.internal_serialize::<S>(&mut s)?;
16297 s.end()
16298 }
16299}
16300
16301impl From<SharedContentLinkMetadata> for SharedContentLinkMetadataBase {
16303 fn from(subtype: SharedContentLinkMetadata) -> Self {
16304 Self {
16305 audience_options: subtype.audience_options,
16306 current_audience: subtype.current_audience,
16307 link_permissions: subtype.link_permissions,
16308 password_protected: subtype.password_protected,
16309 access_level: subtype.access_level,
16310 audience_restricting_shared_folder: subtype.audience_restricting_shared_folder,
16311 expiry: subtype.expiry,
16312 }
16313 }
16314}
16315#[derive(Debug, Clone, PartialEq, Eq)]
16316#[non_exhaustive] pub struct SharedContentLinkMetadataBase {
16318 pub audience_options: Vec<LinkAudience>,
16323 pub current_audience: LinkAudience,
16325 pub link_permissions: Vec<LinkPermission>,
16327 pub password_protected: bool,
16329 pub access_level: Option<AccessLevel>,
16331 pub audience_restricting_shared_folder: Option<AudienceRestrictingSharedFolder>,
16333 pub expiry: Option<crate::types::common::DropboxTimestamp>,
16336}
16337
16338impl SharedContentLinkMetadataBase {
16339 pub fn new(
16340 audience_options: Vec<LinkAudience>,
16341 current_audience: LinkAudience,
16342 link_permissions: Vec<LinkPermission>,
16343 password_protected: bool,
16344 ) -> Self {
16345 SharedContentLinkMetadataBase {
16346 audience_options,
16347 current_audience,
16348 link_permissions,
16349 password_protected,
16350 access_level: None,
16351 audience_restricting_shared_folder: None,
16352 expiry: None,
16353 }
16354 }
16355
16356 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
16357 self.access_level = Some(value);
16358 self
16359 }
16360
16361 pub fn with_audience_restricting_shared_folder(
16362 mut self,
16363 value: AudienceRestrictingSharedFolder,
16364 ) -> Self {
16365 self.audience_restricting_shared_folder = Some(value);
16366 self
16367 }
16368
16369 pub fn with_expiry(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
16370 self.expiry = Some(value);
16371 self
16372 }
16373}
16374
16375const SHARED_CONTENT_LINK_METADATA_BASE_FIELDS: &[&str] = &["audience_options",
16376 "current_audience",
16377 "link_permissions",
16378 "password_protected",
16379 "access_level",
16380 "audience_restricting_shared_folder",
16381 "expiry"];
16382impl SharedContentLinkMetadataBase {
16383 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
16384 map: V,
16385 ) -> Result<SharedContentLinkMetadataBase, V::Error> {
16386 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
16387 }
16388
16389 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
16390 mut map: V,
16391 optional: bool,
16392 ) -> Result<Option<SharedContentLinkMetadataBase>, V::Error> {
16393 let mut field_audience_options = None;
16394 let mut field_current_audience = None;
16395 let mut field_link_permissions = None;
16396 let mut field_password_protected = None;
16397 let mut field_access_level = None;
16398 let mut field_audience_restricting_shared_folder = None;
16399 let mut field_expiry = None;
16400 let mut nothing = true;
16401 while let Some(key) = map.next_key::<&str>()? {
16402 nothing = false;
16403 match key {
16404 "audience_options" => {
16405 if field_audience_options.is_some() {
16406 return Err(::serde::de::Error::duplicate_field("audience_options"));
16407 }
16408 field_audience_options = Some(map.next_value()?);
16409 }
16410 "current_audience" => {
16411 if field_current_audience.is_some() {
16412 return Err(::serde::de::Error::duplicate_field("current_audience"));
16413 }
16414 field_current_audience = Some(map.next_value()?);
16415 }
16416 "link_permissions" => {
16417 if field_link_permissions.is_some() {
16418 return Err(::serde::de::Error::duplicate_field("link_permissions"));
16419 }
16420 field_link_permissions = Some(map.next_value()?);
16421 }
16422 "password_protected" => {
16423 if field_password_protected.is_some() {
16424 return Err(::serde::de::Error::duplicate_field("password_protected"));
16425 }
16426 field_password_protected = Some(map.next_value()?);
16427 }
16428 "access_level" => {
16429 if field_access_level.is_some() {
16430 return Err(::serde::de::Error::duplicate_field("access_level"));
16431 }
16432 field_access_level = Some(map.next_value()?);
16433 }
16434 "audience_restricting_shared_folder" => {
16435 if field_audience_restricting_shared_folder.is_some() {
16436 return Err(::serde::de::Error::duplicate_field("audience_restricting_shared_folder"));
16437 }
16438 field_audience_restricting_shared_folder = Some(map.next_value()?);
16439 }
16440 "expiry" => {
16441 if field_expiry.is_some() {
16442 return Err(::serde::de::Error::duplicate_field("expiry"));
16443 }
16444 field_expiry = Some(map.next_value()?);
16445 }
16446 _ => {
16447 map.next_value::<::serde_json::Value>()?;
16449 }
16450 }
16451 }
16452 if optional && nothing {
16453 return Ok(None);
16454 }
16455 let result = SharedContentLinkMetadataBase {
16456 audience_options: field_audience_options.ok_or_else(|| ::serde::de::Error::missing_field("audience_options"))?,
16457 current_audience: field_current_audience.ok_or_else(|| ::serde::de::Error::missing_field("current_audience"))?,
16458 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
16459 password_protected: field_password_protected.ok_or_else(|| ::serde::de::Error::missing_field("password_protected"))?,
16460 access_level: field_access_level.and_then(Option::flatten),
16461 audience_restricting_shared_folder: field_audience_restricting_shared_folder.and_then(Option::flatten),
16462 expiry: field_expiry.and_then(Option::flatten),
16463 };
16464 Ok(Some(result))
16465 }
16466
16467 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
16468 &self,
16469 s: &mut S::SerializeStruct,
16470 ) -> Result<(), S::Error> {
16471 use serde::ser::SerializeStruct;
16472 s.serialize_field("audience_options", &self.audience_options)?;
16473 s.serialize_field("current_audience", &self.current_audience)?;
16474 s.serialize_field("link_permissions", &self.link_permissions)?;
16475 s.serialize_field("password_protected", &self.password_protected)?;
16476 if let Some(val) = &self.access_level {
16477 s.serialize_field("access_level", val)?;
16478 }
16479 if let Some(val) = &self.audience_restricting_shared_folder {
16480 s.serialize_field("audience_restricting_shared_folder", val)?;
16481 }
16482 if let Some(val) = &self.expiry {
16483 s.serialize_field("expiry", val)?;
16484 }
16485 Ok(())
16486 }
16487}
16488
16489impl<'de> ::serde::de::Deserialize<'de> for SharedContentLinkMetadataBase {
16490 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16491 use serde::de::{MapAccess, Visitor};
16493 struct StructVisitor;
16494 impl<'de> Visitor<'de> for StructVisitor {
16495 type Value = SharedContentLinkMetadataBase;
16496 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16497 f.write_str("a SharedContentLinkMetadataBase struct")
16498 }
16499 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
16500 SharedContentLinkMetadataBase::internal_deserialize(map)
16501 }
16502 }
16503 deserializer.deserialize_struct("SharedContentLinkMetadataBase", SHARED_CONTENT_LINK_METADATA_BASE_FIELDS, StructVisitor)
16504 }
16505}
16506
16507impl ::serde::ser::Serialize for SharedContentLinkMetadataBase {
16508 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16509 use serde::ser::SerializeStruct;
16511 let mut s = serializer.serialize_struct("SharedContentLinkMetadataBase", 7)?;
16512 self.internal_serialize::<S>(&mut s)?;
16513 s.end()
16514 }
16515}
16516
16517#[derive(Debug, Clone, PartialEq, Eq)]
16522#[non_exhaustive] pub struct SharedFileMembers {
16524 pub users: Vec<UserFileMembershipInfo>,
16526 pub groups: Vec<GroupMembershipInfo>,
16528 pub invitees: Vec<InviteeMembershipInfo>,
16530 pub cursor: Option<String>,
16534}
16535
16536impl SharedFileMembers {
16537 pub fn new(
16538 users: Vec<UserFileMembershipInfo>,
16539 groups: Vec<GroupMembershipInfo>,
16540 invitees: Vec<InviteeMembershipInfo>,
16541 ) -> Self {
16542 SharedFileMembers {
16543 users,
16544 groups,
16545 invitees,
16546 cursor: None,
16547 }
16548 }
16549
16550 pub fn with_cursor(mut self, value: String) -> Self {
16551 self.cursor = Some(value);
16552 self
16553 }
16554}
16555
16556const SHARED_FILE_MEMBERS_FIELDS: &[&str] = &["users",
16557 "groups",
16558 "invitees",
16559 "cursor"];
16560impl SharedFileMembers {
16561 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
16562 map: V,
16563 ) -> Result<SharedFileMembers, V::Error> {
16564 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
16565 }
16566
16567 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
16568 mut map: V,
16569 optional: bool,
16570 ) -> Result<Option<SharedFileMembers>, V::Error> {
16571 let mut field_users = None;
16572 let mut field_groups = None;
16573 let mut field_invitees = None;
16574 let mut field_cursor = None;
16575 let mut nothing = true;
16576 while let Some(key) = map.next_key::<&str>()? {
16577 nothing = false;
16578 match key {
16579 "users" => {
16580 if field_users.is_some() {
16581 return Err(::serde::de::Error::duplicate_field("users"));
16582 }
16583 field_users = Some(map.next_value()?);
16584 }
16585 "groups" => {
16586 if field_groups.is_some() {
16587 return Err(::serde::de::Error::duplicate_field("groups"));
16588 }
16589 field_groups = Some(map.next_value()?);
16590 }
16591 "invitees" => {
16592 if field_invitees.is_some() {
16593 return Err(::serde::de::Error::duplicate_field("invitees"));
16594 }
16595 field_invitees = Some(map.next_value()?);
16596 }
16597 "cursor" => {
16598 if field_cursor.is_some() {
16599 return Err(::serde::de::Error::duplicate_field("cursor"));
16600 }
16601 field_cursor = Some(map.next_value()?);
16602 }
16603 _ => {
16604 map.next_value::<::serde_json::Value>()?;
16606 }
16607 }
16608 }
16609 if optional && nothing {
16610 return Ok(None);
16611 }
16612 let result = SharedFileMembers {
16613 users: field_users.ok_or_else(|| ::serde::de::Error::missing_field("users"))?,
16614 groups: field_groups.ok_or_else(|| ::serde::de::Error::missing_field("groups"))?,
16615 invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?,
16616 cursor: field_cursor.and_then(Option::flatten),
16617 };
16618 Ok(Some(result))
16619 }
16620
16621 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
16622 &self,
16623 s: &mut S::SerializeStruct,
16624 ) -> Result<(), S::Error> {
16625 use serde::ser::SerializeStruct;
16626 s.serialize_field("users", &self.users)?;
16627 s.serialize_field("groups", &self.groups)?;
16628 s.serialize_field("invitees", &self.invitees)?;
16629 if let Some(val) = &self.cursor {
16630 s.serialize_field("cursor", val)?;
16631 }
16632 Ok(())
16633 }
16634}
16635
16636impl<'de> ::serde::de::Deserialize<'de> for SharedFileMembers {
16637 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16638 use serde::de::{MapAccess, Visitor};
16640 struct StructVisitor;
16641 impl<'de> Visitor<'de> for StructVisitor {
16642 type Value = SharedFileMembers;
16643 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16644 f.write_str("a SharedFileMembers struct")
16645 }
16646 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
16647 SharedFileMembers::internal_deserialize(map)
16648 }
16649 }
16650 deserializer.deserialize_struct("SharedFileMembers", SHARED_FILE_MEMBERS_FIELDS, StructVisitor)
16651 }
16652}
16653
16654impl ::serde::ser::Serialize for SharedFileMembers {
16655 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16656 use serde::ser::SerializeStruct;
16658 let mut s = serializer.serialize_struct("SharedFileMembers", 4)?;
16659 self.internal_serialize::<S>(&mut s)?;
16660 s.end()
16661 }
16662}
16663
16664#[derive(Debug, Clone, PartialEq, Eq)]
16666#[non_exhaustive] pub struct SharedFileMetadata {
16668 pub id: crate::types::files::FileId,
16670 pub name: String,
16672 pub policy: FolderPolicy,
16674 pub preview_url: String,
16676 pub access_type: Option<AccessLevel>,
16678 pub expected_link_metadata: Option<ExpectedSharedContentLinkMetadata>,
16681 pub link_metadata: Option<SharedContentLinkMetadata>,
16684 pub owner_display_names: Option<Vec<String>>,
16688 pub owner_team: Option<crate::types::users::Team>,
16690 pub parent_shared_folder_id: Option<crate::types::common::SharedFolderId>,
16693 pub path_display: Option<String>,
16697 pub path_lower: Option<String>,
16699 pub permissions: Option<Vec<FilePermission>>,
16703 pub time_invited: Option<crate::types::common::DropboxTimestamp>,
16707}
16708
16709impl SharedFileMetadata {
16710 pub fn new(
16711 id: crate::types::files::FileId,
16712 name: String,
16713 policy: FolderPolicy,
16714 preview_url: String,
16715 ) -> Self {
16716 SharedFileMetadata {
16717 id,
16718 name,
16719 policy,
16720 preview_url,
16721 access_type: None,
16722 expected_link_metadata: None,
16723 link_metadata: None,
16724 owner_display_names: None,
16725 owner_team: None,
16726 parent_shared_folder_id: None,
16727 path_display: None,
16728 path_lower: None,
16729 permissions: None,
16730 time_invited: None,
16731 }
16732 }
16733
16734 pub fn with_access_type(mut self, value: AccessLevel) -> Self {
16735 self.access_type = Some(value);
16736 self
16737 }
16738
16739 pub fn with_expected_link_metadata(
16740 mut self,
16741 value: ExpectedSharedContentLinkMetadata,
16742 ) -> Self {
16743 self.expected_link_metadata = Some(value);
16744 self
16745 }
16746
16747 pub fn with_link_metadata(mut self, value: SharedContentLinkMetadata) -> Self {
16748 self.link_metadata = Some(value);
16749 self
16750 }
16751
16752 pub fn with_owner_display_names(mut self, value: Vec<String>) -> Self {
16753 self.owner_display_names = Some(value);
16754 self
16755 }
16756
16757 pub fn with_owner_team(mut self, value: crate::types::users::Team) -> Self {
16758 self.owner_team = Some(value);
16759 self
16760 }
16761
16762 pub fn with_parent_shared_folder_id(
16763 mut self,
16764 value: crate::types::common::SharedFolderId,
16765 ) -> Self {
16766 self.parent_shared_folder_id = Some(value);
16767 self
16768 }
16769
16770 pub fn with_path_display(mut self, value: String) -> Self {
16771 self.path_display = Some(value);
16772 self
16773 }
16774
16775 pub fn with_path_lower(mut self, value: String) -> Self {
16776 self.path_lower = Some(value);
16777 self
16778 }
16779
16780 pub fn with_permissions(mut self, value: Vec<FilePermission>) -> Self {
16781 self.permissions = Some(value);
16782 self
16783 }
16784
16785 pub fn with_time_invited(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
16786 self.time_invited = Some(value);
16787 self
16788 }
16789}
16790
16791const SHARED_FILE_METADATA_FIELDS: &[&str] = &["id",
16792 "name",
16793 "policy",
16794 "preview_url",
16795 "access_type",
16796 "expected_link_metadata",
16797 "link_metadata",
16798 "owner_display_names",
16799 "owner_team",
16800 "parent_shared_folder_id",
16801 "path_display",
16802 "path_lower",
16803 "permissions",
16804 "time_invited"];
16805impl SharedFileMetadata {
16806 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
16807 map: V,
16808 ) -> Result<SharedFileMetadata, V::Error> {
16809 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
16810 }
16811
16812 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
16813 mut map: V,
16814 optional: bool,
16815 ) -> Result<Option<SharedFileMetadata>, V::Error> {
16816 let mut field_id = None;
16817 let mut field_name = None;
16818 let mut field_policy = None;
16819 let mut field_preview_url = None;
16820 let mut field_access_type = None;
16821 let mut field_expected_link_metadata = None;
16822 let mut field_link_metadata = None;
16823 let mut field_owner_display_names = None;
16824 let mut field_owner_team = None;
16825 let mut field_parent_shared_folder_id = None;
16826 let mut field_path_display = None;
16827 let mut field_path_lower = None;
16828 let mut field_permissions = None;
16829 let mut field_time_invited = None;
16830 let mut nothing = true;
16831 while let Some(key) = map.next_key::<&str>()? {
16832 nothing = false;
16833 match key {
16834 "id" => {
16835 if field_id.is_some() {
16836 return Err(::serde::de::Error::duplicate_field("id"));
16837 }
16838 field_id = Some(map.next_value()?);
16839 }
16840 "name" => {
16841 if field_name.is_some() {
16842 return Err(::serde::de::Error::duplicate_field("name"));
16843 }
16844 field_name = Some(map.next_value()?);
16845 }
16846 "policy" => {
16847 if field_policy.is_some() {
16848 return Err(::serde::de::Error::duplicate_field("policy"));
16849 }
16850 field_policy = Some(map.next_value()?);
16851 }
16852 "preview_url" => {
16853 if field_preview_url.is_some() {
16854 return Err(::serde::de::Error::duplicate_field("preview_url"));
16855 }
16856 field_preview_url = Some(map.next_value()?);
16857 }
16858 "access_type" => {
16859 if field_access_type.is_some() {
16860 return Err(::serde::de::Error::duplicate_field("access_type"));
16861 }
16862 field_access_type = Some(map.next_value()?);
16863 }
16864 "expected_link_metadata" => {
16865 if field_expected_link_metadata.is_some() {
16866 return Err(::serde::de::Error::duplicate_field("expected_link_metadata"));
16867 }
16868 field_expected_link_metadata = Some(map.next_value()?);
16869 }
16870 "link_metadata" => {
16871 if field_link_metadata.is_some() {
16872 return Err(::serde::de::Error::duplicate_field("link_metadata"));
16873 }
16874 field_link_metadata = Some(map.next_value()?);
16875 }
16876 "owner_display_names" => {
16877 if field_owner_display_names.is_some() {
16878 return Err(::serde::de::Error::duplicate_field("owner_display_names"));
16879 }
16880 field_owner_display_names = Some(map.next_value()?);
16881 }
16882 "owner_team" => {
16883 if field_owner_team.is_some() {
16884 return Err(::serde::de::Error::duplicate_field("owner_team"));
16885 }
16886 field_owner_team = Some(map.next_value()?);
16887 }
16888 "parent_shared_folder_id" => {
16889 if field_parent_shared_folder_id.is_some() {
16890 return Err(::serde::de::Error::duplicate_field("parent_shared_folder_id"));
16891 }
16892 field_parent_shared_folder_id = Some(map.next_value()?);
16893 }
16894 "path_display" => {
16895 if field_path_display.is_some() {
16896 return Err(::serde::de::Error::duplicate_field("path_display"));
16897 }
16898 field_path_display = Some(map.next_value()?);
16899 }
16900 "path_lower" => {
16901 if field_path_lower.is_some() {
16902 return Err(::serde::de::Error::duplicate_field("path_lower"));
16903 }
16904 field_path_lower = Some(map.next_value()?);
16905 }
16906 "permissions" => {
16907 if field_permissions.is_some() {
16908 return Err(::serde::de::Error::duplicate_field("permissions"));
16909 }
16910 field_permissions = Some(map.next_value()?);
16911 }
16912 "time_invited" => {
16913 if field_time_invited.is_some() {
16914 return Err(::serde::de::Error::duplicate_field("time_invited"));
16915 }
16916 field_time_invited = Some(map.next_value()?);
16917 }
16918 _ => {
16919 map.next_value::<::serde_json::Value>()?;
16921 }
16922 }
16923 }
16924 if optional && nothing {
16925 return Ok(None);
16926 }
16927 let result = SharedFileMetadata {
16928 id: field_id.ok_or_else(|| ::serde::de::Error::missing_field("id"))?,
16929 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
16930 policy: field_policy.ok_or_else(|| ::serde::de::Error::missing_field("policy"))?,
16931 preview_url: field_preview_url.ok_or_else(|| ::serde::de::Error::missing_field("preview_url"))?,
16932 access_type: field_access_type.and_then(Option::flatten),
16933 expected_link_metadata: field_expected_link_metadata.and_then(Option::flatten),
16934 link_metadata: field_link_metadata.and_then(Option::flatten),
16935 owner_display_names: field_owner_display_names.and_then(Option::flatten),
16936 owner_team: field_owner_team.and_then(Option::flatten),
16937 parent_shared_folder_id: field_parent_shared_folder_id.and_then(Option::flatten),
16938 path_display: field_path_display.and_then(Option::flatten),
16939 path_lower: field_path_lower.and_then(Option::flatten),
16940 permissions: field_permissions.and_then(Option::flatten),
16941 time_invited: field_time_invited.and_then(Option::flatten),
16942 };
16943 Ok(Some(result))
16944 }
16945
16946 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
16947 &self,
16948 s: &mut S::SerializeStruct,
16949 ) -> Result<(), S::Error> {
16950 use serde::ser::SerializeStruct;
16951 s.serialize_field("id", &self.id)?;
16952 s.serialize_field("name", &self.name)?;
16953 s.serialize_field("policy", &self.policy)?;
16954 s.serialize_field("preview_url", &self.preview_url)?;
16955 if let Some(val) = &self.access_type {
16956 s.serialize_field("access_type", val)?;
16957 }
16958 if let Some(val) = &self.expected_link_metadata {
16959 s.serialize_field("expected_link_metadata", val)?;
16960 }
16961 if let Some(val) = &self.link_metadata {
16962 s.serialize_field("link_metadata", val)?;
16963 }
16964 if let Some(val) = &self.owner_display_names {
16965 s.serialize_field("owner_display_names", val)?;
16966 }
16967 if let Some(val) = &self.owner_team {
16968 s.serialize_field("owner_team", val)?;
16969 }
16970 if let Some(val) = &self.parent_shared_folder_id {
16971 s.serialize_field("parent_shared_folder_id", val)?;
16972 }
16973 if let Some(val) = &self.path_display {
16974 s.serialize_field("path_display", val)?;
16975 }
16976 if let Some(val) = &self.path_lower {
16977 s.serialize_field("path_lower", val)?;
16978 }
16979 if let Some(val) = &self.permissions {
16980 s.serialize_field("permissions", val)?;
16981 }
16982 if let Some(val) = &self.time_invited {
16983 s.serialize_field("time_invited", val)?;
16984 }
16985 Ok(())
16986 }
16987}
16988
16989impl<'de> ::serde::de::Deserialize<'de> for SharedFileMetadata {
16990 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16991 use serde::de::{MapAccess, Visitor};
16993 struct StructVisitor;
16994 impl<'de> Visitor<'de> for StructVisitor {
16995 type Value = SharedFileMetadata;
16996 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16997 f.write_str("a SharedFileMetadata struct")
16998 }
16999 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
17000 SharedFileMetadata::internal_deserialize(map)
17001 }
17002 }
17003 deserializer.deserialize_struct("SharedFileMetadata", SHARED_FILE_METADATA_FIELDS, StructVisitor)
17004 }
17005}
17006
17007impl ::serde::ser::Serialize for SharedFileMetadata {
17008 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17009 use serde::ser::SerializeStruct;
17011 let mut s = serializer.serialize_struct("SharedFileMetadata", 14)?;
17012 self.internal_serialize::<S>(&mut s)?;
17013 s.end()
17014 }
17015}
17016
17017#[derive(Debug, Clone, PartialEq, Eq)]
17019#[non_exhaustive] pub enum SharedFolderAccessError {
17021 InvalidId,
17023 NotAMember,
17025 InvalidMember,
17027 EmailUnverified,
17029 Unmounted,
17031 Other,
17034}
17035
17036impl<'de> ::serde::de::Deserialize<'de> for SharedFolderAccessError {
17037 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17038 use serde::de::{self, MapAccess, Visitor};
17040 struct EnumVisitor;
17041 impl<'de> Visitor<'de> for EnumVisitor {
17042 type Value = SharedFolderAccessError;
17043 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17044 f.write_str("a SharedFolderAccessError structure")
17045 }
17046 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
17047 let tag: &str = match map.next_key()? {
17048 Some(".tag") => map.next_value()?,
17049 _ => return Err(de::Error::missing_field(".tag"))
17050 };
17051 let value = match tag {
17052 "invalid_id" => SharedFolderAccessError::InvalidId,
17053 "not_a_member" => SharedFolderAccessError::NotAMember,
17054 "invalid_member" => SharedFolderAccessError::InvalidMember,
17055 "email_unverified" => SharedFolderAccessError::EmailUnverified,
17056 "unmounted" => SharedFolderAccessError::Unmounted,
17057 _ => SharedFolderAccessError::Other,
17058 };
17059 crate::eat_json_fields(&mut map)?;
17060 Ok(value)
17061 }
17062 }
17063 const VARIANTS: &[&str] = &["invalid_id",
17064 "not_a_member",
17065 "invalid_member",
17066 "email_unverified",
17067 "unmounted",
17068 "other"];
17069 deserializer.deserialize_struct("SharedFolderAccessError", VARIANTS, EnumVisitor)
17070 }
17071}
17072
17073impl ::serde::ser::Serialize for SharedFolderAccessError {
17074 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17075 use serde::ser::SerializeStruct;
17077 match self {
17078 SharedFolderAccessError::InvalidId => {
17079 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
17081 s.serialize_field(".tag", "invalid_id")?;
17082 s.end()
17083 }
17084 SharedFolderAccessError::NotAMember => {
17085 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
17087 s.serialize_field(".tag", "not_a_member")?;
17088 s.end()
17089 }
17090 SharedFolderAccessError::InvalidMember => {
17091 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
17093 s.serialize_field(".tag", "invalid_member")?;
17094 s.end()
17095 }
17096 SharedFolderAccessError::EmailUnverified => {
17097 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
17099 s.serialize_field(".tag", "email_unverified")?;
17100 s.end()
17101 }
17102 SharedFolderAccessError::Unmounted => {
17103 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
17105 s.serialize_field(".tag", "unmounted")?;
17106 s.end()
17107 }
17108 SharedFolderAccessError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
17109 }
17110 }
17111}
17112
17113impl ::std::error::Error for SharedFolderAccessError {
17114}
17115
17116impl ::std::fmt::Display for SharedFolderAccessError {
17117 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17118 match self {
17119 SharedFolderAccessError::InvalidId => f.write_str("This shared folder ID is invalid."),
17120 SharedFolderAccessError::NotAMember => f.write_str("The user is not a member of the shared folder thus cannot access it."),
17121 SharedFolderAccessError::InvalidMember => f.write_str("The user does not exist or their account is disabled."),
17122 SharedFolderAccessError::EmailUnverified => f.write_str("Never set."),
17123 SharedFolderAccessError::Unmounted => f.write_str("The shared folder is unmounted."),
17124 _ => write!(f, "{:?}", *self),
17125 }
17126 }
17127}
17128
17129#[derive(Debug, Clone, PartialEq, Eq)]
17130#[non_exhaustive] pub enum SharedFolderMemberError {
17132 InvalidDropboxId,
17134 NotAMember,
17136 NoExplicitAccess(MemberAccessLevelResult),
17138 Other,
17141}
17142
17143impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMemberError {
17144 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17145 use serde::de::{self, MapAccess, Visitor};
17147 struct EnumVisitor;
17148 impl<'de> Visitor<'de> for EnumVisitor {
17149 type Value = SharedFolderMemberError;
17150 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17151 f.write_str("a SharedFolderMemberError structure")
17152 }
17153 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
17154 let tag: &str = match map.next_key()? {
17155 Some(".tag") => map.next_value()?,
17156 _ => return Err(de::Error::missing_field(".tag"))
17157 };
17158 let value = match tag {
17159 "invalid_dropbox_id" => SharedFolderMemberError::InvalidDropboxId,
17160 "not_a_member" => SharedFolderMemberError::NotAMember,
17161 "no_explicit_access" => SharedFolderMemberError::NoExplicitAccess(MemberAccessLevelResult::internal_deserialize(&mut map)?),
17162 _ => SharedFolderMemberError::Other,
17163 };
17164 crate::eat_json_fields(&mut map)?;
17165 Ok(value)
17166 }
17167 }
17168 const VARIANTS: &[&str] = &["invalid_dropbox_id",
17169 "not_a_member",
17170 "no_explicit_access",
17171 "other"];
17172 deserializer.deserialize_struct("SharedFolderMemberError", VARIANTS, EnumVisitor)
17173 }
17174}
17175
17176impl ::serde::ser::Serialize for SharedFolderMemberError {
17177 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17178 use serde::ser::SerializeStruct;
17180 match self {
17181 SharedFolderMemberError::InvalidDropboxId => {
17182 let mut s = serializer.serialize_struct("SharedFolderMemberError", 1)?;
17184 s.serialize_field(".tag", "invalid_dropbox_id")?;
17185 s.end()
17186 }
17187 SharedFolderMemberError::NotAMember => {
17188 let mut s = serializer.serialize_struct("SharedFolderMemberError", 1)?;
17190 s.serialize_field(".tag", "not_a_member")?;
17191 s.end()
17192 }
17193 SharedFolderMemberError::NoExplicitAccess(x) => {
17194 let mut s = serializer.serialize_struct("SharedFolderMemberError", 4)?;
17196 s.serialize_field(".tag", "no_explicit_access")?;
17197 x.internal_serialize::<S>(&mut s)?;
17198 s.end()
17199 }
17200 SharedFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
17201 }
17202 }
17203}
17204
17205impl ::std::error::Error for SharedFolderMemberError {
17206}
17207
17208impl ::std::fmt::Display for SharedFolderMemberError {
17209 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17210 match self {
17211 SharedFolderMemberError::InvalidDropboxId => f.write_str("The target dropbox_id is invalid."),
17212 SharedFolderMemberError::NotAMember => f.write_str("The target dropbox_id is not a member of the shared folder."),
17213 SharedFolderMemberError::NoExplicitAccess(inner) => write!(f, "The target member only has inherited access to the shared folder: {:?}", inner),
17214 _ => write!(f, "{:?}", *self),
17215 }
17216 }
17217}
17218
17219#[derive(Debug, Clone, PartialEq, Eq)]
17221#[non_exhaustive] pub struct SharedFolderMembers {
17223 pub users: Vec<UserMembershipInfo>,
17225 pub groups: Vec<GroupMembershipInfo>,
17227 pub invitees: Vec<InviteeMembershipInfo>,
17229 pub cursor: Option<String>,
17234}
17235
17236impl SharedFolderMembers {
17237 pub fn new(
17238 users: Vec<UserMembershipInfo>,
17239 groups: Vec<GroupMembershipInfo>,
17240 invitees: Vec<InviteeMembershipInfo>,
17241 ) -> Self {
17242 SharedFolderMembers {
17243 users,
17244 groups,
17245 invitees,
17246 cursor: None,
17247 }
17248 }
17249
17250 pub fn with_cursor(mut self, value: String) -> Self {
17251 self.cursor = Some(value);
17252 self
17253 }
17254}
17255
17256const SHARED_FOLDER_MEMBERS_FIELDS: &[&str] = &["users",
17257 "groups",
17258 "invitees",
17259 "cursor"];
17260impl SharedFolderMembers {
17261 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
17262 map: V,
17263 ) -> Result<SharedFolderMembers, V::Error> {
17264 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
17265 }
17266
17267 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
17268 mut map: V,
17269 optional: bool,
17270 ) -> Result<Option<SharedFolderMembers>, V::Error> {
17271 let mut field_users = None;
17272 let mut field_groups = None;
17273 let mut field_invitees = None;
17274 let mut field_cursor = None;
17275 let mut nothing = true;
17276 while let Some(key) = map.next_key::<&str>()? {
17277 nothing = false;
17278 match key {
17279 "users" => {
17280 if field_users.is_some() {
17281 return Err(::serde::de::Error::duplicate_field("users"));
17282 }
17283 field_users = Some(map.next_value()?);
17284 }
17285 "groups" => {
17286 if field_groups.is_some() {
17287 return Err(::serde::de::Error::duplicate_field("groups"));
17288 }
17289 field_groups = Some(map.next_value()?);
17290 }
17291 "invitees" => {
17292 if field_invitees.is_some() {
17293 return Err(::serde::de::Error::duplicate_field("invitees"));
17294 }
17295 field_invitees = Some(map.next_value()?);
17296 }
17297 "cursor" => {
17298 if field_cursor.is_some() {
17299 return Err(::serde::de::Error::duplicate_field("cursor"));
17300 }
17301 field_cursor = Some(map.next_value()?);
17302 }
17303 _ => {
17304 map.next_value::<::serde_json::Value>()?;
17306 }
17307 }
17308 }
17309 if optional && nothing {
17310 return Ok(None);
17311 }
17312 let result = SharedFolderMembers {
17313 users: field_users.ok_or_else(|| ::serde::de::Error::missing_field("users"))?,
17314 groups: field_groups.ok_or_else(|| ::serde::de::Error::missing_field("groups"))?,
17315 invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?,
17316 cursor: field_cursor.and_then(Option::flatten),
17317 };
17318 Ok(Some(result))
17319 }
17320
17321 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
17322 &self,
17323 s: &mut S::SerializeStruct,
17324 ) -> Result<(), S::Error> {
17325 use serde::ser::SerializeStruct;
17326 s.serialize_field("users", &self.users)?;
17327 s.serialize_field("groups", &self.groups)?;
17328 s.serialize_field("invitees", &self.invitees)?;
17329 if let Some(val) = &self.cursor {
17330 s.serialize_field("cursor", val)?;
17331 }
17332 Ok(())
17333 }
17334}
17335
17336impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMembers {
17337 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17338 use serde::de::{MapAccess, Visitor};
17340 struct StructVisitor;
17341 impl<'de> Visitor<'de> for StructVisitor {
17342 type Value = SharedFolderMembers;
17343 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17344 f.write_str("a SharedFolderMembers struct")
17345 }
17346 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
17347 SharedFolderMembers::internal_deserialize(map)
17348 }
17349 }
17350 deserializer.deserialize_struct("SharedFolderMembers", SHARED_FOLDER_MEMBERS_FIELDS, StructVisitor)
17351 }
17352}
17353
17354impl ::serde::ser::Serialize for SharedFolderMembers {
17355 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17356 use serde::ser::SerializeStruct;
17358 let mut s = serializer.serialize_struct("SharedFolderMembers", 4)?;
17359 self.internal_serialize::<S>(&mut s)?;
17360 s.end()
17361 }
17362}
17363
17364#[derive(Debug, Clone, PartialEq, Eq)]
17366#[non_exhaustive] pub struct SharedFolderMetadata {
17368 pub access_type: AccessLevel,
17370 pub is_inside_team_folder: bool,
17372 pub is_team_folder: bool,
17374 pub name: String,
17376 pub policy: FolderPolicy,
17378 pub preview_url: String,
17380 pub shared_folder_id: crate::types::common::SharedFolderId,
17382 pub time_invited: crate::types::common::DropboxTimestamp,
17384 pub owner_display_names: Option<Vec<String>>,
17388 pub owner_team: Option<crate::types::users::Team>,
17391 pub parent_shared_folder_id: Option<crate::types::common::SharedFolderId>,
17394 pub path_display: Option<String>,
17396 pub path_lower: Option<String>,
17398 pub parent_folder_name: Option<String>,
17400 pub link_metadata: Option<SharedContentLinkMetadata>,
17403 pub permissions: Option<Vec<FolderPermission>>,
17406 pub access_inheritance: AccessInheritance,
17408 pub folder_id: Option<crate::types::files::FileId>,
17410}
17411
17412impl SharedFolderMetadata {
17413 pub fn new(
17414 access_type: AccessLevel,
17415 is_inside_team_folder: bool,
17416 is_team_folder: bool,
17417 name: String,
17418 policy: FolderPolicy,
17419 preview_url: String,
17420 shared_folder_id: crate::types::common::SharedFolderId,
17421 time_invited: crate::types::common::DropboxTimestamp,
17422 ) -> Self {
17423 SharedFolderMetadata {
17424 access_type,
17425 is_inside_team_folder,
17426 is_team_folder,
17427 name,
17428 policy,
17429 preview_url,
17430 shared_folder_id,
17431 time_invited,
17432 owner_display_names: None,
17433 owner_team: None,
17434 parent_shared_folder_id: None,
17435 path_display: None,
17436 path_lower: None,
17437 parent_folder_name: None,
17438 link_metadata: None,
17439 permissions: None,
17440 access_inheritance: AccessInheritance::Inherit,
17441 folder_id: None,
17442 }
17443 }
17444
17445 pub fn with_owner_display_names(mut self, value: Vec<String>) -> Self {
17446 self.owner_display_names = Some(value);
17447 self
17448 }
17449
17450 pub fn with_owner_team(mut self, value: crate::types::users::Team) -> Self {
17451 self.owner_team = Some(value);
17452 self
17453 }
17454
17455 pub fn with_parent_shared_folder_id(
17456 mut self,
17457 value: crate::types::common::SharedFolderId,
17458 ) -> Self {
17459 self.parent_shared_folder_id = Some(value);
17460 self
17461 }
17462
17463 pub fn with_path_display(mut self, value: String) -> Self {
17464 self.path_display = Some(value);
17465 self
17466 }
17467
17468 pub fn with_path_lower(mut self, value: String) -> Self {
17469 self.path_lower = Some(value);
17470 self
17471 }
17472
17473 pub fn with_parent_folder_name(mut self, value: String) -> Self {
17474 self.parent_folder_name = Some(value);
17475 self
17476 }
17477
17478 pub fn with_link_metadata(mut self, value: SharedContentLinkMetadata) -> Self {
17479 self.link_metadata = Some(value);
17480 self
17481 }
17482
17483 pub fn with_permissions(mut self, value: Vec<FolderPermission>) -> Self {
17484 self.permissions = Some(value);
17485 self
17486 }
17487
17488 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
17489 self.access_inheritance = value;
17490 self
17491 }
17492
17493 pub fn with_folder_id(mut self, value: crate::types::files::FileId) -> Self {
17494 self.folder_id = Some(value);
17495 self
17496 }
17497}
17498
17499const SHARED_FOLDER_METADATA_FIELDS: &[&str] = &["access_type",
17500 "is_inside_team_folder",
17501 "is_team_folder",
17502 "name",
17503 "policy",
17504 "preview_url",
17505 "shared_folder_id",
17506 "time_invited",
17507 "owner_display_names",
17508 "owner_team",
17509 "parent_shared_folder_id",
17510 "path_display",
17511 "path_lower",
17512 "parent_folder_name",
17513 "link_metadata",
17514 "permissions",
17515 "access_inheritance",
17516 "folder_id"];
17517impl SharedFolderMetadata {
17518 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
17519 map: V,
17520 ) -> Result<SharedFolderMetadata, V::Error> {
17521 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
17522 }
17523
17524 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
17525 mut map: V,
17526 optional: bool,
17527 ) -> Result<Option<SharedFolderMetadata>, V::Error> {
17528 let mut field_access_type = None;
17529 let mut field_is_inside_team_folder = None;
17530 let mut field_is_team_folder = None;
17531 let mut field_name = None;
17532 let mut field_policy = None;
17533 let mut field_preview_url = None;
17534 let mut field_shared_folder_id = None;
17535 let mut field_time_invited = None;
17536 let mut field_owner_display_names = None;
17537 let mut field_owner_team = None;
17538 let mut field_parent_shared_folder_id = None;
17539 let mut field_path_display = None;
17540 let mut field_path_lower = None;
17541 let mut field_parent_folder_name = None;
17542 let mut field_link_metadata = None;
17543 let mut field_permissions = None;
17544 let mut field_access_inheritance = None;
17545 let mut field_folder_id = None;
17546 let mut nothing = true;
17547 while let Some(key) = map.next_key::<&str>()? {
17548 nothing = false;
17549 match key {
17550 "access_type" => {
17551 if field_access_type.is_some() {
17552 return Err(::serde::de::Error::duplicate_field("access_type"));
17553 }
17554 field_access_type = Some(map.next_value()?);
17555 }
17556 "is_inside_team_folder" => {
17557 if field_is_inside_team_folder.is_some() {
17558 return Err(::serde::de::Error::duplicate_field("is_inside_team_folder"));
17559 }
17560 field_is_inside_team_folder = Some(map.next_value()?);
17561 }
17562 "is_team_folder" => {
17563 if field_is_team_folder.is_some() {
17564 return Err(::serde::de::Error::duplicate_field("is_team_folder"));
17565 }
17566 field_is_team_folder = Some(map.next_value()?);
17567 }
17568 "name" => {
17569 if field_name.is_some() {
17570 return Err(::serde::de::Error::duplicate_field("name"));
17571 }
17572 field_name = Some(map.next_value()?);
17573 }
17574 "policy" => {
17575 if field_policy.is_some() {
17576 return Err(::serde::de::Error::duplicate_field("policy"));
17577 }
17578 field_policy = Some(map.next_value()?);
17579 }
17580 "preview_url" => {
17581 if field_preview_url.is_some() {
17582 return Err(::serde::de::Error::duplicate_field("preview_url"));
17583 }
17584 field_preview_url = Some(map.next_value()?);
17585 }
17586 "shared_folder_id" => {
17587 if field_shared_folder_id.is_some() {
17588 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
17589 }
17590 field_shared_folder_id = Some(map.next_value()?);
17591 }
17592 "time_invited" => {
17593 if field_time_invited.is_some() {
17594 return Err(::serde::de::Error::duplicate_field("time_invited"));
17595 }
17596 field_time_invited = Some(map.next_value()?);
17597 }
17598 "owner_display_names" => {
17599 if field_owner_display_names.is_some() {
17600 return Err(::serde::de::Error::duplicate_field("owner_display_names"));
17601 }
17602 field_owner_display_names = Some(map.next_value()?);
17603 }
17604 "owner_team" => {
17605 if field_owner_team.is_some() {
17606 return Err(::serde::de::Error::duplicate_field("owner_team"));
17607 }
17608 field_owner_team = Some(map.next_value()?);
17609 }
17610 "parent_shared_folder_id" => {
17611 if field_parent_shared_folder_id.is_some() {
17612 return Err(::serde::de::Error::duplicate_field("parent_shared_folder_id"));
17613 }
17614 field_parent_shared_folder_id = Some(map.next_value()?);
17615 }
17616 "path_display" => {
17617 if field_path_display.is_some() {
17618 return Err(::serde::de::Error::duplicate_field("path_display"));
17619 }
17620 field_path_display = Some(map.next_value()?);
17621 }
17622 "path_lower" => {
17623 if field_path_lower.is_some() {
17624 return Err(::serde::de::Error::duplicate_field("path_lower"));
17625 }
17626 field_path_lower = Some(map.next_value()?);
17627 }
17628 "parent_folder_name" => {
17629 if field_parent_folder_name.is_some() {
17630 return Err(::serde::de::Error::duplicate_field("parent_folder_name"));
17631 }
17632 field_parent_folder_name = Some(map.next_value()?);
17633 }
17634 "link_metadata" => {
17635 if field_link_metadata.is_some() {
17636 return Err(::serde::de::Error::duplicate_field("link_metadata"));
17637 }
17638 field_link_metadata = Some(map.next_value()?);
17639 }
17640 "permissions" => {
17641 if field_permissions.is_some() {
17642 return Err(::serde::de::Error::duplicate_field("permissions"));
17643 }
17644 field_permissions = Some(map.next_value()?);
17645 }
17646 "access_inheritance" => {
17647 if field_access_inheritance.is_some() {
17648 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
17649 }
17650 field_access_inheritance = Some(map.next_value()?);
17651 }
17652 "folder_id" => {
17653 if field_folder_id.is_some() {
17654 return Err(::serde::de::Error::duplicate_field("folder_id"));
17655 }
17656 field_folder_id = Some(map.next_value()?);
17657 }
17658 _ => {
17659 map.next_value::<::serde_json::Value>()?;
17661 }
17662 }
17663 }
17664 if optional && nothing {
17665 return Ok(None);
17666 }
17667 let result = SharedFolderMetadata {
17668 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
17669 is_inside_team_folder: field_is_inside_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_inside_team_folder"))?,
17670 is_team_folder: field_is_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_team_folder"))?,
17671 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
17672 policy: field_policy.ok_or_else(|| ::serde::de::Error::missing_field("policy"))?,
17673 preview_url: field_preview_url.ok_or_else(|| ::serde::de::Error::missing_field("preview_url"))?,
17674 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
17675 time_invited: field_time_invited.ok_or_else(|| ::serde::de::Error::missing_field("time_invited"))?,
17676 owner_display_names: field_owner_display_names.and_then(Option::flatten),
17677 owner_team: field_owner_team.and_then(Option::flatten),
17678 parent_shared_folder_id: field_parent_shared_folder_id.and_then(Option::flatten),
17679 path_display: field_path_display.and_then(Option::flatten),
17680 path_lower: field_path_lower.and_then(Option::flatten),
17681 parent_folder_name: field_parent_folder_name.and_then(Option::flatten),
17682 link_metadata: field_link_metadata.and_then(Option::flatten),
17683 permissions: field_permissions.and_then(Option::flatten),
17684 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
17685 folder_id: field_folder_id.and_then(Option::flatten),
17686 };
17687 Ok(Some(result))
17688 }
17689
17690 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
17691 &self,
17692 s: &mut S::SerializeStruct,
17693 ) -> Result<(), S::Error> {
17694 use serde::ser::SerializeStruct;
17695 s.serialize_field("access_type", &self.access_type)?;
17696 s.serialize_field("is_inside_team_folder", &self.is_inside_team_folder)?;
17697 s.serialize_field("is_team_folder", &self.is_team_folder)?;
17698 s.serialize_field("name", &self.name)?;
17699 s.serialize_field("policy", &self.policy)?;
17700 s.serialize_field("preview_url", &self.preview_url)?;
17701 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
17702 s.serialize_field("time_invited", &self.time_invited)?;
17703 if let Some(val) = &self.owner_display_names {
17704 s.serialize_field("owner_display_names", val)?;
17705 }
17706 if let Some(val) = &self.owner_team {
17707 s.serialize_field("owner_team", val)?;
17708 }
17709 if let Some(val) = &self.parent_shared_folder_id {
17710 s.serialize_field("parent_shared_folder_id", val)?;
17711 }
17712 if let Some(val) = &self.path_display {
17713 s.serialize_field("path_display", val)?;
17714 }
17715 if let Some(val) = &self.path_lower {
17716 s.serialize_field("path_lower", val)?;
17717 }
17718 if let Some(val) = &self.parent_folder_name {
17719 s.serialize_field("parent_folder_name", val)?;
17720 }
17721 if let Some(val) = &self.link_metadata {
17722 s.serialize_field("link_metadata", val)?;
17723 }
17724 if let Some(val) = &self.permissions {
17725 s.serialize_field("permissions", val)?;
17726 }
17727 if self.access_inheritance != AccessInheritance::Inherit {
17728 s.serialize_field("access_inheritance", &self.access_inheritance)?;
17729 }
17730 if let Some(val) = &self.folder_id {
17731 s.serialize_field("folder_id", val)?;
17732 }
17733 Ok(())
17734 }
17735}
17736
17737impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMetadata {
17738 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17739 use serde::de::{MapAccess, Visitor};
17741 struct StructVisitor;
17742 impl<'de> Visitor<'de> for StructVisitor {
17743 type Value = SharedFolderMetadata;
17744 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17745 f.write_str("a SharedFolderMetadata struct")
17746 }
17747 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
17748 SharedFolderMetadata::internal_deserialize(map)
17749 }
17750 }
17751 deserializer.deserialize_struct("SharedFolderMetadata", SHARED_FOLDER_METADATA_FIELDS, StructVisitor)
17752 }
17753}
17754
17755impl ::serde::ser::Serialize for SharedFolderMetadata {
17756 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17757 use serde::ser::SerializeStruct;
17759 let mut s = serializer.serialize_struct("SharedFolderMetadata", 18)?;
17760 self.internal_serialize::<S>(&mut s)?;
17761 s.end()
17762 }
17763}
17764
17765impl From<SharedFolderMetadata> for SharedFolderMetadataBase {
17767 fn from(subtype: SharedFolderMetadata) -> Self {
17768 Self {
17769 access_type: subtype.access_type,
17770 is_inside_team_folder: subtype.is_inside_team_folder,
17771 is_team_folder: subtype.is_team_folder,
17772 owner_display_names: subtype.owner_display_names,
17773 owner_team: subtype.owner_team,
17774 parent_shared_folder_id: subtype.parent_shared_folder_id,
17775 path_display: subtype.path_display,
17776 path_lower: subtype.path_lower,
17777 parent_folder_name: subtype.parent_folder_name,
17778 }
17779 }
17780}
17781#[derive(Debug, Clone, PartialEq, Eq)]
17783#[non_exhaustive] pub struct SharedFolderMetadataBase {
17785 pub access_type: AccessLevel,
17787 pub is_inside_team_folder: bool,
17789 pub is_team_folder: bool,
17791 pub owner_display_names: Option<Vec<String>>,
17795 pub owner_team: Option<crate::types::users::Team>,
17798 pub parent_shared_folder_id: Option<crate::types::common::SharedFolderId>,
17801 pub path_display: Option<String>,
17803 pub path_lower: Option<String>,
17805 pub parent_folder_name: Option<String>,
17807}
17808
17809impl SharedFolderMetadataBase {
17810 pub fn new(
17811 access_type: AccessLevel,
17812 is_inside_team_folder: bool,
17813 is_team_folder: bool,
17814 ) -> Self {
17815 SharedFolderMetadataBase {
17816 access_type,
17817 is_inside_team_folder,
17818 is_team_folder,
17819 owner_display_names: None,
17820 owner_team: None,
17821 parent_shared_folder_id: None,
17822 path_display: None,
17823 path_lower: None,
17824 parent_folder_name: None,
17825 }
17826 }
17827
17828 pub fn with_owner_display_names(mut self, value: Vec<String>) -> Self {
17829 self.owner_display_names = Some(value);
17830 self
17831 }
17832
17833 pub fn with_owner_team(mut self, value: crate::types::users::Team) -> Self {
17834 self.owner_team = Some(value);
17835 self
17836 }
17837
17838 pub fn with_parent_shared_folder_id(
17839 mut self,
17840 value: crate::types::common::SharedFolderId,
17841 ) -> Self {
17842 self.parent_shared_folder_id = Some(value);
17843 self
17844 }
17845
17846 pub fn with_path_display(mut self, value: String) -> Self {
17847 self.path_display = Some(value);
17848 self
17849 }
17850
17851 pub fn with_path_lower(mut self, value: String) -> Self {
17852 self.path_lower = Some(value);
17853 self
17854 }
17855
17856 pub fn with_parent_folder_name(mut self, value: String) -> Self {
17857 self.parent_folder_name = Some(value);
17858 self
17859 }
17860}
17861
17862const SHARED_FOLDER_METADATA_BASE_FIELDS: &[&str] = &["access_type",
17863 "is_inside_team_folder",
17864 "is_team_folder",
17865 "owner_display_names",
17866 "owner_team",
17867 "parent_shared_folder_id",
17868 "path_display",
17869 "path_lower",
17870 "parent_folder_name"];
17871impl SharedFolderMetadataBase {
17872 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
17873 map: V,
17874 ) -> Result<SharedFolderMetadataBase, V::Error> {
17875 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
17876 }
17877
17878 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
17879 mut map: V,
17880 optional: bool,
17881 ) -> Result<Option<SharedFolderMetadataBase>, V::Error> {
17882 let mut field_access_type = None;
17883 let mut field_is_inside_team_folder = None;
17884 let mut field_is_team_folder = None;
17885 let mut field_owner_display_names = None;
17886 let mut field_owner_team = None;
17887 let mut field_parent_shared_folder_id = None;
17888 let mut field_path_display = None;
17889 let mut field_path_lower = None;
17890 let mut field_parent_folder_name = None;
17891 let mut nothing = true;
17892 while let Some(key) = map.next_key::<&str>()? {
17893 nothing = false;
17894 match key {
17895 "access_type" => {
17896 if field_access_type.is_some() {
17897 return Err(::serde::de::Error::duplicate_field("access_type"));
17898 }
17899 field_access_type = Some(map.next_value()?);
17900 }
17901 "is_inside_team_folder" => {
17902 if field_is_inside_team_folder.is_some() {
17903 return Err(::serde::de::Error::duplicate_field("is_inside_team_folder"));
17904 }
17905 field_is_inside_team_folder = Some(map.next_value()?);
17906 }
17907 "is_team_folder" => {
17908 if field_is_team_folder.is_some() {
17909 return Err(::serde::de::Error::duplicate_field("is_team_folder"));
17910 }
17911 field_is_team_folder = Some(map.next_value()?);
17912 }
17913 "owner_display_names" => {
17914 if field_owner_display_names.is_some() {
17915 return Err(::serde::de::Error::duplicate_field("owner_display_names"));
17916 }
17917 field_owner_display_names = Some(map.next_value()?);
17918 }
17919 "owner_team" => {
17920 if field_owner_team.is_some() {
17921 return Err(::serde::de::Error::duplicate_field("owner_team"));
17922 }
17923 field_owner_team = Some(map.next_value()?);
17924 }
17925 "parent_shared_folder_id" => {
17926 if field_parent_shared_folder_id.is_some() {
17927 return Err(::serde::de::Error::duplicate_field("parent_shared_folder_id"));
17928 }
17929 field_parent_shared_folder_id = Some(map.next_value()?);
17930 }
17931 "path_display" => {
17932 if field_path_display.is_some() {
17933 return Err(::serde::de::Error::duplicate_field("path_display"));
17934 }
17935 field_path_display = Some(map.next_value()?);
17936 }
17937 "path_lower" => {
17938 if field_path_lower.is_some() {
17939 return Err(::serde::de::Error::duplicate_field("path_lower"));
17940 }
17941 field_path_lower = Some(map.next_value()?);
17942 }
17943 "parent_folder_name" => {
17944 if field_parent_folder_name.is_some() {
17945 return Err(::serde::de::Error::duplicate_field("parent_folder_name"));
17946 }
17947 field_parent_folder_name = Some(map.next_value()?);
17948 }
17949 _ => {
17950 map.next_value::<::serde_json::Value>()?;
17952 }
17953 }
17954 }
17955 if optional && nothing {
17956 return Ok(None);
17957 }
17958 let result = SharedFolderMetadataBase {
17959 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
17960 is_inside_team_folder: field_is_inside_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_inside_team_folder"))?,
17961 is_team_folder: field_is_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_team_folder"))?,
17962 owner_display_names: field_owner_display_names.and_then(Option::flatten),
17963 owner_team: field_owner_team.and_then(Option::flatten),
17964 parent_shared_folder_id: field_parent_shared_folder_id.and_then(Option::flatten),
17965 path_display: field_path_display.and_then(Option::flatten),
17966 path_lower: field_path_lower.and_then(Option::flatten),
17967 parent_folder_name: field_parent_folder_name.and_then(Option::flatten),
17968 };
17969 Ok(Some(result))
17970 }
17971
17972 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
17973 &self,
17974 s: &mut S::SerializeStruct,
17975 ) -> Result<(), S::Error> {
17976 use serde::ser::SerializeStruct;
17977 s.serialize_field("access_type", &self.access_type)?;
17978 s.serialize_field("is_inside_team_folder", &self.is_inside_team_folder)?;
17979 s.serialize_field("is_team_folder", &self.is_team_folder)?;
17980 if let Some(val) = &self.owner_display_names {
17981 s.serialize_field("owner_display_names", val)?;
17982 }
17983 if let Some(val) = &self.owner_team {
17984 s.serialize_field("owner_team", val)?;
17985 }
17986 if let Some(val) = &self.parent_shared_folder_id {
17987 s.serialize_field("parent_shared_folder_id", val)?;
17988 }
17989 if let Some(val) = &self.path_display {
17990 s.serialize_field("path_display", val)?;
17991 }
17992 if let Some(val) = &self.path_lower {
17993 s.serialize_field("path_lower", val)?;
17994 }
17995 if let Some(val) = &self.parent_folder_name {
17996 s.serialize_field("parent_folder_name", val)?;
17997 }
17998 Ok(())
17999 }
18000}
18001
18002impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMetadataBase {
18003 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18004 use serde::de::{MapAccess, Visitor};
18006 struct StructVisitor;
18007 impl<'de> Visitor<'de> for StructVisitor {
18008 type Value = SharedFolderMetadataBase;
18009 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18010 f.write_str("a SharedFolderMetadataBase struct")
18011 }
18012 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
18013 SharedFolderMetadataBase::internal_deserialize(map)
18014 }
18015 }
18016 deserializer.deserialize_struct("SharedFolderMetadataBase", SHARED_FOLDER_METADATA_BASE_FIELDS, StructVisitor)
18017 }
18018}
18019
18020impl ::serde::ser::Serialize for SharedFolderMetadataBase {
18021 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18022 use serde::ser::SerializeStruct;
18024 let mut s = serializer.serialize_struct("SharedFolderMetadataBase", 9)?;
18025 self.internal_serialize::<S>(&mut s)?;
18026 s.end()
18027 }
18028}
18029
18030#[derive(Debug, Clone, PartialEq, Eq)]
18031#[non_exhaustive] pub enum SharedLinkAccessFailureReason {
18033 LoginRequired,
18035 EmailVerifyRequired,
18039 PasswordRequired,
18041 TeamOnly,
18043 OwnerOnly,
18045 Other,
18048}
18049
18050impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAccessFailureReason {
18051 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18052 use serde::de::{self, MapAccess, Visitor};
18054 struct EnumVisitor;
18055 impl<'de> Visitor<'de> for EnumVisitor {
18056 type Value = SharedLinkAccessFailureReason;
18057 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18058 f.write_str("a SharedLinkAccessFailureReason structure")
18059 }
18060 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18061 let tag: &str = match map.next_key()? {
18062 Some(".tag") => map.next_value()?,
18063 _ => return Err(de::Error::missing_field(".tag"))
18064 };
18065 let value = match tag {
18066 "login_required" => SharedLinkAccessFailureReason::LoginRequired,
18067 "email_verify_required" => SharedLinkAccessFailureReason::EmailVerifyRequired,
18068 "password_required" => SharedLinkAccessFailureReason::PasswordRequired,
18069 "team_only" => SharedLinkAccessFailureReason::TeamOnly,
18070 "owner_only" => SharedLinkAccessFailureReason::OwnerOnly,
18071 _ => SharedLinkAccessFailureReason::Other,
18072 };
18073 crate::eat_json_fields(&mut map)?;
18074 Ok(value)
18075 }
18076 }
18077 const VARIANTS: &[&str] = &["login_required",
18078 "email_verify_required",
18079 "password_required",
18080 "team_only",
18081 "owner_only",
18082 "other"];
18083 deserializer.deserialize_struct("SharedLinkAccessFailureReason", VARIANTS, EnumVisitor)
18084 }
18085}
18086
18087impl ::serde::ser::Serialize for SharedLinkAccessFailureReason {
18088 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18089 use serde::ser::SerializeStruct;
18091 match self {
18092 SharedLinkAccessFailureReason::LoginRequired => {
18093 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
18095 s.serialize_field(".tag", "login_required")?;
18096 s.end()
18097 }
18098 SharedLinkAccessFailureReason::EmailVerifyRequired => {
18099 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
18101 s.serialize_field(".tag", "email_verify_required")?;
18102 s.end()
18103 }
18104 SharedLinkAccessFailureReason::PasswordRequired => {
18105 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
18107 s.serialize_field(".tag", "password_required")?;
18108 s.end()
18109 }
18110 SharedLinkAccessFailureReason::TeamOnly => {
18111 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
18113 s.serialize_field(".tag", "team_only")?;
18114 s.end()
18115 }
18116 SharedLinkAccessFailureReason::OwnerOnly => {
18117 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
18119 s.serialize_field(".tag", "owner_only")?;
18120 s.end()
18121 }
18122 SharedLinkAccessFailureReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18123 }
18124 }
18125}
18126
18127#[derive(Debug, Clone, PartialEq, Eq)]
18128#[non_exhaustive] pub enum SharedLinkAlreadyExistsMetadata {
18130 Metadata(SharedLinkMetadata),
18132 Other,
18135}
18136
18137impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAlreadyExistsMetadata {
18138 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18139 use serde::de::{self, MapAccess, Visitor};
18141 struct EnumVisitor;
18142 impl<'de> Visitor<'de> for EnumVisitor {
18143 type Value = SharedLinkAlreadyExistsMetadata;
18144 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18145 f.write_str("a SharedLinkAlreadyExistsMetadata structure")
18146 }
18147 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18148 let tag: &str = match map.next_key()? {
18149 Some(".tag") => map.next_value()?,
18150 _ => return Err(de::Error::missing_field(".tag"))
18151 };
18152 let value = match tag {
18153 "metadata" => {
18154 match map.next_key()? {
18155 Some("metadata") => SharedLinkAlreadyExistsMetadata::Metadata(map.next_value()?),
18156 None => return Err(de::Error::missing_field("metadata")),
18157 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
18158 }
18159 }
18160 _ => SharedLinkAlreadyExistsMetadata::Other,
18161 };
18162 crate::eat_json_fields(&mut map)?;
18163 Ok(value)
18164 }
18165 }
18166 const VARIANTS: &[&str] = &["metadata",
18167 "other"];
18168 deserializer.deserialize_struct("SharedLinkAlreadyExistsMetadata", VARIANTS, EnumVisitor)
18169 }
18170}
18171
18172impl ::serde::ser::Serialize for SharedLinkAlreadyExistsMetadata {
18173 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18174 use serde::ser::SerializeStruct;
18176 match self {
18177 SharedLinkAlreadyExistsMetadata::Metadata(x) => {
18178 let mut s = serializer.serialize_struct("SharedLinkAlreadyExistsMetadata", 2)?;
18180 s.serialize_field(".tag", "metadata")?;
18181 s.serialize_field("metadata", x)?;
18182 s.end()
18183 }
18184 SharedLinkAlreadyExistsMetadata::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18185 }
18186 }
18187}
18188
18189#[derive(Debug, Clone, PartialEq, Eq)]
18190#[non_exhaustive] pub enum SharedLinkError {
18192 SharedLinkNotFound,
18194 SharedLinkAccessDenied,
18196 UnsupportedLinkType,
18198 UnsupportedParameterField,
18200 Other,
18203}
18204
18205impl<'de> ::serde::de::Deserialize<'de> for SharedLinkError {
18206 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18207 use serde::de::{self, MapAccess, Visitor};
18209 struct EnumVisitor;
18210 impl<'de> Visitor<'de> for EnumVisitor {
18211 type Value = SharedLinkError;
18212 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18213 f.write_str("a SharedLinkError structure")
18214 }
18215 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18216 let tag: &str = match map.next_key()? {
18217 Some(".tag") => map.next_value()?,
18218 _ => return Err(de::Error::missing_field(".tag"))
18219 };
18220 let value = match tag {
18221 "shared_link_not_found" => SharedLinkError::SharedLinkNotFound,
18222 "shared_link_access_denied" => SharedLinkError::SharedLinkAccessDenied,
18223 "unsupported_link_type" => SharedLinkError::UnsupportedLinkType,
18224 "unsupported_parameter_field" => SharedLinkError::UnsupportedParameterField,
18225 _ => SharedLinkError::Other,
18226 };
18227 crate::eat_json_fields(&mut map)?;
18228 Ok(value)
18229 }
18230 }
18231 const VARIANTS: &[&str] = &["shared_link_not_found",
18232 "shared_link_access_denied",
18233 "unsupported_link_type",
18234 "unsupported_parameter_field",
18235 "other"];
18236 deserializer.deserialize_struct("SharedLinkError", VARIANTS, EnumVisitor)
18237 }
18238}
18239
18240impl ::serde::ser::Serialize for SharedLinkError {
18241 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18242 use serde::ser::SerializeStruct;
18244 match self {
18245 SharedLinkError::SharedLinkNotFound => {
18246 let mut s = serializer.serialize_struct("SharedLinkError", 1)?;
18248 s.serialize_field(".tag", "shared_link_not_found")?;
18249 s.end()
18250 }
18251 SharedLinkError::SharedLinkAccessDenied => {
18252 let mut s = serializer.serialize_struct("SharedLinkError", 1)?;
18254 s.serialize_field(".tag", "shared_link_access_denied")?;
18255 s.end()
18256 }
18257 SharedLinkError::UnsupportedLinkType => {
18258 let mut s = serializer.serialize_struct("SharedLinkError", 1)?;
18260 s.serialize_field(".tag", "unsupported_link_type")?;
18261 s.end()
18262 }
18263 SharedLinkError::UnsupportedParameterField => {
18264 let mut s = serializer.serialize_struct("SharedLinkError", 1)?;
18266 s.serialize_field(".tag", "unsupported_parameter_field")?;
18267 s.end()
18268 }
18269 SharedLinkError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18270 }
18271 }
18272}
18273
18274impl ::std::error::Error for SharedLinkError {
18275}
18276
18277impl ::std::fmt::Display for SharedLinkError {
18278 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18279 match self {
18280 SharedLinkError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
18281 SharedLinkError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
18282 SharedLinkError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."),
18283 _ => write!(f, "{:?}", *self),
18284 }
18285 }
18286}
18287
18288#[derive(Debug, Clone, PartialEq, Eq)]
18290#[non_exhaustive] pub enum SharedLinkMetadata {
18292 File(FileLinkMetadata),
18293 Folder(FolderLinkMetadata),
18294 Other,
18297}
18298
18299impl<'de> ::serde::de::Deserialize<'de> for SharedLinkMetadata {
18300 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18301 use serde::de::{self, MapAccess, Visitor};
18303 struct EnumVisitor;
18304 impl<'de> Visitor<'de> for EnumVisitor {
18305 type Value = SharedLinkMetadata;
18306 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18307 f.write_str("a SharedLinkMetadata structure")
18308 }
18309 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18310 let tag = match map.next_key()? {
18311 Some(".tag") => map.next_value()?,
18312 _ => return Err(de::Error::missing_field(".tag"))
18313 };
18314 match tag {
18315 "file" => Ok(SharedLinkMetadata::File(FileLinkMetadata::internal_deserialize(map)?)),
18316 "folder" => Ok(SharedLinkMetadata::Folder(FolderLinkMetadata::internal_deserialize(map)?)),
18317 _ => {
18318 crate::eat_json_fields(&mut map)?;
18319 Ok(SharedLinkMetadata::Other)
18320 }
18321 }
18322 }
18323 }
18324 const VARIANTS: &[&str] = &["file",
18325 "folder"];
18326 deserializer.deserialize_struct("SharedLinkMetadata", VARIANTS, EnumVisitor)
18327 }
18328}
18329
18330impl ::serde::ser::Serialize for SharedLinkMetadata {
18331 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18332 use serde::ser::SerializeStruct;
18334 match self {
18335 SharedLinkMetadata::File(x) => {
18336 let mut s = serializer.serialize_struct("SharedLinkMetadata", 13)?;
18337 s.serialize_field(".tag", "file")?;
18338 x.internal_serialize::<S>(&mut s)?;
18339 s.end()
18340 }
18341 SharedLinkMetadata::Folder(x) => {
18342 let mut s = serializer.serialize_struct("SharedLinkMetadata", 9)?;
18343 s.serialize_field(".tag", "folder")?;
18344 x.internal_serialize::<S>(&mut s)?;
18345 s.end()
18346 }
18347 SharedLinkMetadata::Other => Err(::serde::ser::Error::custom("cannot serialize unknown variant"))
18348 }
18349 }
18350}
18351
18352#[derive(Debug, Clone, PartialEq, Eq)]
18354#[non_exhaustive] pub enum SharedLinkMetadataError {
18356 SharedLinkNotFound,
18358 SharedLinkAccessDenied,
18360 UnsupportedLinkType,
18362 UnsupportedParameterField,
18364 Other,
18367}
18368
18369impl<'de> ::serde::de::Deserialize<'de> for SharedLinkMetadataError {
18370 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18371 use serde::de::{self, MapAccess, Visitor};
18373 struct EnumVisitor;
18374 impl<'de> Visitor<'de> for EnumVisitor {
18375 type Value = SharedLinkMetadataError;
18376 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18377 f.write_str("a SharedLinkMetadataError structure")
18378 }
18379 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18380 let tag: &str = match map.next_key()? {
18381 Some(".tag") => map.next_value()?,
18382 _ => return Err(de::Error::missing_field(".tag"))
18383 };
18384 let value = match tag {
18385 "shared_link_not_found" => SharedLinkMetadataError::SharedLinkNotFound,
18386 "shared_link_access_denied" => SharedLinkMetadataError::SharedLinkAccessDenied,
18387 "unsupported_link_type" => SharedLinkMetadataError::UnsupportedLinkType,
18388 "unsupported_parameter_field" => SharedLinkMetadataError::UnsupportedParameterField,
18389 _ => SharedLinkMetadataError::Other,
18390 };
18391 crate::eat_json_fields(&mut map)?;
18392 Ok(value)
18393 }
18394 }
18395 const VARIANTS: &[&str] = &["shared_link_not_found",
18396 "shared_link_access_denied",
18397 "unsupported_link_type",
18398 "unsupported_parameter_field",
18399 "other"];
18400 deserializer.deserialize_struct("SharedLinkMetadataError", VARIANTS, EnumVisitor)
18401 }
18402}
18403
18404impl ::serde::ser::Serialize for SharedLinkMetadataError {
18405 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18406 use serde::ser::SerializeStruct;
18408 match self {
18409 SharedLinkMetadataError::SharedLinkNotFound => {
18410 let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?;
18412 s.serialize_field(".tag", "shared_link_not_found")?;
18413 s.end()
18414 }
18415 SharedLinkMetadataError::SharedLinkAccessDenied => {
18416 let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?;
18418 s.serialize_field(".tag", "shared_link_access_denied")?;
18419 s.end()
18420 }
18421 SharedLinkMetadataError::UnsupportedLinkType => {
18422 let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?;
18424 s.serialize_field(".tag", "unsupported_link_type")?;
18425 s.end()
18426 }
18427 SharedLinkMetadataError::UnsupportedParameterField => {
18428 let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?;
18430 s.serialize_field(".tag", "unsupported_parameter_field")?;
18431 s.end()
18432 }
18433 SharedLinkMetadataError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18434 }
18435 }
18436}
18437
18438impl ::std::error::Error for SharedLinkMetadataError {
18439}
18440
18441impl ::std::fmt::Display for SharedLinkMetadataError {
18442 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18443 match self {
18444 SharedLinkMetadataError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
18445 SharedLinkMetadataError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
18446 SharedLinkMetadataError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."),
18447 _ => write!(f, "{:?}", *self),
18448 }
18449 }
18450}
18451
18452impl From<SharedLinkError> for SharedLinkMetadataError {
18454 fn from(parent: SharedLinkError) -> Self {
18455 match parent {
18456 SharedLinkError::SharedLinkNotFound => SharedLinkMetadataError::SharedLinkNotFound,
18457 SharedLinkError::SharedLinkAccessDenied => SharedLinkMetadataError::SharedLinkAccessDenied,
18458 SharedLinkError::UnsupportedLinkType => SharedLinkMetadataError::UnsupportedLinkType,
18459 SharedLinkError::UnsupportedParameterField => SharedLinkMetadataError::UnsupportedParameterField,
18460 SharedLinkError::Other => SharedLinkMetadataError::Other,
18461 }
18462 }
18463}
18464#[derive(Debug, Clone, PartialEq, Eq)]
18466#[non_exhaustive] pub enum SharedLinkPolicy {
18468 Anyone,
18470 Team,
18472 Members,
18474 Other,
18477}
18478
18479impl<'de> ::serde::de::Deserialize<'de> for SharedLinkPolicy {
18480 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18481 use serde::de::{self, MapAccess, Visitor};
18483 struct EnumVisitor;
18484 impl<'de> Visitor<'de> for EnumVisitor {
18485 type Value = SharedLinkPolicy;
18486 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18487 f.write_str("a SharedLinkPolicy structure")
18488 }
18489 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18490 let tag: &str = match map.next_key()? {
18491 Some(".tag") => map.next_value()?,
18492 _ => return Err(de::Error::missing_field(".tag"))
18493 };
18494 let value = match tag {
18495 "anyone" => SharedLinkPolicy::Anyone,
18496 "team" => SharedLinkPolicy::Team,
18497 "members" => SharedLinkPolicy::Members,
18498 _ => SharedLinkPolicy::Other,
18499 };
18500 crate::eat_json_fields(&mut map)?;
18501 Ok(value)
18502 }
18503 }
18504 const VARIANTS: &[&str] = &["anyone",
18505 "team",
18506 "members",
18507 "other"];
18508 deserializer.deserialize_struct("SharedLinkPolicy", VARIANTS, EnumVisitor)
18509 }
18510}
18511
18512impl ::serde::ser::Serialize for SharedLinkPolicy {
18513 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18514 use serde::ser::SerializeStruct;
18516 match self {
18517 SharedLinkPolicy::Anyone => {
18518 let mut s = serializer.serialize_struct("SharedLinkPolicy", 1)?;
18520 s.serialize_field(".tag", "anyone")?;
18521 s.end()
18522 }
18523 SharedLinkPolicy::Team => {
18524 let mut s = serializer.serialize_struct("SharedLinkPolicy", 1)?;
18526 s.serialize_field(".tag", "team")?;
18527 s.end()
18528 }
18529 SharedLinkPolicy::Members => {
18530 let mut s = serializer.serialize_struct("SharedLinkPolicy", 1)?;
18532 s.serialize_field(".tag", "members")?;
18533 s.end()
18534 }
18535 SharedLinkPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18536 }
18537 }
18538}
18539
18540#[derive(Debug, Clone, PartialEq, Eq, Default)]
18541#[non_exhaustive] pub struct SharedLinkSettings {
18543 pub require_password: Option<bool>,
18545 pub link_password: Option<String>,
18547 pub expires: Option<crate::types::common::DropboxTimestamp>,
18549 pub audience: Option<LinkAudience>,
18554 pub access: Option<RequestedLinkAccessLevel>,
18557 pub requested_visibility: Option<RequestedVisibility>,
18559 pub allow_download: Option<bool>,
18561}
18562
18563impl SharedLinkSettings {
18564 pub fn with_require_password(mut self, value: bool) -> Self {
18565 self.require_password = Some(value);
18566 self
18567 }
18568
18569 pub fn with_link_password(mut self, value: String) -> Self {
18570 self.link_password = Some(value);
18571 self
18572 }
18573
18574 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
18575 self.expires = Some(value);
18576 self
18577 }
18578
18579 pub fn with_audience(mut self, value: LinkAudience) -> Self {
18580 self.audience = Some(value);
18581 self
18582 }
18583
18584 pub fn with_access(mut self, value: RequestedLinkAccessLevel) -> Self {
18585 self.access = Some(value);
18586 self
18587 }
18588
18589 pub fn with_requested_visibility(mut self, value: RequestedVisibility) -> Self {
18590 self.requested_visibility = Some(value);
18591 self
18592 }
18593
18594 pub fn with_allow_download(mut self, value: bool) -> Self {
18595 self.allow_download = Some(value);
18596 self
18597 }
18598}
18599
18600const SHARED_LINK_SETTINGS_FIELDS: &[&str] = &["require_password",
18601 "link_password",
18602 "expires",
18603 "audience",
18604 "access",
18605 "requested_visibility",
18606 "allow_download"];
18607impl SharedLinkSettings {
18608 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
18610 mut map: V,
18611 ) -> Result<SharedLinkSettings, V::Error> {
18612 let mut field_require_password = None;
18613 let mut field_link_password = None;
18614 let mut field_expires = None;
18615 let mut field_audience = None;
18616 let mut field_access = None;
18617 let mut field_requested_visibility = None;
18618 let mut field_allow_download = None;
18619 while let Some(key) = map.next_key::<&str>()? {
18620 match key {
18621 "require_password" => {
18622 if field_require_password.is_some() {
18623 return Err(::serde::de::Error::duplicate_field("require_password"));
18624 }
18625 field_require_password = Some(map.next_value()?);
18626 }
18627 "link_password" => {
18628 if field_link_password.is_some() {
18629 return Err(::serde::de::Error::duplicate_field("link_password"));
18630 }
18631 field_link_password = Some(map.next_value()?);
18632 }
18633 "expires" => {
18634 if field_expires.is_some() {
18635 return Err(::serde::de::Error::duplicate_field("expires"));
18636 }
18637 field_expires = Some(map.next_value()?);
18638 }
18639 "audience" => {
18640 if field_audience.is_some() {
18641 return Err(::serde::de::Error::duplicate_field("audience"));
18642 }
18643 field_audience = Some(map.next_value()?);
18644 }
18645 "access" => {
18646 if field_access.is_some() {
18647 return Err(::serde::de::Error::duplicate_field("access"));
18648 }
18649 field_access = Some(map.next_value()?);
18650 }
18651 "requested_visibility" => {
18652 if field_requested_visibility.is_some() {
18653 return Err(::serde::de::Error::duplicate_field("requested_visibility"));
18654 }
18655 field_requested_visibility = Some(map.next_value()?);
18656 }
18657 "allow_download" => {
18658 if field_allow_download.is_some() {
18659 return Err(::serde::de::Error::duplicate_field("allow_download"));
18660 }
18661 field_allow_download = Some(map.next_value()?);
18662 }
18663 _ => {
18664 map.next_value::<::serde_json::Value>()?;
18666 }
18667 }
18668 }
18669 let result = SharedLinkSettings {
18670 require_password: field_require_password.and_then(Option::flatten),
18671 link_password: field_link_password.and_then(Option::flatten),
18672 expires: field_expires.and_then(Option::flatten),
18673 audience: field_audience.and_then(Option::flatten),
18674 access: field_access.and_then(Option::flatten),
18675 requested_visibility: field_requested_visibility.and_then(Option::flatten),
18676 allow_download: field_allow_download.and_then(Option::flatten),
18677 };
18678 Ok(result)
18679 }
18680
18681 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
18682 &self,
18683 s: &mut S::SerializeStruct,
18684 ) -> Result<(), S::Error> {
18685 use serde::ser::SerializeStruct;
18686 if let Some(val) = &self.require_password {
18687 s.serialize_field("require_password", val)?;
18688 }
18689 if let Some(val) = &self.link_password {
18690 s.serialize_field("link_password", val)?;
18691 }
18692 if let Some(val) = &self.expires {
18693 s.serialize_field("expires", val)?;
18694 }
18695 if let Some(val) = &self.audience {
18696 s.serialize_field("audience", val)?;
18697 }
18698 if let Some(val) = &self.access {
18699 s.serialize_field("access", val)?;
18700 }
18701 if let Some(val) = &self.requested_visibility {
18702 s.serialize_field("requested_visibility", val)?;
18703 }
18704 if let Some(val) = &self.allow_download {
18705 s.serialize_field("allow_download", val)?;
18706 }
18707 Ok(())
18708 }
18709}
18710
18711impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettings {
18712 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18713 use serde::de::{MapAccess, Visitor};
18715 struct StructVisitor;
18716 impl<'de> Visitor<'de> for StructVisitor {
18717 type Value = SharedLinkSettings;
18718 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18719 f.write_str("a SharedLinkSettings struct")
18720 }
18721 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
18722 SharedLinkSettings::internal_deserialize(map)
18723 }
18724 }
18725 deserializer.deserialize_struct("SharedLinkSettings", SHARED_LINK_SETTINGS_FIELDS, StructVisitor)
18726 }
18727}
18728
18729impl ::serde::ser::Serialize for SharedLinkSettings {
18730 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18731 use serde::ser::SerializeStruct;
18733 let mut s = serializer.serialize_struct("SharedLinkSettings", 7)?;
18734 self.internal_serialize::<S>(&mut s)?;
18735 s.end()
18736 }
18737}
18738
18739#[derive(Debug, Clone, PartialEq, Eq)]
18740pub enum SharedLinkSettingsError {
18741 InvalidSettings,
18746 NotAuthorized,
18751}
18752
18753impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsError {
18754 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18755 use serde::de::{self, MapAccess, Visitor};
18757 struct EnumVisitor;
18758 impl<'de> Visitor<'de> for EnumVisitor {
18759 type Value = SharedLinkSettingsError;
18760 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18761 f.write_str("a SharedLinkSettingsError structure")
18762 }
18763 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18764 let tag: &str = match map.next_key()? {
18765 Some(".tag") => map.next_value()?,
18766 _ => return Err(de::Error::missing_field(".tag"))
18767 };
18768 let value = match tag {
18769 "invalid_settings" => SharedLinkSettingsError::InvalidSettings,
18770 "not_authorized" => SharedLinkSettingsError::NotAuthorized,
18771 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
18772 };
18773 crate::eat_json_fields(&mut map)?;
18774 Ok(value)
18775 }
18776 }
18777 const VARIANTS: &[&str] = &["invalid_settings",
18778 "not_authorized"];
18779 deserializer.deserialize_struct("SharedLinkSettingsError", VARIANTS, EnumVisitor)
18780 }
18781}
18782
18783impl ::serde::ser::Serialize for SharedLinkSettingsError {
18784 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18785 use serde::ser::SerializeStruct;
18787 match self {
18788 SharedLinkSettingsError::InvalidSettings => {
18789 let mut s = serializer.serialize_struct("SharedLinkSettingsError", 1)?;
18791 s.serialize_field(".tag", "invalid_settings")?;
18792 s.end()
18793 }
18794 SharedLinkSettingsError::NotAuthorized => {
18795 let mut s = serializer.serialize_struct("SharedLinkSettingsError", 1)?;
18797 s.serialize_field(".tag", "not_authorized")?;
18798 s.end()
18799 }
18800 }
18801 }
18802}
18803
18804impl ::std::error::Error for SharedLinkSettingsError {
18805}
18806
18807impl ::std::fmt::Display for SharedLinkSettingsError {
18808 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18809 write!(f, "{:?}", *self)
18810 }
18811}
18812
18813#[derive(Debug, Clone, PartialEq, Eq)]
18815#[non_exhaustive] pub enum SharingFileAccessError {
18817 NoPermission,
18819 InvalidFile,
18821 IsFolder,
18823 InsidePublicFolder,
18825 InsideOsxPackage,
18827 Other,
18830}
18831
18832impl<'de> ::serde::de::Deserialize<'de> for SharingFileAccessError {
18833 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18834 use serde::de::{self, MapAccess, Visitor};
18836 struct EnumVisitor;
18837 impl<'de> Visitor<'de> for EnumVisitor {
18838 type Value = SharingFileAccessError;
18839 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18840 f.write_str("a SharingFileAccessError structure")
18841 }
18842 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18843 let tag: &str = match map.next_key()? {
18844 Some(".tag") => map.next_value()?,
18845 _ => return Err(de::Error::missing_field(".tag"))
18846 };
18847 let value = match tag {
18848 "no_permission" => SharingFileAccessError::NoPermission,
18849 "invalid_file" => SharingFileAccessError::InvalidFile,
18850 "is_folder" => SharingFileAccessError::IsFolder,
18851 "inside_public_folder" => SharingFileAccessError::InsidePublicFolder,
18852 "inside_osx_package" => SharingFileAccessError::InsideOsxPackage,
18853 _ => SharingFileAccessError::Other,
18854 };
18855 crate::eat_json_fields(&mut map)?;
18856 Ok(value)
18857 }
18858 }
18859 const VARIANTS: &[&str] = &["no_permission",
18860 "invalid_file",
18861 "is_folder",
18862 "inside_public_folder",
18863 "inside_osx_package",
18864 "other"];
18865 deserializer.deserialize_struct("SharingFileAccessError", VARIANTS, EnumVisitor)
18866 }
18867}
18868
18869impl ::serde::ser::Serialize for SharingFileAccessError {
18870 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18871 use serde::ser::SerializeStruct;
18873 match self {
18874 SharingFileAccessError::NoPermission => {
18875 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
18877 s.serialize_field(".tag", "no_permission")?;
18878 s.end()
18879 }
18880 SharingFileAccessError::InvalidFile => {
18881 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
18883 s.serialize_field(".tag", "invalid_file")?;
18884 s.end()
18885 }
18886 SharingFileAccessError::IsFolder => {
18887 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
18889 s.serialize_field(".tag", "is_folder")?;
18890 s.end()
18891 }
18892 SharingFileAccessError::InsidePublicFolder => {
18893 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
18895 s.serialize_field(".tag", "inside_public_folder")?;
18896 s.end()
18897 }
18898 SharingFileAccessError::InsideOsxPackage => {
18899 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
18901 s.serialize_field(".tag", "inside_osx_package")?;
18902 s.end()
18903 }
18904 SharingFileAccessError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18905 }
18906 }
18907}
18908
18909impl ::std::error::Error for SharingFileAccessError {
18910}
18911
18912impl ::std::fmt::Display for SharingFileAccessError {
18913 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18914 match self {
18915 SharingFileAccessError::NoPermission => f.write_str("Current user does not have sufficient privileges to perform the desired action."),
18916 SharingFileAccessError::InvalidFile => f.write_str("File specified was not found."),
18917 SharingFileAccessError::IsFolder => f.write_str("A folder can't be shared this way. Use folder sharing or a shared link instead."),
18918 SharingFileAccessError::InsidePublicFolder => f.write_str("A file inside a public folder can't be shared this way. Use a public link instead."),
18919 SharingFileAccessError::InsideOsxPackage => f.write_str("A Mac OS X package can't be shared this way. Use a shared link instead."),
18920 _ => write!(f, "{:?}", *self),
18921 }
18922 }
18923}
18924
18925#[derive(Debug, Clone, PartialEq, Eq)]
18927#[non_exhaustive] pub enum SharingUserError {
18929 EmailUnverified,
18933 Other,
18936}
18937
18938impl<'de> ::serde::de::Deserialize<'de> for SharingUserError {
18939 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18940 use serde::de::{self, MapAccess, Visitor};
18942 struct EnumVisitor;
18943 impl<'de> Visitor<'de> for EnumVisitor {
18944 type Value = SharingUserError;
18945 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18946 f.write_str("a SharingUserError structure")
18947 }
18948 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18949 let tag: &str = match map.next_key()? {
18950 Some(".tag") => map.next_value()?,
18951 _ => return Err(de::Error::missing_field(".tag"))
18952 };
18953 let value = match tag {
18954 "email_unverified" => SharingUserError::EmailUnverified,
18955 _ => SharingUserError::Other,
18956 };
18957 crate::eat_json_fields(&mut map)?;
18958 Ok(value)
18959 }
18960 }
18961 const VARIANTS: &[&str] = &["email_unverified",
18962 "other"];
18963 deserializer.deserialize_struct("SharingUserError", VARIANTS, EnumVisitor)
18964 }
18965}
18966
18967impl ::serde::ser::Serialize for SharingUserError {
18968 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18969 use serde::ser::SerializeStruct;
18971 match self {
18972 SharingUserError::EmailUnverified => {
18973 let mut s = serializer.serialize_struct("SharingUserError", 1)?;
18975 s.serialize_field(".tag", "email_unverified")?;
18976 s.end()
18977 }
18978 SharingUserError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18979 }
18980 }
18981}
18982
18983impl ::std::error::Error for SharingUserError {
18984}
18985
18986impl ::std::fmt::Display for SharingUserError {
18987 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18988 write!(f, "{:?}", *self)
18989 }
18990}
18991
18992#[derive(Debug, Clone, PartialEq, Eq)]
18994#[non_exhaustive] pub struct TeamMemberInfo {
18996 pub team_info: TeamInfo,
18998 pub display_name: String,
19000 pub member_id: Option<String>,
19003}
19004
19005impl TeamMemberInfo {
19006 pub fn new(team_info: TeamInfo, display_name: String) -> Self {
19007 TeamMemberInfo {
19008 team_info,
19009 display_name,
19010 member_id: None,
19011 }
19012 }
19013
19014 pub fn with_member_id(mut self, value: String) -> Self {
19015 self.member_id = Some(value);
19016 self
19017 }
19018}
19019
19020const TEAM_MEMBER_INFO_FIELDS: &[&str] = &["team_info",
19021 "display_name",
19022 "member_id"];
19023impl TeamMemberInfo {
19024 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19025 map: V,
19026 ) -> Result<TeamMemberInfo, V::Error> {
19027 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19028 }
19029
19030 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19031 mut map: V,
19032 optional: bool,
19033 ) -> Result<Option<TeamMemberInfo>, V::Error> {
19034 let mut field_team_info = None;
19035 let mut field_display_name = None;
19036 let mut field_member_id = None;
19037 let mut nothing = true;
19038 while let Some(key) = map.next_key::<&str>()? {
19039 nothing = false;
19040 match key {
19041 "team_info" => {
19042 if field_team_info.is_some() {
19043 return Err(::serde::de::Error::duplicate_field("team_info"));
19044 }
19045 field_team_info = Some(map.next_value()?);
19046 }
19047 "display_name" => {
19048 if field_display_name.is_some() {
19049 return Err(::serde::de::Error::duplicate_field("display_name"));
19050 }
19051 field_display_name = Some(map.next_value()?);
19052 }
19053 "member_id" => {
19054 if field_member_id.is_some() {
19055 return Err(::serde::de::Error::duplicate_field("member_id"));
19056 }
19057 field_member_id = Some(map.next_value()?);
19058 }
19059 _ => {
19060 map.next_value::<::serde_json::Value>()?;
19062 }
19063 }
19064 }
19065 if optional && nothing {
19066 return Ok(None);
19067 }
19068 let result = TeamMemberInfo {
19069 team_info: field_team_info.ok_or_else(|| ::serde::de::Error::missing_field("team_info"))?,
19070 display_name: field_display_name.ok_or_else(|| ::serde::de::Error::missing_field("display_name"))?,
19071 member_id: field_member_id.and_then(Option::flatten),
19072 };
19073 Ok(Some(result))
19074 }
19075
19076 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19077 &self,
19078 s: &mut S::SerializeStruct,
19079 ) -> Result<(), S::Error> {
19080 use serde::ser::SerializeStruct;
19081 s.serialize_field("team_info", &self.team_info)?;
19082 s.serialize_field("display_name", &self.display_name)?;
19083 if let Some(val) = &self.member_id {
19084 s.serialize_field("member_id", val)?;
19085 }
19086 Ok(())
19087 }
19088}
19089
19090impl<'de> ::serde::de::Deserialize<'de> for TeamMemberInfo {
19091 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19092 use serde::de::{MapAccess, Visitor};
19094 struct StructVisitor;
19095 impl<'de> Visitor<'de> for StructVisitor {
19096 type Value = TeamMemberInfo;
19097 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19098 f.write_str("a TeamMemberInfo struct")
19099 }
19100 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19101 TeamMemberInfo::internal_deserialize(map)
19102 }
19103 }
19104 deserializer.deserialize_struct("TeamMemberInfo", TEAM_MEMBER_INFO_FIELDS, StructVisitor)
19105 }
19106}
19107
19108impl ::serde::ser::Serialize for TeamMemberInfo {
19109 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19110 use serde::ser::SerializeStruct;
19112 let mut s = serializer.serialize_struct("TeamMemberInfo", 3)?;
19113 self.internal_serialize::<S>(&mut s)?;
19114 s.end()
19115 }
19116}
19117
19118#[derive(Debug, Clone, PartialEq, Eq)]
19119#[non_exhaustive] pub struct TransferFolderArg {
19121 pub shared_folder_id: crate::types::common::SharedFolderId,
19123 pub to_dropbox_id: DropboxId,
19125}
19126
19127impl TransferFolderArg {
19128 pub fn new(
19129 shared_folder_id: crate::types::common::SharedFolderId,
19130 to_dropbox_id: DropboxId,
19131 ) -> Self {
19132 TransferFolderArg {
19133 shared_folder_id,
19134 to_dropbox_id,
19135 }
19136 }
19137}
19138
19139const TRANSFER_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id",
19140 "to_dropbox_id"];
19141impl TransferFolderArg {
19142 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19143 map: V,
19144 ) -> Result<TransferFolderArg, V::Error> {
19145 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19146 }
19147
19148 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19149 mut map: V,
19150 optional: bool,
19151 ) -> Result<Option<TransferFolderArg>, V::Error> {
19152 let mut field_shared_folder_id = None;
19153 let mut field_to_dropbox_id = None;
19154 let mut nothing = true;
19155 while let Some(key) = map.next_key::<&str>()? {
19156 nothing = false;
19157 match key {
19158 "shared_folder_id" => {
19159 if field_shared_folder_id.is_some() {
19160 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
19161 }
19162 field_shared_folder_id = Some(map.next_value()?);
19163 }
19164 "to_dropbox_id" => {
19165 if field_to_dropbox_id.is_some() {
19166 return Err(::serde::de::Error::duplicate_field("to_dropbox_id"));
19167 }
19168 field_to_dropbox_id = Some(map.next_value()?);
19169 }
19170 _ => {
19171 map.next_value::<::serde_json::Value>()?;
19173 }
19174 }
19175 }
19176 if optional && nothing {
19177 return Ok(None);
19178 }
19179 let result = TransferFolderArg {
19180 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
19181 to_dropbox_id: field_to_dropbox_id.ok_or_else(|| ::serde::de::Error::missing_field("to_dropbox_id"))?,
19182 };
19183 Ok(Some(result))
19184 }
19185
19186 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19187 &self,
19188 s: &mut S::SerializeStruct,
19189 ) -> Result<(), S::Error> {
19190 use serde::ser::SerializeStruct;
19191 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
19192 s.serialize_field("to_dropbox_id", &self.to_dropbox_id)?;
19193 Ok(())
19194 }
19195}
19196
19197impl<'de> ::serde::de::Deserialize<'de> for TransferFolderArg {
19198 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19199 use serde::de::{MapAccess, Visitor};
19201 struct StructVisitor;
19202 impl<'de> Visitor<'de> for StructVisitor {
19203 type Value = TransferFolderArg;
19204 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19205 f.write_str("a TransferFolderArg struct")
19206 }
19207 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19208 TransferFolderArg::internal_deserialize(map)
19209 }
19210 }
19211 deserializer.deserialize_struct("TransferFolderArg", TRANSFER_FOLDER_ARG_FIELDS, StructVisitor)
19212 }
19213}
19214
19215impl ::serde::ser::Serialize for TransferFolderArg {
19216 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19217 use serde::ser::SerializeStruct;
19219 let mut s = serializer.serialize_struct("TransferFolderArg", 2)?;
19220 self.internal_serialize::<S>(&mut s)?;
19221 s.end()
19222 }
19223}
19224
19225#[derive(Debug, Clone, PartialEq, Eq)]
19226#[non_exhaustive] pub enum TransferFolderError {
19228 AccessError(SharedFolderAccessError),
19229 InvalidDropboxId,
19231 NewOwnerNotAMember,
19233 NewOwnerUnmounted,
19235 NewOwnerEmailUnverified,
19239 TeamFolder,
19241 NoPermission,
19243 Other,
19246}
19247
19248impl<'de> ::serde::de::Deserialize<'de> for TransferFolderError {
19249 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19250 use serde::de::{self, MapAccess, Visitor};
19252 struct EnumVisitor;
19253 impl<'de> Visitor<'de> for EnumVisitor {
19254 type Value = TransferFolderError;
19255 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19256 f.write_str("a TransferFolderError structure")
19257 }
19258 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
19259 let tag: &str = match map.next_key()? {
19260 Some(".tag") => map.next_value()?,
19261 _ => return Err(de::Error::missing_field(".tag"))
19262 };
19263 let value = match tag {
19264 "access_error" => {
19265 match map.next_key()? {
19266 Some("access_error") => TransferFolderError::AccessError(map.next_value()?),
19267 None => return Err(de::Error::missing_field("access_error")),
19268 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
19269 }
19270 }
19271 "invalid_dropbox_id" => TransferFolderError::InvalidDropboxId,
19272 "new_owner_not_a_member" => TransferFolderError::NewOwnerNotAMember,
19273 "new_owner_unmounted" => TransferFolderError::NewOwnerUnmounted,
19274 "new_owner_email_unverified" => TransferFolderError::NewOwnerEmailUnverified,
19275 "team_folder" => TransferFolderError::TeamFolder,
19276 "no_permission" => TransferFolderError::NoPermission,
19277 _ => TransferFolderError::Other,
19278 };
19279 crate::eat_json_fields(&mut map)?;
19280 Ok(value)
19281 }
19282 }
19283 const VARIANTS: &[&str] = &["access_error",
19284 "invalid_dropbox_id",
19285 "new_owner_not_a_member",
19286 "new_owner_unmounted",
19287 "new_owner_email_unverified",
19288 "team_folder",
19289 "no_permission",
19290 "other"];
19291 deserializer.deserialize_struct("TransferFolderError", VARIANTS, EnumVisitor)
19292 }
19293}
19294
19295impl ::serde::ser::Serialize for TransferFolderError {
19296 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19297 use serde::ser::SerializeStruct;
19299 match self {
19300 TransferFolderError::AccessError(x) => {
19301 let mut s = serializer.serialize_struct("TransferFolderError", 2)?;
19303 s.serialize_field(".tag", "access_error")?;
19304 s.serialize_field("access_error", x)?;
19305 s.end()
19306 }
19307 TransferFolderError::InvalidDropboxId => {
19308 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19310 s.serialize_field(".tag", "invalid_dropbox_id")?;
19311 s.end()
19312 }
19313 TransferFolderError::NewOwnerNotAMember => {
19314 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19316 s.serialize_field(".tag", "new_owner_not_a_member")?;
19317 s.end()
19318 }
19319 TransferFolderError::NewOwnerUnmounted => {
19320 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19322 s.serialize_field(".tag", "new_owner_unmounted")?;
19323 s.end()
19324 }
19325 TransferFolderError::NewOwnerEmailUnverified => {
19326 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19328 s.serialize_field(".tag", "new_owner_email_unverified")?;
19329 s.end()
19330 }
19331 TransferFolderError::TeamFolder => {
19332 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19334 s.serialize_field(".tag", "team_folder")?;
19335 s.end()
19336 }
19337 TransferFolderError::NoPermission => {
19338 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19340 s.serialize_field(".tag", "no_permission")?;
19341 s.end()
19342 }
19343 TransferFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
19344 }
19345 }
19346}
19347
19348impl ::std::error::Error for TransferFolderError {
19349 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
19350 match self {
19351 TransferFolderError::AccessError(inner) => Some(inner),
19352 _ => None,
19353 }
19354 }
19355}
19356
19357impl ::std::fmt::Display for TransferFolderError {
19358 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19359 match self {
19360 TransferFolderError::AccessError(inner) => write!(f, "TransferFolderError: {}", inner),
19361 TransferFolderError::NewOwnerNotAMember => f.write_str("The new designated owner is not currently a member of the shared folder."),
19362 TransferFolderError::NewOwnerUnmounted => f.write_str("The new designated owner has not added the folder to their Dropbox."),
19363 TransferFolderError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
19364 TransferFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
19365 _ => write!(f, "{:?}", *self),
19366 }
19367 }
19368}
19369
19370#[derive(Debug, Clone, PartialEq, Eq)]
19371#[non_exhaustive] pub struct UnmountFolderArg {
19373 pub shared_folder_id: crate::types::common::SharedFolderId,
19375}
19376
19377impl UnmountFolderArg {
19378 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
19379 UnmountFolderArg {
19380 shared_folder_id,
19381 }
19382 }
19383}
19384
19385const UNMOUNT_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id"];
19386impl UnmountFolderArg {
19387 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19388 map: V,
19389 ) -> Result<UnmountFolderArg, V::Error> {
19390 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19391 }
19392
19393 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19394 mut map: V,
19395 optional: bool,
19396 ) -> Result<Option<UnmountFolderArg>, V::Error> {
19397 let mut field_shared_folder_id = None;
19398 let mut nothing = true;
19399 while let Some(key) = map.next_key::<&str>()? {
19400 nothing = false;
19401 match key {
19402 "shared_folder_id" => {
19403 if field_shared_folder_id.is_some() {
19404 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
19405 }
19406 field_shared_folder_id = Some(map.next_value()?);
19407 }
19408 _ => {
19409 map.next_value::<::serde_json::Value>()?;
19411 }
19412 }
19413 }
19414 if optional && nothing {
19415 return Ok(None);
19416 }
19417 let result = UnmountFolderArg {
19418 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
19419 };
19420 Ok(Some(result))
19421 }
19422
19423 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19424 &self,
19425 s: &mut S::SerializeStruct,
19426 ) -> Result<(), S::Error> {
19427 use serde::ser::SerializeStruct;
19428 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
19429 Ok(())
19430 }
19431}
19432
19433impl<'de> ::serde::de::Deserialize<'de> for UnmountFolderArg {
19434 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19435 use serde::de::{MapAccess, Visitor};
19437 struct StructVisitor;
19438 impl<'de> Visitor<'de> for StructVisitor {
19439 type Value = UnmountFolderArg;
19440 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19441 f.write_str("a UnmountFolderArg struct")
19442 }
19443 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19444 UnmountFolderArg::internal_deserialize(map)
19445 }
19446 }
19447 deserializer.deserialize_struct("UnmountFolderArg", UNMOUNT_FOLDER_ARG_FIELDS, StructVisitor)
19448 }
19449}
19450
19451impl ::serde::ser::Serialize for UnmountFolderArg {
19452 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19453 use serde::ser::SerializeStruct;
19455 let mut s = serializer.serialize_struct("UnmountFolderArg", 1)?;
19456 self.internal_serialize::<S>(&mut s)?;
19457 s.end()
19458 }
19459}
19460
19461#[derive(Debug, Clone, PartialEq, Eq)]
19462#[non_exhaustive] pub enum UnmountFolderError {
19464 AccessError(SharedFolderAccessError),
19465 NoPermission,
19467 NotUnmountable,
19470 Other,
19473}
19474
19475impl<'de> ::serde::de::Deserialize<'de> for UnmountFolderError {
19476 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19477 use serde::de::{self, MapAccess, Visitor};
19479 struct EnumVisitor;
19480 impl<'de> Visitor<'de> for EnumVisitor {
19481 type Value = UnmountFolderError;
19482 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19483 f.write_str("a UnmountFolderError structure")
19484 }
19485 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
19486 let tag: &str = match map.next_key()? {
19487 Some(".tag") => map.next_value()?,
19488 _ => return Err(de::Error::missing_field(".tag"))
19489 };
19490 let value = match tag {
19491 "access_error" => {
19492 match map.next_key()? {
19493 Some("access_error") => UnmountFolderError::AccessError(map.next_value()?),
19494 None => return Err(de::Error::missing_field("access_error")),
19495 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
19496 }
19497 }
19498 "no_permission" => UnmountFolderError::NoPermission,
19499 "not_unmountable" => UnmountFolderError::NotUnmountable,
19500 _ => UnmountFolderError::Other,
19501 };
19502 crate::eat_json_fields(&mut map)?;
19503 Ok(value)
19504 }
19505 }
19506 const VARIANTS: &[&str] = &["access_error",
19507 "no_permission",
19508 "not_unmountable",
19509 "other"];
19510 deserializer.deserialize_struct("UnmountFolderError", VARIANTS, EnumVisitor)
19511 }
19512}
19513
19514impl ::serde::ser::Serialize for UnmountFolderError {
19515 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19516 use serde::ser::SerializeStruct;
19518 match self {
19519 UnmountFolderError::AccessError(x) => {
19520 let mut s = serializer.serialize_struct("UnmountFolderError", 2)?;
19522 s.serialize_field(".tag", "access_error")?;
19523 s.serialize_field("access_error", x)?;
19524 s.end()
19525 }
19526 UnmountFolderError::NoPermission => {
19527 let mut s = serializer.serialize_struct("UnmountFolderError", 1)?;
19529 s.serialize_field(".tag", "no_permission")?;
19530 s.end()
19531 }
19532 UnmountFolderError::NotUnmountable => {
19533 let mut s = serializer.serialize_struct("UnmountFolderError", 1)?;
19535 s.serialize_field(".tag", "not_unmountable")?;
19536 s.end()
19537 }
19538 UnmountFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
19539 }
19540 }
19541}
19542
19543impl ::std::error::Error for UnmountFolderError {
19544 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
19545 match self {
19546 UnmountFolderError::AccessError(inner) => Some(inner),
19547 _ => None,
19548 }
19549 }
19550}
19551
19552impl ::std::fmt::Display for UnmountFolderError {
19553 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19554 match self {
19555 UnmountFolderError::AccessError(inner) => write!(f, "UnmountFolderError: {}", inner),
19556 UnmountFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
19557 UnmountFolderError::NotUnmountable => f.write_str("The shared folder can't be unmounted. One example where this can occur is when the shared folder's parent folder is also a shared folder that resides in the current user's Dropbox."),
19558 _ => write!(f, "{:?}", *self),
19559 }
19560 }
19561}
19562
19563#[derive(Debug, Clone, PartialEq, Eq)]
19565#[non_exhaustive] pub struct UnshareFileArg {
19567 pub file: PathOrId,
19569}
19570
19571impl UnshareFileArg {
19572 pub fn new(file: PathOrId) -> Self {
19573 UnshareFileArg {
19574 file,
19575 }
19576 }
19577}
19578
19579const UNSHARE_FILE_ARG_FIELDS: &[&str] = &["file"];
19580impl UnshareFileArg {
19581 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19582 map: V,
19583 ) -> Result<UnshareFileArg, V::Error> {
19584 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19585 }
19586
19587 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19588 mut map: V,
19589 optional: bool,
19590 ) -> Result<Option<UnshareFileArg>, V::Error> {
19591 let mut field_file = None;
19592 let mut nothing = true;
19593 while let Some(key) = map.next_key::<&str>()? {
19594 nothing = false;
19595 match key {
19596 "file" => {
19597 if field_file.is_some() {
19598 return Err(::serde::de::Error::duplicate_field("file"));
19599 }
19600 field_file = Some(map.next_value()?);
19601 }
19602 _ => {
19603 map.next_value::<::serde_json::Value>()?;
19605 }
19606 }
19607 }
19608 if optional && nothing {
19609 return Ok(None);
19610 }
19611 let result = UnshareFileArg {
19612 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
19613 };
19614 Ok(Some(result))
19615 }
19616
19617 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19618 &self,
19619 s: &mut S::SerializeStruct,
19620 ) -> Result<(), S::Error> {
19621 use serde::ser::SerializeStruct;
19622 s.serialize_field("file", &self.file)?;
19623 Ok(())
19624 }
19625}
19626
19627impl<'de> ::serde::de::Deserialize<'de> for UnshareFileArg {
19628 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19629 use serde::de::{MapAccess, Visitor};
19631 struct StructVisitor;
19632 impl<'de> Visitor<'de> for StructVisitor {
19633 type Value = UnshareFileArg;
19634 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19635 f.write_str("a UnshareFileArg struct")
19636 }
19637 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19638 UnshareFileArg::internal_deserialize(map)
19639 }
19640 }
19641 deserializer.deserialize_struct("UnshareFileArg", UNSHARE_FILE_ARG_FIELDS, StructVisitor)
19642 }
19643}
19644
19645impl ::serde::ser::Serialize for UnshareFileArg {
19646 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19647 use serde::ser::SerializeStruct;
19649 let mut s = serializer.serialize_struct("UnshareFileArg", 1)?;
19650 self.internal_serialize::<S>(&mut s)?;
19651 s.end()
19652 }
19653}
19654
19655#[derive(Debug, Clone, PartialEq, Eq)]
19657#[non_exhaustive] pub enum UnshareFileError {
19659 UserError(SharingUserError),
19660 AccessError(SharingFileAccessError),
19661 Other,
19664}
19665
19666impl<'de> ::serde::de::Deserialize<'de> for UnshareFileError {
19667 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19668 use serde::de::{self, MapAccess, Visitor};
19670 struct EnumVisitor;
19671 impl<'de> Visitor<'de> for EnumVisitor {
19672 type Value = UnshareFileError;
19673 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19674 f.write_str("a UnshareFileError structure")
19675 }
19676 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
19677 let tag: &str = match map.next_key()? {
19678 Some(".tag") => map.next_value()?,
19679 _ => return Err(de::Error::missing_field(".tag"))
19680 };
19681 let value = match tag {
19682 "user_error" => {
19683 match map.next_key()? {
19684 Some("user_error") => UnshareFileError::UserError(map.next_value()?),
19685 None => return Err(de::Error::missing_field("user_error")),
19686 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
19687 }
19688 }
19689 "access_error" => {
19690 match map.next_key()? {
19691 Some("access_error") => UnshareFileError::AccessError(map.next_value()?),
19692 None => return Err(de::Error::missing_field("access_error")),
19693 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
19694 }
19695 }
19696 _ => UnshareFileError::Other,
19697 };
19698 crate::eat_json_fields(&mut map)?;
19699 Ok(value)
19700 }
19701 }
19702 const VARIANTS: &[&str] = &["user_error",
19703 "access_error",
19704 "other"];
19705 deserializer.deserialize_struct("UnshareFileError", VARIANTS, EnumVisitor)
19706 }
19707}
19708
19709impl ::serde::ser::Serialize for UnshareFileError {
19710 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19711 use serde::ser::SerializeStruct;
19713 match self {
19714 UnshareFileError::UserError(x) => {
19715 let mut s = serializer.serialize_struct("UnshareFileError", 2)?;
19717 s.serialize_field(".tag", "user_error")?;
19718 s.serialize_field("user_error", x)?;
19719 s.end()
19720 }
19721 UnshareFileError::AccessError(x) => {
19722 let mut s = serializer.serialize_struct("UnshareFileError", 2)?;
19724 s.serialize_field(".tag", "access_error")?;
19725 s.serialize_field("access_error", x)?;
19726 s.end()
19727 }
19728 UnshareFileError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
19729 }
19730 }
19731}
19732
19733impl ::std::error::Error for UnshareFileError {
19734 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
19735 match self {
19736 UnshareFileError::UserError(inner) => Some(inner),
19737 UnshareFileError::AccessError(inner) => Some(inner),
19738 _ => None,
19739 }
19740 }
19741}
19742
19743impl ::std::fmt::Display for UnshareFileError {
19744 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19745 match self {
19746 UnshareFileError::UserError(inner) => write!(f, "UnshareFileError: {}", inner),
19747 UnshareFileError::AccessError(inner) => write!(f, "UnshareFileError: {}", inner),
19748 _ => write!(f, "{:?}", *self),
19749 }
19750 }
19751}
19752
19753#[derive(Debug, Clone, PartialEq, Eq)]
19754#[non_exhaustive] pub struct UnshareFolderArg {
19756 pub shared_folder_id: crate::types::common::SharedFolderId,
19758 pub leave_a_copy: bool,
19762}
19763
19764impl UnshareFolderArg {
19765 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
19766 UnshareFolderArg {
19767 shared_folder_id,
19768 leave_a_copy: false,
19769 }
19770 }
19771
19772 pub fn with_leave_a_copy(mut self, value: bool) -> Self {
19773 self.leave_a_copy = value;
19774 self
19775 }
19776}
19777
19778const UNSHARE_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id",
19779 "leave_a_copy"];
19780impl UnshareFolderArg {
19781 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19782 map: V,
19783 ) -> Result<UnshareFolderArg, V::Error> {
19784 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19785 }
19786
19787 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19788 mut map: V,
19789 optional: bool,
19790 ) -> Result<Option<UnshareFolderArg>, V::Error> {
19791 let mut field_shared_folder_id = None;
19792 let mut field_leave_a_copy = None;
19793 let mut nothing = true;
19794 while let Some(key) = map.next_key::<&str>()? {
19795 nothing = false;
19796 match key {
19797 "shared_folder_id" => {
19798 if field_shared_folder_id.is_some() {
19799 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
19800 }
19801 field_shared_folder_id = Some(map.next_value()?);
19802 }
19803 "leave_a_copy" => {
19804 if field_leave_a_copy.is_some() {
19805 return Err(::serde::de::Error::duplicate_field("leave_a_copy"));
19806 }
19807 field_leave_a_copy = Some(map.next_value()?);
19808 }
19809 _ => {
19810 map.next_value::<::serde_json::Value>()?;
19812 }
19813 }
19814 }
19815 if optional && nothing {
19816 return Ok(None);
19817 }
19818 let result = UnshareFolderArg {
19819 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
19820 leave_a_copy: field_leave_a_copy.unwrap_or(false),
19821 };
19822 Ok(Some(result))
19823 }
19824
19825 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19826 &self,
19827 s: &mut S::SerializeStruct,
19828 ) -> Result<(), S::Error> {
19829 use serde::ser::SerializeStruct;
19830 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
19831 if self.leave_a_copy {
19832 s.serialize_field("leave_a_copy", &self.leave_a_copy)?;
19833 }
19834 Ok(())
19835 }
19836}
19837
19838impl<'de> ::serde::de::Deserialize<'de> for UnshareFolderArg {
19839 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19840 use serde::de::{MapAccess, Visitor};
19842 struct StructVisitor;
19843 impl<'de> Visitor<'de> for StructVisitor {
19844 type Value = UnshareFolderArg;
19845 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19846 f.write_str("a UnshareFolderArg struct")
19847 }
19848 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19849 UnshareFolderArg::internal_deserialize(map)
19850 }
19851 }
19852 deserializer.deserialize_struct("UnshareFolderArg", UNSHARE_FOLDER_ARG_FIELDS, StructVisitor)
19853 }
19854}
19855
19856impl ::serde::ser::Serialize for UnshareFolderArg {
19857 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19858 use serde::ser::SerializeStruct;
19860 let mut s = serializer.serialize_struct("UnshareFolderArg", 2)?;
19861 self.internal_serialize::<S>(&mut s)?;
19862 s.end()
19863 }
19864}
19865
19866#[derive(Debug, Clone, PartialEq, Eq)]
19867#[non_exhaustive] pub enum UnshareFolderError {
19869 AccessError(SharedFolderAccessError),
19870 TeamFolder,
19872 NoPermission,
19874 TooManyFiles,
19876 Other,
19879}
19880
19881impl<'de> ::serde::de::Deserialize<'de> for UnshareFolderError {
19882 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19883 use serde::de::{self, MapAccess, Visitor};
19885 struct EnumVisitor;
19886 impl<'de> Visitor<'de> for EnumVisitor {
19887 type Value = UnshareFolderError;
19888 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19889 f.write_str("a UnshareFolderError structure")
19890 }
19891 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
19892 let tag: &str = match map.next_key()? {
19893 Some(".tag") => map.next_value()?,
19894 _ => return Err(de::Error::missing_field(".tag"))
19895 };
19896 let value = match tag {
19897 "access_error" => {
19898 match map.next_key()? {
19899 Some("access_error") => UnshareFolderError::AccessError(map.next_value()?),
19900 None => return Err(de::Error::missing_field("access_error")),
19901 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
19902 }
19903 }
19904 "team_folder" => UnshareFolderError::TeamFolder,
19905 "no_permission" => UnshareFolderError::NoPermission,
19906 "too_many_files" => UnshareFolderError::TooManyFiles,
19907 _ => UnshareFolderError::Other,
19908 };
19909 crate::eat_json_fields(&mut map)?;
19910 Ok(value)
19911 }
19912 }
19913 const VARIANTS: &[&str] = &["access_error",
19914 "team_folder",
19915 "no_permission",
19916 "too_many_files",
19917 "other"];
19918 deserializer.deserialize_struct("UnshareFolderError", VARIANTS, EnumVisitor)
19919 }
19920}
19921
19922impl ::serde::ser::Serialize for UnshareFolderError {
19923 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19924 use serde::ser::SerializeStruct;
19926 match self {
19927 UnshareFolderError::AccessError(x) => {
19928 let mut s = serializer.serialize_struct("UnshareFolderError", 2)?;
19930 s.serialize_field(".tag", "access_error")?;
19931 s.serialize_field("access_error", x)?;
19932 s.end()
19933 }
19934 UnshareFolderError::TeamFolder => {
19935 let mut s = serializer.serialize_struct("UnshareFolderError", 1)?;
19937 s.serialize_field(".tag", "team_folder")?;
19938 s.end()
19939 }
19940 UnshareFolderError::NoPermission => {
19941 let mut s = serializer.serialize_struct("UnshareFolderError", 1)?;
19943 s.serialize_field(".tag", "no_permission")?;
19944 s.end()
19945 }
19946 UnshareFolderError::TooManyFiles => {
19947 let mut s = serializer.serialize_struct("UnshareFolderError", 1)?;
19949 s.serialize_field(".tag", "too_many_files")?;
19950 s.end()
19951 }
19952 UnshareFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
19953 }
19954 }
19955}
19956
19957impl ::std::error::Error for UnshareFolderError {
19958 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
19959 match self {
19960 UnshareFolderError::AccessError(inner) => Some(inner),
19961 _ => None,
19962 }
19963 }
19964}
19965
19966impl ::std::fmt::Display for UnshareFolderError {
19967 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19968 match self {
19969 UnshareFolderError::AccessError(inner) => write!(f, "UnshareFolderError: {}", inner),
19970 UnshareFolderError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
19971 UnshareFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
19972 UnshareFolderError::TooManyFiles => f.write_str("This shared folder has too many files to be unshared."),
19973 _ => write!(f, "{:?}", *self),
19974 }
19975 }
19976}
19977
19978#[derive(Debug, Clone, PartialEq, Eq)]
19980#[non_exhaustive] pub struct UpdateFileMemberArgs {
19982 pub file: PathOrId,
19984 pub member: MemberSelector,
19986 pub access_level: AccessLevel,
19988}
19989
19990impl UpdateFileMemberArgs {
19991 pub fn new(file: PathOrId, member: MemberSelector, access_level: AccessLevel) -> Self {
19992 UpdateFileMemberArgs {
19993 file,
19994 member,
19995 access_level,
19996 }
19997 }
19998}
19999
20000const UPDATE_FILE_MEMBER_ARGS_FIELDS: &[&str] = &["file",
20001 "member",
20002 "access_level"];
20003impl UpdateFileMemberArgs {
20004 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
20005 map: V,
20006 ) -> Result<UpdateFileMemberArgs, V::Error> {
20007 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
20008 }
20009
20010 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
20011 mut map: V,
20012 optional: bool,
20013 ) -> Result<Option<UpdateFileMemberArgs>, V::Error> {
20014 let mut field_file = None;
20015 let mut field_member = None;
20016 let mut field_access_level = None;
20017 let mut nothing = true;
20018 while let Some(key) = map.next_key::<&str>()? {
20019 nothing = false;
20020 match key {
20021 "file" => {
20022 if field_file.is_some() {
20023 return Err(::serde::de::Error::duplicate_field("file"));
20024 }
20025 field_file = Some(map.next_value()?);
20026 }
20027 "member" => {
20028 if field_member.is_some() {
20029 return Err(::serde::de::Error::duplicate_field("member"));
20030 }
20031 field_member = Some(map.next_value()?);
20032 }
20033 "access_level" => {
20034 if field_access_level.is_some() {
20035 return Err(::serde::de::Error::duplicate_field("access_level"));
20036 }
20037 field_access_level = Some(map.next_value()?);
20038 }
20039 _ => {
20040 map.next_value::<::serde_json::Value>()?;
20042 }
20043 }
20044 }
20045 if optional && nothing {
20046 return Ok(None);
20047 }
20048 let result = UpdateFileMemberArgs {
20049 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
20050 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
20051 access_level: field_access_level.ok_or_else(|| ::serde::de::Error::missing_field("access_level"))?,
20052 };
20053 Ok(Some(result))
20054 }
20055
20056 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
20057 &self,
20058 s: &mut S::SerializeStruct,
20059 ) -> Result<(), S::Error> {
20060 use serde::ser::SerializeStruct;
20061 s.serialize_field("file", &self.file)?;
20062 s.serialize_field("member", &self.member)?;
20063 s.serialize_field("access_level", &self.access_level)?;
20064 Ok(())
20065 }
20066}
20067
20068impl<'de> ::serde::de::Deserialize<'de> for UpdateFileMemberArgs {
20069 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20070 use serde::de::{MapAccess, Visitor};
20072 struct StructVisitor;
20073 impl<'de> Visitor<'de> for StructVisitor {
20074 type Value = UpdateFileMemberArgs;
20075 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20076 f.write_str("a UpdateFileMemberArgs struct")
20077 }
20078 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
20079 UpdateFileMemberArgs::internal_deserialize(map)
20080 }
20081 }
20082 deserializer.deserialize_struct("UpdateFileMemberArgs", UPDATE_FILE_MEMBER_ARGS_FIELDS, StructVisitor)
20083 }
20084}
20085
20086impl ::serde::ser::Serialize for UpdateFileMemberArgs {
20087 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20088 use serde::ser::SerializeStruct;
20090 let mut s = serializer.serialize_struct("UpdateFileMemberArgs", 3)?;
20091 self.internal_serialize::<S>(&mut s)?;
20092 s.end()
20093 }
20094}
20095
20096#[derive(Debug, Clone, PartialEq, Eq)]
20097#[non_exhaustive] pub struct UpdateFolderMemberArg {
20099 pub shared_folder_id: crate::types::common::SharedFolderId,
20101 pub member: MemberSelector,
20104 pub access_level: AccessLevel,
20106}
20107
20108impl UpdateFolderMemberArg {
20109 pub fn new(
20110 shared_folder_id: crate::types::common::SharedFolderId,
20111 member: MemberSelector,
20112 access_level: AccessLevel,
20113 ) -> Self {
20114 UpdateFolderMemberArg {
20115 shared_folder_id,
20116 member,
20117 access_level,
20118 }
20119 }
20120}
20121
20122const UPDATE_FOLDER_MEMBER_ARG_FIELDS: &[&str] = &["shared_folder_id",
20123 "member",
20124 "access_level"];
20125impl UpdateFolderMemberArg {
20126 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
20127 map: V,
20128 ) -> Result<UpdateFolderMemberArg, V::Error> {
20129 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
20130 }
20131
20132 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
20133 mut map: V,
20134 optional: bool,
20135 ) -> Result<Option<UpdateFolderMemberArg>, V::Error> {
20136 let mut field_shared_folder_id = None;
20137 let mut field_member = None;
20138 let mut field_access_level = None;
20139 let mut nothing = true;
20140 while let Some(key) = map.next_key::<&str>()? {
20141 nothing = false;
20142 match key {
20143 "shared_folder_id" => {
20144 if field_shared_folder_id.is_some() {
20145 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
20146 }
20147 field_shared_folder_id = Some(map.next_value()?);
20148 }
20149 "member" => {
20150 if field_member.is_some() {
20151 return Err(::serde::de::Error::duplicate_field("member"));
20152 }
20153 field_member = Some(map.next_value()?);
20154 }
20155 "access_level" => {
20156 if field_access_level.is_some() {
20157 return Err(::serde::de::Error::duplicate_field("access_level"));
20158 }
20159 field_access_level = Some(map.next_value()?);
20160 }
20161 _ => {
20162 map.next_value::<::serde_json::Value>()?;
20164 }
20165 }
20166 }
20167 if optional && nothing {
20168 return Ok(None);
20169 }
20170 let result = UpdateFolderMemberArg {
20171 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
20172 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
20173 access_level: field_access_level.ok_or_else(|| ::serde::de::Error::missing_field("access_level"))?,
20174 };
20175 Ok(Some(result))
20176 }
20177
20178 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
20179 &self,
20180 s: &mut S::SerializeStruct,
20181 ) -> Result<(), S::Error> {
20182 use serde::ser::SerializeStruct;
20183 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
20184 s.serialize_field("member", &self.member)?;
20185 s.serialize_field("access_level", &self.access_level)?;
20186 Ok(())
20187 }
20188}
20189
20190impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderMemberArg {
20191 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20192 use serde::de::{MapAccess, Visitor};
20194 struct StructVisitor;
20195 impl<'de> Visitor<'de> for StructVisitor {
20196 type Value = UpdateFolderMemberArg;
20197 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20198 f.write_str("a UpdateFolderMemberArg struct")
20199 }
20200 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
20201 UpdateFolderMemberArg::internal_deserialize(map)
20202 }
20203 }
20204 deserializer.deserialize_struct("UpdateFolderMemberArg", UPDATE_FOLDER_MEMBER_ARG_FIELDS, StructVisitor)
20205 }
20206}
20207
20208impl ::serde::ser::Serialize for UpdateFolderMemberArg {
20209 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20210 use serde::ser::SerializeStruct;
20212 let mut s = serializer.serialize_struct("UpdateFolderMemberArg", 3)?;
20213 self.internal_serialize::<S>(&mut s)?;
20214 s.end()
20215 }
20216}
20217
20218#[derive(Debug, Clone, PartialEq, Eq)]
20219#[non_exhaustive] pub enum UpdateFolderMemberError {
20221 AccessError(SharedFolderAccessError),
20222 MemberError(SharedFolderMemberError),
20223 NoExplicitAccess(AddFolderMemberError),
20226 InsufficientPlan,
20230 NoPermission,
20232 Other,
20235}
20236
20237impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderMemberError {
20238 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20239 use serde::de::{self, MapAccess, Visitor};
20241 struct EnumVisitor;
20242 impl<'de> Visitor<'de> for EnumVisitor {
20243 type Value = UpdateFolderMemberError;
20244 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20245 f.write_str("a UpdateFolderMemberError structure")
20246 }
20247 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
20248 let tag: &str = match map.next_key()? {
20249 Some(".tag") => map.next_value()?,
20250 _ => return Err(de::Error::missing_field(".tag"))
20251 };
20252 let value = match tag {
20253 "access_error" => {
20254 match map.next_key()? {
20255 Some("access_error") => UpdateFolderMemberError::AccessError(map.next_value()?),
20256 None => return Err(de::Error::missing_field("access_error")),
20257 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
20258 }
20259 }
20260 "member_error" => {
20261 match map.next_key()? {
20262 Some("member_error") => UpdateFolderMemberError::MemberError(map.next_value()?),
20263 None => return Err(de::Error::missing_field("member_error")),
20264 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
20265 }
20266 }
20267 "no_explicit_access" => {
20268 match map.next_key()? {
20269 Some("no_explicit_access") => UpdateFolderMemberError::NoExplicitAccess(map.next_value()?),
20270 None => return Err(de::Error::missing_field("no_explicit_access")),
20271 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
20272 }
20273 }
20274 "insufficient_plan" => UpdateFolderMemberError::InsufficientPlan,
20275 "no_permission" => UpdateFolderMemberError::NoPermission,
20276 _ => UpdateFolderMemberError::Other,
20277 };
20278 crate::eat_json_fields(&mut map)?;
20279 Ok(value)
20280 }
20281 }
20282 const VARIANTS: &[&str] = &["access_error",
20283 "member_error",
20284 "no_explicit_access",
20285 "insufficient_plan",
20286 "no_permission",
20287 "other"];
20288 deserializer.deserialize_struct("UpdateFolderMemberError", VARIANTS, EnumVisitor)
20289 }
20290}
20291
20292impl ::serde::ser::Serialize for UpdateFolderMemberError {
20293 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20294 use serde::ser::SerializeStruct;
20296 match self {
20297 UpdateFolderMemberError::AccessError(x) => {
20298 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 2)?;
20300 s.serialize_field(".tag", "access_error")?;
20301 s.serialize_field("access_error", x)?;
20302 s.end()
20303 }
20304 UpdateFolderMemberError::MemberError(x) => {
20305 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 2)?;
20307 s.serialize_field(".tag", "member_error")?;
20308 s.serialize_field("member_error", x)?;
20309 s.end()
20310 }
20311 UpdateFolderMemberError::NoExplicitAccess(x) => {
20312 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 2)?;
20314 s.serialize_field(".tag", "no_explicit_access")?;
20315 s.serialize_field("no_explicit_access", x)?;
20316 s.end()
20317 }
20318 UpdateFolderMemberError::InsufficientPlan => {
20319 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 1)?;
20321 s.serialize_field(".tag", "insufficient_plan")?;
20322 s.end()
20323 }
20324 UpdateFolderMemberError::NoPermission => {
20325 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 1)?;
20327 s.serialize_field(".tag", "no_permission")?;
20328 s.end()
20329 }
20330 UpdateFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
20331 }
20332 }
20333}
20334
20335impl ::std::error::Error for UpdateFolderMemberError {
20336 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
20337 match self {
20338 UpdateFolderMemberError::AccessError(inner) => Some(inner),
20339 UpdateFolderMemberError::MemberError(inner) => Some(inner),
20340 UpdateFolderMemberError::NoExplicitAccess(inner) => Some(inner),
20341 _ => None,
20342 }
20343 }
20344}
20345
20346impl ::std::fmt::Display for UpdateFolderMemberError {
20347 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20348 match self {
20349 UpdateFolderMemberError::AccessError(inner) => write!(f, "UpdateFolderMemberError: {}", inner),
20350 UpdateFolderMemberError::MemberError(inner) => write!(f, "UpdateFolderMemberError: {}", inner),
20351 UpdateFolderMemberError::NoExplicitAccess(inner) => write!(f, "If updating the access type required the member to be added to the shared folder and there was an error when adding the member: {}", inner),
20352 UpdateFolderMemberError::InsufficientPlan => f.write_str("The current user's account doesn't support this action. An example of this is when downgrading a member from editor to viewer. This action can only be performed by users that have upgraded to a Pro or Business plan."),
20353 UpdateFolderMemberError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
20354 _ => write!(f, "{:?}", *self),
20355 }
20356 }
20357}
20358
20359#[derive(Debug, Clone, PartialEq, Eq)]
20361#[non_exhaustive] pub struct UpdateFolderPolicyArg {
20363 pub shared_folder_id: crate::types::common::SharedFolderId,
20365 pub member_policy: Option<MemberPolicy>,
20367 pub acl_update_policy: Option<AclUpdatePolicy>,
20369 pub viewer_info_policy: Option<ViewerInfoPolicy>,
20371 pub shared_link_policy: Option<SharedLinkPolicy>,
20374 pub link_settings: Option<LinkSettings>,
20376 pub actions: Option<Vec<FolderAction>>,
20380}
20381
20382impl UpdateFolderPolicyArg {
20383 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
20384 UpdateFolderPolicyArg {
20385 shared_folder_id,
20386 member_policy: None,
20387 acl_update_policy: None,
20388 viewer_info_policy: None,
20389 shared_link_policy: None,
20390 link_settings: None,
20391 actions: None,
20392 }
20393 }
20394
20395 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
20396 self.member_policy = Some(value);
20397 self
20398 }
20399
20400 pub fn with_acl_update_policy(mut self, value: AclUpdatePolicy) -> Self {
20401 self.acl_update_policy = Some(value);
20402 self
20403 }
20404
20405 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
20406 self.viewer_info_policy = Some(value);
20407 self
20408 }
20409
20410 pub fn with_shared_link_policy(mut self, value: SharedLinkPolicy) -> Self {
20411 self.shared_link_policy = Some(value);
20412 self
20413 }
20414
20415 pub fn with_link_settings(mut self, value: LinkSettings) -> Self {
20416 self.link_settings = Some(value);
20417 self
20418 }
20419
20420 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
20421 self.actions = Some(value);
20422 self
20423 }
20424}
20425
20426const UPDATE_FOLDER_POLICY_ARG_FIELDS: &[&str] = &["shared_folder_id",
20427 "member_policy",
20428 "acl_update_policy",
20429 "viewer_info_policy",
20430 "shared_link_policy",
20431 "link_settings",
20432 "actions"];
20433impl UpdateFolderPolicyArg {
20434 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
20435 map: V,
20436 ) -> Result<UpdateFolderPolicyArg, V::Error> {
20437 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
20438 }
20439
20440 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
20441 mut map: V,
20442 optional: bool,
20443 ) -> Result<Option<UpdateFolderPolicyArg>, V::Error> {
20444 let mut field_shared_folder_id = None;
20445 let mut field_member_policy = None;
20446 let mut field_acl_update_policy = None;
20447 let mut field_viewer_info_policy = None;
20448 let mut field_shared_link_policy = None;
20449 let mut field_link_settings = None;
20450 let mut field_actions = None;
20451 let mut nothing = true;
20452 while let Some(key) = map.next_key::<&str>()? {
20453 nothing = false;
20454 match key {
20455 "shared_folder_id" => {
20456 if field_shared_folder_id.is_some() {
20457 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
20458 }
20459 field_shared_folder_id = Some(map.next_value()?);
20460 }
20461 "member_policy" => {
20462 if field_member_policy.is_some() {
20463 return Err(::serde::de::Error::duplicate_field("member_policy"));
20464 }
20465 field_member_policy = Some(map.next_value()?);
20466 }
20467 "acl_update_policy" => {
20468 if field_acl_update_policy.is_some() {
20469 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
20470 }
20471 field_acl_update_policy = Some(map.next_value()?);
20472 }
20473 "viewer_info_policy" => {
20474 if field_viewer_info_policy.is_some() {
20475 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
20476 }
20477 field_viewer_info_policy = Some(map.next_value()?);
20478 }
20479 "shared_link_policy" => {
20480 if field_shared_link_policy.is_some() {
20481 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
20482 }
20483 field_shared_link_policy = Some(map.next_value()?);
20484 }
20485 "link_settings" => {
20486 if field_link_settings.is_some() {
20487 return Err(::serde::de::Error::duplicate_field("link_settings"));
20488 }
20489 field_link_settings = Some(map.next_value()?);
20490 }
20491 "actions" => {
20492 if field_actions.is_some() {
20493 return Err(::serde::de::Error::duplicate_field("actions"));
20494 }
20495 field_actions = Some(map.next_value()?);
20496 }
20497 _ => {
20498 map.next_value::<::serde_json::Value>()?;
20500 }
20501 }
20502 }
20503 if optional && nothing {
20504 return Ok(None);
20505 }
20506 let result = UpdateFolderPolicyArg {
20507 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
20508 member_policy: field_member_policy.and_then(Option::flatten),
20509 acl_update_policy: field_acl_update_policy.and_then(Option::flatten),
20510 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
20511 shared_link_policy: field_shared_link_policy.and_then(Option::flatten),
20512 link_settings: field_link_settings.and_then(Option::flatten),
20513 actions: field_actions.and_then(Option::flatten),
20514 };
20515 Ok(Some(result))
20516 }
20517
20518 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
20519 &self,
20520 s: &mut S::SerializeStruct,
20521 ) -> Result<(), S::Error> {
20522 use serde::ser::SerializeStruct;
20523 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
20524 if let Some(val) = &self.member_policy {
20525 s.serialize_field("member_policy", val)?;
20526 }
20527 if let Some(val) = &self.acl_update_policy {
20528 s.serialize_field("acl_update_policy", val)?;
20529 }
20530 if let Some(val) = &self.viewer_info_policy {
20531 s.serialize_field("viewer_info_policy", val)?;
20532 }
20533 if let Some(val) = &self.shared_link_policy {
20534 s.serialize_field("shared_link_policy", val)?;
20535 }
20536 if let Some(val) = &self.link_settings {
20537 s.serialize_field("link_settings", val)?;
20538 }
20539 if let Some(val) = &self.actions {
20540 s.serialize_field("actions", val)?;
20541 }
20542 Ok(())
20543 }
20544}
20545
20546impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderPolicyArg {
20547 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20548 use serde::de::{MapAccess, Visitor};
20550 struct StructVisitor;
20551 impl<'de> Visitor<'de> for StructVisitor {
20552 type Value = UpdateFolderPolicyArg;
20553 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20554 f.write_str("a UpdateFolderPolicyArg struct")
20555 }
20556 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
20557 UpdateFolderPolicyArg::internal_deserialize(map)
20558 }
20559 }
20560 deserializer.deserialize_struct("UpdateFolderPolicyArg", UPDATE_FOLDER_POLICY_ARG_FIELDS, StructVisitor)
20561 }
20562}
20563
20564impl ::serde::ser::Serialize for UpdateFolderPolicyArg {
20565 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20566 use serde::ser::SerializeStruct;
20568 let mut s = serializer.serialize_struct("UpdateFolderPolicyArg", 7)?;
20569 self.internal_serialize::<S>(&mut s)?;
20570 s.end()
20571 }
20572}
20573
20574#[derive(Debug, Clone, PartialEq, Eq)]
20575#[non_exhaustive] pub enum UpdateFolderPolicyError {
20577 AccessError(SharedFolderAccessError),
20578 NotOnTeam,
20581 TeamPolicyDisallowsMemberPolicy,
20584 DisallowedSharedLinkPolicy,
20587 NoPermission,
20589 TeamFolder,
20591 Other,
20594}
20595
20596impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderPolicyError {
20597 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20598 use serde::de::{self, MapAccess, Visitor};
20600 struct EnumVisitor;
20601 impl<'de> Visitor<'de> for EnumVisitor {
20602 type Value = UpdateFolderPolicyError;
20603 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20604 f.write_str("a UpdateFolderPolicyError structure")
20605 }
20606 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
20607 let tag: &str = match map.next_key()? {
20608 Some(".tag") => map.next_value()?,
20609 _ => return Err(de::Error::missing_field(".tag"))
20610 };
20611 let value = match tag {
20612 "access_error" => {
20613 match map.next_key()? {
20614 Some("access_error") => UpdateFolderPolicyError::AccessError(map.next_value()?),
20615 None => return Err(de::Error::missing_field("access_error")),
20616 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
20617 }
20618 }
20619 "not_on_team" => UpdateFolderPolicyError::NotOnTeam,
20620 "team_policy_disallows_member_policy" => UpdateFolderPolicyError::TeamPolicyDisallowsMemberPolicy,
20621 "disallowed_shared_link_policy" => UpdateFolderPolicyError::DisallowedSharedLinkPolicy,
20622 "no_permission" => UpdateFolderPolicyError::NoPermission,
20623 "team_folder" => UpdateFolderPolicyError::TeamFolder,
20624 _ => UpdateFolderPolicyError::Other,
20625 };
20626 crate::eat_json_fields(&mut map)?;
20627 Ok(value)
20628 }
20629 }
20630 const VARIANTS: &[&str] = &["access_error",
20631 "not_on_team",
20632 "team_policy_disallows_member_policy",
20633 "disallowed_shared_link_policy",
20634 "no_permission",
20635 "team_folder",
20636 "other"];
20637 deserializer.deserialize_struct("UpdateFolderPolicyError", VARIANTS, EnumVisitor)
20638 }
20639}
20640
20641impl ::serde::ser::Serialize for UpdateFolderPolicyError {
20642 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20643 use serde::ser::SerializeStruct;
20645 match self {
20646 UpdateFolderPolicyError::AccessError(x) => {
20647 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 2)?;
20649 s.serialize_field(".tag", "access_error")?;
20650 s.serialize_field("access_error", x)?;
20651 s.end()
20652 }
20653 UpdateFolderPolicyError::NotOnTeam => {
20654 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
20656 s.serialize_field(".tag", "not_on_team")?;
20657 s.end()
20658 }
20659 UpdateFolderPolicyError::TeamPolicyDisallowsMemberPolicy => {
20660 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
20662 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
20663 s.end()
20664 }
20665 UpdateFolderPolicyError::DisallowedSharedLinkPolicy => {
20666 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
20668 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
20669 s.end()
20670 }
20671 UpdateFolderPolicyError::NoPermission => {
20672 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
20674 s.serialize_field(".tag", "no_permission")?;
20675 s.end()
20676 }
20677 UpdateFolderPolicyError::TeamFolder => {
20678 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
20680 s.serialize_field(".tag", "team_folder")?;
20681 s.end()
20682 }
20683 UpdateFolderPolicyError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
20684 }
20685 }
20686}
20687
20688impl ::std::error::Error for UpdateFolderPolicyError {
20689 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
20690 match self {
20691 UpdateFolderPolicyError::AccessError(inner) => Some(inner),
20692 _ => None,
20693 }
20694 }
20695}
20696
20697impl ::std::fmt::Display for UpdateFolderPolicyError {
20698 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20699 match self {
20700 UpdateFolderPolicyError::AccessError(inner) => write!(f, "UpdateFolderPolicyError: {}", inner),
20701 UpdateFolderPolicyError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
20702 UpdateFolderPolicyError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
20703 _ => write!(f, "{:?}", *self),
20704 }
20705 }
20706}
20707
20708#[derive(Debug, Clone, PartialEq, Eq)]
20710#[non_exhaustive] pub struct UserFileMembershipInfo {
20712 pub access_type: AccessLevel,
20715 pub user: UserInfo,
20717 pub permissions: Option<Vec<MemberPermission>>,
20720 pub initials: Option<String>,
20722 pub is_inherited: bool,
20724 pub time_last_seen: Option<crate::types::common::DropboxTimestamp>,
20727 pub platform_type: Option<crate::types::seen_state::PlatformType>,
20729}
20730
20731impl UserFileMembershipInfo {
20732 pub fn new(access_type: AccessLevel, user: UserInfo) -> Self {
20733 UserFileMembershipInfo {
20734 access_type,
20735 user,
20736 permissions: None,
20737 initials: None,
20738 is_inherited: false,
20739 time_last_seen: None,
20740 platform_type: None,
20741 }
20742 }
20743
20744 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
20745 self.permissions = Some(value);
20746 self
20747 }
20748
20749 pub fn with_initials(mut self, value: String) -> Self {
20750 self.initials = Some(value);
20751 self
20752 }
20753
20754 pub fn with_is_inherited(mut self, value: bool) -> Self {
20755 self.is_inherited = value;
20756 self
20757 }
20758
20759 pub fn with_time_last_seen(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
20760 self.time_last_seen = Some(value);
20761 self
20762 }
20763
20764 pub fn with_platform_type(mut self, value: crate::types::seen_state::PlatformType) -> Self {
20765 self.platform_type = Some(value);
20766 self
20767 }
20768}
20769
20770const USER_FILE_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
20771 "user",
20772 "permissions",
20773 "initials",
20774 "is_inherited",
20775 "time_last_seen",
20776 "platform_type"];
20777impl UserFileMembershipInfo {
20778 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
20779 map: V,
20780 ) -> Result<UserFileMembershipInfo, V::Error> {
20781 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
20782 }
20783
20784 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
20785 mut map: V,
20786 optional: bool,
20787 ) -> Result<Option<UserFileMembershipInfo>, V::Error> {
20788 let mut field_access_type = None;
20789 let mut field_user = None;
20790 let mut field_permissions = None;
20791 let mut field_initials = None;
20792 let mut field_is_inherited = None;
20793 let mut field_time_last_seen = None;
20794 let mut field_platform_type = None;
20795 let mut nothing = true;
20796 while let Some(key) = map.next_key::<&str>()? {
20797 nothing = false;
20798 match key {
20799 "access_type" => {
20800 if field_access_type.is_some() {
20801 return Err(::serde::de::Error::duplicate_field("access_type"));
20802 }
20803 field_access_type = Some(map.next_value()?);
20804 }
20805 "user" => {
20806 if field_user.is_some() {
20807 return Err(::serde::de::Error::duplicate_field("user"));
20808 }
20809 field_user = Some(map.next_value()?);
20810 }
20811 "permissions" => {
20812 if field_permissions.is_some() {
20813 return Err(::serde::de::Error::duplicate_field("permissions"));
20814 }
20815 field_permissions = Some(map.next_value()?);
20816 }
20817 "initials" => {
20818 if field_initials.is_some() {
20819 return Err(::serde::de::Error::duplicate_field("initials"));
20820 }
20821 field_initials = Some(map.next_value()?);
20822 }
20823 "is_inherited" => {
20824 if field_is_inherited.is_some() {
20825 return Err(::serde::de::Error::duplicate_field("is_inherited"));
20826 }
20827 field_is_inherited = Some(map.next_value()?);
20828 }
20829 "time_last_seen" => {
20830 if field_time_last_seen.is_some() {
20831 return Err(::serde::de::Error::duplicate_field("time_last_seen"));
20832 }
20833 field_time_last_seen = Some(map.next_value()?);
20834 }
20835 "platform_type" => {
20836 if field_platform_type.is_some() {
20837 return Err(::serde::de::Error::duplicate_field("platform_type"));
20838 }
20839 field_platform_type = Some(map.next_value()?);
20840 }
20841 _ => {
20842 map.next_value::<::serde_json::Value>()?;
20844 }
20845 }
20846 }
20847 if optional && nothing {
20848 return Ok(None);
20849 }
20850 let result = UserFileMembershipInfo {
20851 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
20852 user: field_user.ok_or_else(|| ::serde::de::Error::missing_field("user"))?,
20853 permissions: field_permissions.and_then(Option::flatten),
20854 initials: field_initials.and_then(Option::flatten),
20855 is_inherited: field_is_inherited.unwrap_or(false),
20856 time_last_seen: field_time_last_seen.and_then(Option::flatten),
20857 platform_type: field_platform_type.and_then(Option::flatten),
20858 };
20859 Ok(Some(result))
20860 }
20861
20862 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
20863 &self,
20864 s: &mut S::SerializeStruct,
20865 ) -> Result<(), S::Error> {
20866 use serde::ser::SerializeStruct;
20867 s.serialize_field("access_type", &self.access_type)?;
20868 s.serialize_field("user", &self.user)?;
20869 if let Some(val) = &self.permissions {
20870 s.serialize_field("permissions", val)?;
20871 }
20872 if let Some(val) = &self.initials {
20873 s.serialize_field("initials", val)?;
20874 }
20875 if self.is_inherited {
20876 s.serialize_field("is_inherited", &self.is_inherited)?;
20877 }
20878 if let Some(val) = &self.time_last_seen {
20879 s.serialize_field("time_last_seen", val)?;
20880 }
20881 if let Some(val) = &self.platform_type {
20882 s.serialize_field("platform_type", val)?;
20883 }
20884 Ok(())
20885 }
20886}
20887
20888impl<'de> ::serde::de::Deserialize<'de> for UserFileMembershipInfo {
20889 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20890 use serde::de::{MapAccess, Visitor};
20892 struct StructVisitor;
20893 impl<'de> Visitor<'de> for StructVisitor {
20894 type Value = UserFileMembershipInfo;
20895 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20896 f.write_str("a UserFileMembershipInfo struct")
20897 }
20898 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
20899 UserFileMembershipInfo::internal_deserialize(map)
20900 }
20901 }
20902 deserializer.deserialize_struct("UserFileMembershipInfo", USER_FILE_MEMBERSHIP_INFO_FIELDS, StructVisitor)
20903 }
20904}
20905
20906impl ::serde::ser::Serialize for UserFileMembershipInfo {
20907 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20908 use serde::ser::SerializeStruct;
20910 let mut s = serializer.serialize_struct("UserFileMembershipInfo", 7)?;
20911 self.internal_serialize::<S>(&mut s)?;
20912 s.end()
20913 }
20914}
20915
20916impl From<UserFileMembershipInfo> for UserMembershipInfo {
20918 fn from(subtype: UserFileMembershipInfo) -> Self {
20919 Self {
20920 access_type: subtype.access_type,
20921 user: subtype.user,
20922 permissions: subtype.permissions,
20923 initials: subtype.initials,
20924 is_inherited: subtype.is_inherited,
20925 }
20926 }
20927}
20928#[derive(Debug, Clone, PartialEq, Eq)]
20932#[non_exhaustive] pub struct UserInfo {
20934 pub account_id: crate::types::users_common::AccountId,
20936 pub email: String,
20938 pub display_name: String,
20940 pub same_team: bool,
20942 pub team_member_id: Option<String>,
20944}
20945
20946impl UserInfo {
20947 pub fn new(
20948 account_id: crate::types::users_common::AccountId,
20949 email: String,
20950 display_name: String,
20951 same_team: bool,
20952 ) -> Self {
20953 UserInfo {
20954 account_id,
20955 email,
20956 display_name,
20957 same_team,
20958 team_member_id: None,
20959 }
20960 }
20961
20962 pub fn with_team_member_id(mut self, value: String) -> Self {
20963 self.team_member_id = Some(value);
20964 self
20965 }
20966}
20967
20968const USER_INFO_FIELDS: &[&str] = &["account_id",
20969 "email",
20970 "display_name",
20971 "same_team",
20972 "team_member_id"];
20973impl UserInfo {
20974 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
20975 map: V,
20976 ) -> Result<UserInfo, V::Error> {
20977 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
20978 }
20979
20980 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
20981 mut map: V,
20982 optional: bool,
20983 ) -> Result<Option<UserInfo>, V::Error> {
20984 let mut field_account_id = None;
20985 let mut field_email = None;
20986 let mut field_display_name = None;
20987 let mut field_same_team = None;
20988 let mut field_team_member_id = None;
20989 let mut nothing = true;
20990 while let Some(key) = map.next_key::<&str>()? {
20991 nothing = false;
20992 match key {
20993 "account_id" => {
20994 if field_account_id.is_some() {
20995 return Err(::serde::de::Error::duplicate_field("account_id"));
20996 }
20997 field_account_id = Some(map.next_value()?);
20998 }
20999 "email" => {
21000 if field_email.is_some() {
21001 return Err(::serde::de::Error::duplicate_field("email"));
21002 }
21003 field_email = Some(map.next_value()?);
21004 }
21005 "display_name" => {
21006 if field_display_name.is_some() {
21007 return Err(::serde::de::Error::duplicate_field("display_name"));
21008 }
21009 field_display_name = Some(map.next_value()?);
21010 }
21011 "same_team" => {
21012 if field_same_team.is_some() {
21013 return Err(::serde::de::Error::duplicate_field("same_team"));
21014 }
21015 field_same_team = Some(map.next_value()?);
21016 }
21017 "team_member_id" => {
21018 if field_team_member_id.is_some() {
21019 return Err(::serde::de::Error::duplicate_field("team_member_id"));
21020 }
21021 field_team_member_id = Some(map.next_value()?);
21022 }
21023 _ => {
21024 map.next_value::<::serde_json::Value>()?;
21026 }
21027 }
21028 }
21029 if optional && nothing {
21030 return Ok(None);
21031 }
21032 let result = UserInfo {
21033 account_id: field_account_id.ok_or_else(|| ::serde::de::Error::missing_field("account_id"))?,
21034 email: field_email.ok_or_else(|| ::serde::de::Error::missing_field("email"))?,
21035 display_name: field_display_name.ok_or_else(|| ::serde::de::Error::missing_field("display_name"))?,
21036 same_team: field_same_team.ok_or_else(|| ::serde::de::Error::missing_field("same_team"))?,
21037 team_member_id: field_team_member_id.and_then(Option::flatten),
21038 };
21039 Ok(Some(result))
21040 }
21041
21042 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
21043 &self,
21044 s: &mut S::SerializeStruct,
21045 ) -> Result<(), S::Error> {
21046 use serde::ser::SerializeStruct;
21047 s.serialize_field("account_id", &self.account_id)?;
21048 s.serialize_field("email", &self.email)?;
21049 s.serialize_field("display_name", &self.display_name)?;
21050 s.serialize_field("same_team", &self.same_team)?;
21051 if let Some(val) = &self.team_member_id {
21052 s.serialize_field("team_member_id", val)?;
21053 }
21054 Ok(())
21055 }
21056}
21057
21058impl<'de> ::serde::de::Deserialize<'de> for UserInfo {
21059 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21060 use serde::de::{MapAccess, Visitor};
21062 struct StructVisitor;
21063 impl<'de> Visitor<'de> for StructVisitor {
21064 type Value = UserInfo;
21065 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21066 f.write_str("a UserInfo struct")
21067 }
21068 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
21069 UserInfo::internal_deserialize(map)
21070 }
21071 }
21072 deserializer.deserialize_struct("UserInfo", USER_INFO_FIELDS, StructVisitor)
21073 }
21074}
21075
21076impl ::serde::ser::Serialize for UserInfo {
21077 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21078 use serde::ser::SerializeStruct;
21080 let mut s = serializer.serialize_struct("UserInfo", 5)?;
21081 self.internal_serialize::<S>(&mut s)?;
21082 s.end()
21083 }
21084}
21085
21086#[derive(Debug, Clone, PartialEq, Eq)]
21088#[non_exhaustive] pub struct UserMembershipInfo {
21090 pub access_type: AccessLevel,
21093 pub user: UserInfo,
21095 pub permissions: Option<Vec<MemberPermission>>,
21098 pub initials: Option<String>,
21100 pub is_inherited: bool,
21102}
21103
21104impl UserMembershipInfo {
21105 pub fn new(access_type: AccessLevel, user: UserInfo) -> Self {
21106 UserMembershipInfo {
21107 access_type,
21108 user,
21109 permissions: None,
21110 initials: None,
21111 is_inherited: false,
21112 }
21113 }
21114
21115 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
21116 self.permissions = Some(value);
21117 self
21118 }
21119
21120 pub fn with_initials(mut self, value: String) -> Self {
21121 self.initials = Some(value);
21122 self
21123 }
21124
21125 pub fn with_is_inherited(mut self, value: bool) -> Self {
21126 self.is_inherited = value;
21127 self
21128 }
21129}
21130
21131const USER_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
21132 "user",
21133 "permissions",
21134 "initials",
21135 "is_inherited"];
21136impl UserMembershipInfo {
21137 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
21138 map: V,
21139 ) -> Result<UserMembershipInfo, V::Error> {
21140 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
21141 }
21142
21143 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
21144 mut map: V,
21145 optional: bool,
21146 ) -> Result<Option<UserMembershipInfo>, V::Error> {
21147 let mut field_access_type = None;
21148 let mut field_user = None;
21149 let mut field_permissions = None;
21150 let mut field_initials = None;
21151 let mut field_is_inherited = None;
21152 let mut nothing = true;
21153 while let Some(key) = map.next_key::<&str>()? {
21154 nothing = false;
21155 match key {
21156 "access_type" => {
21157 if field_access_type.is_some() {
21158 return Err(::serde::de::Error::duplicate_field("access_type"));
21159 }
21160 field_access_type = Some(map.next_value()?);
21161 }
21162 "user" => {
21163 if field_user.is_some() {
21164 return Err(::serde::de::Error::duplicate_field("user"));
21165 }
21166 field_user = Some(map.next_value()?);
21167 }
21168 "permissions" => {
21169 if field_permissions.is_some() {
21170 return Err(::serde::de::Error::duplicate_field("permissions"));
21171 }
21172 field_permissions = Some(map.next_value()?);
21173 }
21174 "initials" => {
21175 if field_initials.is_some() {
21176 return Err(::serde::de::Error::duplicate_field("initials"));
21177 }
21178 field_initials = Some(map.next_value()?);
21179 }
21180 "is_inherited" => {
21181 if field_is_inherited.is_some() {
21182 return Err(::serde::de::Error::duplicate_field("is_inherited"));
21183 }
21184 field_is_inherited = Some(map.next_value()?);
21185 }
21186 _ => {
21187 map.next_value::<::serde_json::Value>()?;
21189 }
21190 }
21191 }
21192 if optional && nothing {
21193 return Ok(None);
21194 }
21195 let result = UserMembershipInfo {
21196 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
21197 user: field_user.ok_or_else(|| ::serde::de::Error::missing_field("user"))?,
21198 permissions: field_permissions.and_then(Option::flatten),
21199 initials: field_initials.and_then(Option::flatten),
21200 is_inherited: field_is_inherited.unwrap_or(false),
21201 };
21202 Ok(Some(result))
21203 }
21204
21205 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
21206 &self,
21207 s: &mut S::SerializeStruct,
21208 ) -> Result<(), S::Error> {
21209 use serde::ser::SerializeStruct;
21210 s.serialize_field("access_type", &self.access_type)?;
21211 s.serialize_field("user", &self.user)?;
21212 if let Some(val) = &self.permissions {
21213 s.serialize_field("permissions", val)?;
21214 }
21215 if let Some(val) = &self.initials {
21216 s.serialize_field("initials", val)?;
21217 }
21218 if self.is_inherited {
21219 s.serialize_field("is_inherited", &self.is_inherited)?;
21220 }
21221 Ok(())
21222 }
21223}
21224
21225impl<'de> ::serde::de::Deserialize<'de> for UserMembershipInfo {
21226 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21227 use serde::de::{MapAccess, Visitor};
21229 struct StructVisitor;
21230 impl<'de> Visitor<'de> for StructVisitor {
21231 type Value = UserMembershipInfo;
21232 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21233 f.write_str("a UserMembershipInfo struct")
21234 }
21235 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
21236 UserMembershipInfo::internal_deserialize(map)
21237 }
21238 }
21239 deserializer.deserialize_struct("UserMembershipInfo", USER_MEMBERSHIP_INFO_FIELDS, StructVisitor)
21240 }
21241}
21242
21243impl ::serde::ser::Serialize for UserMembershipInfo {
21244 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21245 use serde::ser::SerializeStruct;
21247 let mut s = serializer.serialize_struct("UserMembershipInfo", 5)?;
21248 self.internal_serialize::<S>(&mut s)?;
21249 s.end()
21250 }
21251}
21252
21253impl From<UserMembershipInfo> for MembershipInfo {
21255 fn from(subtype: UserMembershipInfo) -> Self {
21256 Self {
21257 access_type: subtype.access_type,
21258 permissions: subtype.permissions,
21259 initials: subtype.initials,
21260 is_inherited: subtype.is_inherited,
21261 }
21262 }
21263}
21264#[derive(Debug, Clone, PartialEq, Eq)]
21265#[non_exhaustive] pub enum ViewerInfoPolicy {
21267 Enabled,
21269 Disabled,
21271 Other,
21274}
21275
21276impl<'de> ::serde::de::Deserialize<'de> for ViewerInfoPolicy {
21277 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21278 use serde::de::{self, MapAccess, Visitor};
21280 struct EnumVisitor;
21281 impl<'de> Visitor<'de> for EnumVisitor {
21282 type Value = ViewerInfoPolicy;
21283 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21284 f.write_str("a ViewerInfoPolicy structure")
21285 }
21286 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
21287 let tag: &str = match map.next_key()? {
21288 Some(".tag") => map.next_value()?,
21289 _ => return Err(de::Error::missing_field(".tag"))
21290 };
21291 let value = match tag {
21292 "enabled" => ViewerInfoPolicy::Enabled,
21293 "disabled" => ViewerInfoPolicy::Disabled,
21294 _ => ViewerInfoPolicy::Other,
21295 };
21296 crate::eat_json_fields(&mut map)?;
21297 Ok(value)
21298 }
21299 }
21300 const VARIANTS: &[&str] = &["enabled",
21301 "disabled",
21302 "other"];
21303 deserializer.deserialize_struct("ViewerInfoPolicy", VARIANTS, EnumVisitor)
21304 }
21305}
21306
21307impl ::serde::ser::Serialize for ViewerInfoPolicy {
21308 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21309 use serde::ser::SerializeStruct;
21311 match self {
21312 ViewerInfoPolicy::Enabled => {
21313 let mut s = serializer.serialize_struct("ViewerInfoPolicy", 1)?;
21315 s.serialize_field(".tag", "enabled")?;
21316 s.end()
21317 }
21318 ViewerInfoPolicy::Disabled => {
21319 let mut s = serializer.serialize_struct("ViewerInfoPolicy", 1)?;
21321 s.serialize_field(".tag", "disabled")?;
21322 s.end()
21323 }
21324 ViewerInfoPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
21325 }
21326 }
21327}
21328
21329#[derive(Debug, Clone, PartialEq, Eq)]
21332#[non_exhaustive] pub enum Visibility {
21334 Public,
21336 TeamOnly,
21338 Password,
21340 TeamAndPassword,
21342 SharedFolderOnly,
21345 Other,
21348}
21349
21350impl<'de> ::serde::de::Deserialize<'de> for Visibility {
21351 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21352 use serde::de::{self, MapAccess, Visitor};
21354 struct EnumVisitor;
21355 impl<'de> Visitor<'de> for EnumVisitor {
21356 type Value = Visibility;
21357 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21358 f.write_str("a Visibility structure")
21359 }
21360 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
21361 let tag: &str = match map.next_key()? {
21362 Some(".tag") => map.next_value()?,
21363 _ => return Err(de::Error::missing_field(".tag"))
21364 };
21365 let value = match tag {
21366 "public" => Visibility::Public,
21367 "team_only" => Visibility::TeamOnly,
21368 "password" => Visibility::Password,
21369 "team_and_password" => Visibility::TeamAndPassword,
21370 "shared_folder_only" => Visibility::SharedFolderOnly,
21371 _ => Visibility::Other,
21372 };
21373 crate::eat_json_fields(&mut map)?;
21374 Ok(value)
21375 }
21376 }
21377 const VARIANTS: &[&str] = &["public",
21378 "team_only",
21379 "password",
21380 "team_and_password",
21381 "shared_folder_only",
21382 "other"];
21383 deserializer.deserialize_struct("Visibility", VARIANTS, EnumVisitor)
21384 }
21385}
21386
21387impl ::serde::ser::Serialize for Visibility {
21388 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21389 use serde::ser::SerializeStruct;
21391 match self {
21392 Visibility::Public => {
21393 let mut s = serializer.serialize_struct("Visibility", 1)?;
21395 s.serialize_field(".tag", "public")?;
21396 s.end()
21397 }
21398 Visibility::TeamOnly => {
21399 let mut s = serializer.serialize_struct("Visibility", 1)?;
21401 s.serialize_field(".tag", "team_only")?;
21402 s.end()
21403 }
21404 Visibility::Password => {
21405 let mut s = serializer.serialize_struct("Visibility", 1)?;
21407 s.serialize_field(".tag", "password")?;
21408 s.end()
21409 }
21410 Visibility::TeamAndPassword => {
21411 let mut s = serializer.serialize_struct("Visibility", 1)?;
21413 s.serialize_field(".tag", "team_and_password")?;
21414 s.end()
21415 }
21416 Visibility::SharedFolderOnly => {
21417 let mut s = serializer.serialize_struct("Visibility", 1)?;
21419 s.serialize_field(".tag", "shared_folder_only")?;
21420 s.end()
21421 }
21422 Visibility::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
21423 }
21424 }
21425}
21426
21427#[derive(Debug, Clone, PartialEq, Eq)]
21428#[non_exhaustive] pub struct VisibilityPolicy {
21430 pub policy: RequestedVisibility,
21432 pub resolved_policy: AlphaResolvedVisibility,
21436 pub allowed: bool,
21438 pub disallowed_reason: Option<VisibilityPolicyDisallowedReason>,
21441}
21442
21443impl VisibilityPolicy {
21444 pub fn new(
21445 policy: RequestedVisibility,
21446 resolved_policy: AlphaResolvedVisibility,
21447 allowed: bool,
21448 ) -> Self {
21449 VisibilityPolicy {
21450 policy,
21451 resolved_policy,
21452 allowed,
21453 disallowed_reason: None,
21454 }
21455 }
21456
21457 pub fn with_disallowed_reason(mut self, value: VisibilityPolicyDisallowedReason) -> Self {
21458 self.disallowed_reason = Some(value);
21459 self
21460 }
21461}
21462
21463const VISIBILITY_POLICY_FIELDS: &[&str] = &["policy",
21464 "resolved_policy",
21465 "allowed",
21466 "disallowed_reason"];
21467impl VisibilityPolicy {
21468 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
21469 map: V,
21470 ) -> Result<VisibilityPolicy, V::Error> {
21471 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
21472 }
21473
21474 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
21475 mut map: V,
21476 optional: bool,
21477 ) -> Result<Option<VisibilityPolicy>, V::Error> {
21478 let mut field_policy = None;
21479 let mut field_resolved_policy = None;
21480 let mut field_allowed = None;
21481 let mut field_disallowed_reason = None;
21482 let mut nothing = true;
21483 while let Some(key) = map.next_key::<&str>()? {
21484 nothing = false;
21485 match key {
21486 "policy" => {
21487 if field_policy.is_some() {
21488 return Err(::serde::de::Error::duplicate_field("policy"));
21489 }
21490 field_policy = Some(map.next_value()?);
21491 }
21492 "resolved_policy" => {
21493 if field_resolved_policy.is_some() {
21494 return Err(::serde::de::Error::duplicate_field("resolved_policy"));
21495 }
21496 field_resolved_policy = Some(map.next_value()?);
21497 }
21498 "allowed" => {
21499 if field_allowed.is_some() {
21500 return Err(::serde::de::Error::duplicate_field("allowed"));
21501 }
21502 field_allowed = Some(map.next_value()?);
21503 }
21504 "disallowed_reason" => {
21505 if field_disallowed_reason.is_some() {
21506 return Err(::serde::de::Error::duplicate_field("disallowed_reason"));
21507 }
21508 field_disallowed_reason = Some(map.next_value()?);
21509 }
21510 _ => {
21511 map.next_value::<::serde_json::Value>()?;
21513 }
21514 }
21515 }
21516 if optional && nothing {
21517 return Ok(None);
21518 }
21519 let result = VisibilityPolicy {
21520 policy: field_policy.ok_or_else(|| ::serde::de::Error::missing_field("policy"))?,
21521 resolved_policy: field_resolved_policy.ok_or_else(|| ::serde::de::Error::missing_field("resolved_policy"))?,
21522 allowed: field_allowed.ok_or_else(|| ::serde::de::Error::missing_field("allowed"))?,
21523 disallowed_reason: field_disallowed_reason.and_then(Option::flatten),
21524 };
21525 Ok(Some(result))
21526 }
21527
21528 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
21529 &self,
21530 s: &mut S::SerializeStruct,
21531 ) -> Result<(), S::Error> {
21532 use serde::ser::SerializeStruct;
21533 s.serialize_field("policy", &self.policy)?;
21534 s.serialize_field("resolved_policy", &self.resolved_policy)?;
21535 s.serialize_field("allowed", &self.allowed)?;
21536 if let Some(val) = &self.disallowed_reason {
21537 s.serialize_field("disallowed_reason", val)?;
21538 }
21539 Ok(())
21540 }
21541}
21542
21543impl<'de> ::serde::de::Deserialize<'de> for VisibilityPolicy {
21544 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21545 use serde::de::{MapAccess, Visitor};
21547 struct StructVisitor;
21548 impl<'de> Visitor<'de> for StructVisitor {
21549 type Value = VisibilityPolicy;
21550 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21551 f.write_str("a VisibilityPolicy struct")
21552 }
21553 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
21554 VisibilityPolicy::internal_deserialize(map)
21555 }
21556 }
21557 deserializer.deserialize_struct("VisibilityPolicy", VISIBILITY_POLICY_FIELDS, StructVisitor)
21558 }
21559}
21560
21561impl ::serde::ser::Serialize for VisibilityPolicy {
21562 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21563 use serde::ser::SerializeStruct;
21565 let mut s = serializer.serialize_struct("VisibilityPolicy", 4)?;
21566 self.internal_serialize::<S>(&mut s)?;
21567 s.end()
21568 }
21569}
21570
21571#[derive(Debug, Clone, PartialEq, Eq)]
21572#[non_exhaustive] pub enum VisibilityPolicyDisallowedReason {
21574 DeleteAndRecreate,
21576 RestrictedBySharedFolder,
21579 RestrictedByTeam,
21581 UserNotOnTeam,
21583 UserAccountType,
21585 PermissionDenied,
21587 Other,
21590}
21591
21592impl<'de> ::serde::de::Deserialize<'de> for VisibilityPolicyDisallowedReason {
21593 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21594 use serde::de::{self, MapAccess, Visitor};
21596 struct EnumVisitor;
21597 impl<'de> Visitor<'de> for EnumVisitor {
21598 type Value = VisibilityPolicyDisallowedReason;
21599 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21600 f.write_str("a VisibilityPolicyDisallowedReason structure")
21601 }
21602 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
21603 let tag: &str = match map.next_key()? {
21604 Some(".tag") => map.next_value()?,
21605 _ => return Err(de::Error::missing_field(".tag"))
21606 };
21607 let value = match tag {
21608 "delete_and_recreate" => VisibilityPolicyDisallowedReason::DeleteAndRecreate,
21609 "restricted_by_shared_folder" => VisibilityPolicyDisallowedReason::RestrictedBySharedFolder,
21610 "restricted_by_team" => VisibilityPolicyDisallowedReason::RestrictedByTeam,
21611 "user_not_on_team" => VisibilityPolicyDisallowedReason::UserNotOnTeam,
21612 "user_account_type" => VisibilityPolicyDisallowedReason::UserAccountType,
21613 "permission_denied" => VisibilityPolicyDisallowedReason::PermissionDenied,
21614 _ => VisibilityPolicyDisallowedReason::Other,
21615 };
21616 crate::eat_json_fields(&mut map)?;
21617 Ok(value)
21618 }
21619 }
21620 const VARIANTS: &[&str] = &["delete_and_recreate",
21621 "restricted_by_shared_folder",
21622 "restricted_by_team",
21623 "user_not_on_team",
21624 "user_account_type",
21625 "permission_denied",
21626 "other"];
21627 deserializer.deserialize_struct("VisibilityPolicyDisallowedReason", VARIANTS, EnumVisitor)
21628 }
21629}
21630
21631impl ::serde::ser::Serialize for VisibilityPolicyDisallowedReason {
21632 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21633 use serde::ser::SerializeStruct;
21635 match self {
21636 VisibilityPolicyDisallowedReason::DeleteAndRecreate => {
21637 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21639 s.serialize_field(".tag", "delete_and_recreate")?;
21640 s.end()
21641 }
21642 VisibilityPolicyDisallowedReason::RestrictedBySharedFolder => {
21643 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21645 s.serialize_field(".tag", "restricted_by_shared_folder")?;
21646 s.end()
21647 }
21648 VisibilityPolicyDisallowedReason::RestrictedByTeam => {
21649 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21651 s.serialize_field(".tag", "restricted_by_team")?;
21652 s.end()
21653 }
21654 VisibilityPolicyDisallowedReason::UserNotOnTeam => {
21655 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21657 s.serialize_field(".tag", "user_not_on_team")?;
21658 s.end()
21659 }
21660 VisibilityPolicyDisallowedReason::UserAccountType => {
21661 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21663 s.serialize_field(".tag", "user_account_type")?;
21664 s.end()
21665 }
21666 VisibilityPolicyDisallowedReason::PermissionDenied => {
21667 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21669 s.serialize_field(".tag", "permission_denied")?;
21670 s.end()
21671 }
21672 VisibilityPolicyDisallowedReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
21673 }
21674 }
21675}
21676