1#![allow(
5 clippy::too_many_arguments,
6 clippy::large_enum_variant,
7 clippy::result_large_err,
8 clippy::doc_markdown,
9)]
10
11pub type DropboxId = String;
15pub type GetSharedLinkFileArg = GetSharedLinkMetadataArg;
16pub type Id = crate::types::files::Id;
17pub type Path = crate::types::files::Path;
18pub type PathOrId = String;
19pub type ReadPath = crate::types::files::ReadPath;
20pub type Rev = crate::types::files::Rev;
21pub type TeamInfo = crate::types::users::Team;
22
23#[derive(Debug, Clone, PartialEq, Eq)]
25#[non_exhaustive] pub enum AccessInheritance {
27 Inherit,
29 NoInherit,
31 Other,
34}
35
36impl<'de> ::serde::de::Deserialize<'de> for AccessInheritance {
37 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
38 use serde::de::{self, MapAccess, Visitor};
40 struct EnumVisitor;
41 impl<'de> Visitor<'de> for EnumVisitor {
42 type Value = AccessInheritance;
43 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
44 f.write_str("a AccessInheritance structure")
45 }
46 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
47 let tag: &str = match map.next_key()? {
48 Some(".tag") => map.next_value()?,
49 _ => return Err(de::Error::missing_field(".tag"))
50 };
51 let value = match tag {
52 "inherit" => AccessInheritance::Inherit,
53 "no_inherit" => AccessInheritance::NoInherit,
54 _ => AccessInheritance::Other,
55 };
56 crate::eat_json_fields(&mut map)?;
57 Ok(value)
58 }
59 }
60 const VARIANTS: &[&str] = &["inherit",
61 "no_inherit",
62 "other"];
63 deserializer.deserialize_struct("AccessInheritance", VARIANTS, EnumVisitor)
64 }
65}
66
67impl ::serde::ser::Serialize for AccessInheritance {
68 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
69 use serde::ser::SerializeStruct;
71 match self {
72 AccessInheritance::Inherit => {
73 let mut s = serializer.serialize_struct("AccessInheritance", 1)?;
75 s.serialize_field(".tag", "inherit")?;
76 s.end()
77 }
78 AccessInheritance::NoInherit => {
79 let mut s = serializer.serialize_struct("AccessInheritance", 1)?;
81 s.serialize_field(".tag", "no_inherit")?;
82 s.end()
83 }
84 AccessInheritance::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
85 }
86 }
87}
88
89#[derive(Debug, Clone, PartialEq, Eq)]
91#[non_exhaustive] pub enum AccessLevel {
93 Owner,
97 Editor,
99 Viewer,
101 ViewerNoComment,
103 Traverse,
105 NoAccess,
109 Other,
112}
113
114impl<'de> ::serde::de::Deserialize<'de> for AccessLevel {
115 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
116 use serde::de::{self, MapAccess, Visitor};
118 struct EnumVisitor;
119 impl<'de> Visitor<'de> for EnumVisitor {
120 type Value = AccessLevel;
121 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
122 f.write_str("a AccessLevel structure")
123 }
124 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
125 let tag: &str = match map.next_key()? {
126 Some(".tag") => map.next_value()?,
127 _ => return Err(de::Error::missing_field(".tag"))
128 };
129 let value = match tag {
130 "owner" => AccessLevel::Owner,
131 "editor" => AccessLevel::Editor,
132 "viewer" => AccessLevel::Viewer,
133 "viewer_no_comment" => AccessLevel::ViewerNoComment,
134 "traverse" => AccessLevel::Traverse,
135 "no_access" => AccessLevel::NoAccess,
136 _ => AccessLevel::Other,
137 };
138 crate::eat_json_fields(&mut map)?;
139 Ok(value)
140 }
141 }
142 const VARIANTS: &[&str] = &["owner",
143 "editor",
144 "viewer",
145 "viewer_no_comment",
146 "traverse",
147 "no_access",
148 "other"];
149 deserializer.deserialize_struct("AccessLevel", VARIANTS, EnumVisitor)
150 }
151}
152
153impl ::serde::ser::Serialize for AccessLevel {
154 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
155 use serde::ser::SerializeStruct;
157 match self {
158 AccessLevel::Owner => {
159 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
161 s.serialize_field(".tag", "owner")?;
162 s.end()
163 }
164 AccessLevel::Editor => {
165 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
167 s.serialize_field(".tag", "editor")?;
168 s.end()
169 }
170 AccessLevel::Viewer => {
171 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
173 s.serialize_field(".tag", "viewer")?;
174 s.end()
175 }
176 AccessLevel::ViewerNoComment => {
177 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
179 s.serialize_field(".tag", "viewer_no_comment")?;
180 s.end()
181 }
182 AccessLevel::Traverse => {
183 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
185 s.serialize_field(".tag", "traverse")?;
186 s.end()
187 }
188 AccessLevel::NoAccess => {
189 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
191 s.serialize_field(".tag", "no_access")?;
192 s.end()
193 }
194 AccessLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
195 }
196 }
197}
198
199#[derive(Debug, Clone, PartialEq, Eq)]
202#[non_exhaustive] pub enum AclUpdatePolicy {
204 Owner,
206 Editors,
208 Other,
211}
212
213impl<'de> ::serde::de::Deserialize<'de> for AclUpdatePolicy {
214 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
215 use serde::de::{self, MapAccess, Visitor};
217 struct EnumVisitor;
218 impl<'de> Visitor<'de> for EnumVisitor {
219 type Value = AclUpdatePolicy;
220 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
221 f.write_str("a AclUpdatePolicy structure")
222 }
223 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
224 let tag: &str = match map.next_key()? {
225 Some(".tag") => map.next_value()?,
226 _ => return Err(de::Error::missing_field(".tag"))
227 };
228 let value = match tag {
229 "owner" => AclUpdatePolicy::Owner,
230 "editors" => AclUpdatePolicy::Editors,
231 _ => AclUpdatePolicy::Other,
232 };
233 crate::eat_json_fields(&mut map)?;
234 Ok(value)
235 }
236 }
237 const VARIANTS: &[&str] = &["owner",
238 "editors",
239 "other"];
240 deserializer.deserialize_struct("AclUpdatePolicy", VARIANTS, EnumVisitor)
241 }
242}
243
244impl ::serde::ser::Serialize for AclUpdatePolicy {
245 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
246 use serde::ser::SerializeStruct;
248 match self {
249 AclUpdatePolicy::Owner => {
250 let mut s = serializer.serialize_struct("AclUpdatePolicy", 1)?;
252 s.serialize_field(".tag", "owner")?;
253 s.end()
254 }
255 AclUpdatePolicy::Editors => {
256 let mut s = serializer.serialize_struct("AclUpdatePolicy", 1)?;
258 s.serialize_field(".tag", "editors")?;
259 s.end()
260 }
261 AclUpdatePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
262 }
263 }
264}
265
266#[derive(Debug, Clone, PartialEq, Eq)]
268#[non_exhaustive] pub struct AddFileMemberArgs {
270 pub file: PathOrId,
272 pub members: Vec<MemberSelector>,
275 pub custom_message: Option<String>,
277 pub quiet: bool,
280 pub access_level: AccessLevel,
282 pub add_message_as_comment: bool,
284}
285
286impl AddFileMemberArgs {
287 pub fn new(file: PathOrId, members: Vec<MemberSelector>) -> Self {
288 AddFileMemberArgs {
289 file,
290 members,
291 custom_message: None,
292 quiet: false,
293 access_level: AccessLevel::Viewer,
294 add_message_as_comment: false,
295 }
296 }
297
298 pub fn with_custom_message(mut self, value: String) -> Self {
299 self.custom_message = Some(value);
300 self
301 }
302
303 pub fn with_quiet(mut self, value: bool) -> Self {
304 self.quiet = value;
305 self
306 }
307
308 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
309 self.access_level = value;
310 self
311 }
312
313 pub fn with_add_message_as_comment(mut self, value: bool) -> Self {
314 self.add_message_as_comment = value;
315 self
316 }
317}
318
319const ADD_FILE_MEMBER_ARGS_FIELDS: &[&str] = &["file",
320 "members",
321 "custom_message",
322 "quiet",
323 "access_level",
324 "add_message_as_comment"];
325impl AddFileMemberArgs {
326 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
327 map: V,
328 ) -> Result<AddFileMemberArgs, V::Error> {
329 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
330 }
331
332 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
333 mut map: V,
334 optional: bool,
335 ) -> Result<Option<AddFileMemberArgs>, V::Error> {
336 let mut field_file = None;
337 let mut field_members = None;
338 let mut field_custom_message = None;
339 let mut field_quiet = None;
340 let mut field_access_level = None;
341 let mut field_add_message_as_comment = None;
342 let mut nothing = true;
343 while let Some(key) = map.next_key::<&str>()? {
344 nothing = false;
345 match key {
346 "file" => {
347 if field_file.is_some() {
348 return Err(::serde::de::Error::duplicate_field("file"));
349 }
350 field_file = Some(map.next_value()?);
351 }
352 "members" => {
353 if field_members.is_some() {
354 return Err(::serde::de::Error::duplicate_field("members"));
355 }
356 field_members = Some(map.next_value()?);
357 }
358 "custom_message" => {
359 if field_custom_message.is_some() {
360 return Err(::serde::de::Error::duplicate_field("custom_message"));
361 }
362 field_custom_message = Some(map.next_value()?);
363 }
364 "quiet" => {
365 if field_quiet.is_some() {
366 return Err(::serde::de::Error::duplicate_field("quiet"));
367 }
368 field_quiet = Some(map.next_value()?);
369 }
370 "access_level" => {
371 if field_access_level.is_some() {
372 return Err(::serde::de::Error::duplicate_field("access_level"));
373 }
374 field_access_level = Some(map.next_value()?);
375 }
376 "add_message_as_comment" => {
377 if field_add_message_as_comment.is_some() {
378 return Err(::serde::de::Error::duplicate_field("add_message_as_comment"));
379 }
380 field_add_message_as_comment = Some(map.next_value()?);
381 }
382 _ => {
383 map.next_value::<::serde_json::Value>()?;
385 }
386 }
387 }
388 if optional && nothing {
389 return Ok(None);
390 }
391 let result = AddFileMemberArgs {
392 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
393 members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?,
394 custom_message: field_custom_message.and_then(Option::flatten),
395 quiet: field_quiet.unwrap_or(false),
396 access_level: field_access_level.unwrap_or(AccessLevel::Viewer),
397 add_message_as_comment: field_add_message_as_comment.unwrap_or(false),
398 };
399 Ok(Some(result))
400 }
401
402 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
403 &self,
404 s: &mut S::SerializeStruct,
405 ) -> Result<(), S::Error> {
406 use serde::ser::SerializeStruct;
407 s.serialize_field("file", &self.file)?;
408 s.serialize_field("members", &self.members)?;
409 if let Some(val) = &self.custom_message {
410 s.serialize_field("custom_message", val)?;
411 }
412 if self.quiet {
413 s.serialize_field("quiet", &self.quiet)?;
414 }
415 if self.access_level != AccessLevel::Viewer {
416 s.serialize_field("access_level", &self.access_level)?;
417 }
418 if self.add_message_as_comment {
419 s.serialize_field("add_message_as_comment", &self.add_message_as_comment)?;
420 }
421 Ok(())
422 }
423}
424
425impl<'de> ::serde::de::Deserialize<'de> for AddFileMemberArgs {
426 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
427 use serde::de::{MapAccess, Visitor};
429 struct StructVisitor;
430 impl<'de> Visitor<'de> for StructVisitor {
431 type Value = AddFileMemberArgs;
432 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
433 f.write_str("a AddFileMemberArgs struct")
434 }
435 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
436 AddFileMemberArgs::internal_deserialize(map)
437 }
438 }
439 deserializer.deserialize_struct("AddFileMemberArgs", ADD_FILE_MEMBER_ARGS_FIELDS, StructVisitor)
440 }
441}
442
443impl ::serde::ser::Serialize for AddFileMemberArgs {
444 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
445 use serde::ser::SerializeStruct;
447 let mut s = serializer.serialize_struct("AddFileMemberArgs", 6)?;
448 self.internal_serialize::<S>(&mut s)?;
449 s.end()
450 }
451}
452
453#[derive(Debug, Clone, PartialEq, Eq)]
455#[non_exhaustive] pub enum AddFileMemberError {
457 UserError(SharingUserError),
458 AccessError(SharingFileAccessError),
459 RateLimit,
461 InvalidComment,
463 Other,
466}
467
468impl<'de> ::serde::de::Deserialize<'de> for AddFileMemberError {
469 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
470 use serde::de::{self, MapAccess, Visitor};
472 struct EnumVisitor;
473 impl<'de> Visitor<'de> for EnumVisitor {
474 type Value = AddFileMemberError;
475 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
476 f.write_str("a AddFileMemberError structure")
477 }
478 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
479 let tag: &str = match map.next_key()? {
480 Some(".tag") => map.next_value()?,
481 _ => return Err(de::Error::missing_field(".tag"))
482 };
483 let value = match tag {
484 "user_error" => {
485 match map.next_key()? {
486 Some("user_error") => AddFileMemberError::UserError(map.next_value()?),
487 None => return Err(de::Error::missing_field("user_error")),
488 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
489 }
490 }
491 "access_error" => {
492 match map.next_key()? {
493 Some("access_error") => AddFileMemberError::AccessError(map.next_value()?),
494 None => return Err(de::Error::missing_field("access_error")),
495 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
496 }
497 }
498 "rate_limit" => AddFileMemberError::RateLimit,
499 "invalid_comment" => AddFileMemberError::InvalidComment,
500 _ => AddFileMemberError::Other,
501 };
502 crate::eat_json_fields(&mut map)?;
503 Ok(value)
504 }
505 }
506 const VARIANTS: &[&str] = &["user_error",
507 "access_error",
508 "rate_limit",
509 "invalid_comment",
510 "other"];
511 deserializer.deserialize_struct("AddFileMemberError", VARIANTS, EnumVisitor)
512 }
513}
514
515impl ::serde::ser::Serialize for AddFileMemberError {
516 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
517 use serde::ser::SerializeStruct;
519 match self {
520 AddFileMemberError::UserError(x) => {
521 let mut s = serializer.serialize_struct("AddFileMemberError", 2)?;
523 s.serialize_field(".tag", "user_error")?;
524 s.serialize_field("user_error", x)?;
525 s.end()
526 }
527 AddFileMemberError::AccessError(x) => {
528 let mut s = serializer.serialize_struct("AddFileMemberError", 2)?;
530 s.serialize_field(".tag", "access_error")?;
531 s.serialize_field("access_error", x)?;
532 s.end()
533 }
534 AddFileMemberError::RateLimit => {
535 let mut s = serializer.serialize_struct("AddFileMemberError", 1)?;
537 s.serialize_field(".tag", "rate_limit")?;
538 s.end()
539 }
540 AddFileMemberError::InvalidComment => {
541 let mut s = serializer.serialize_struct("AddFileMemberError", 1)?;
543 s.serialize_field(".tag", "invalid_comment")?;
544 s.end()
545 }
546 AddFileMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
547 }
548 }
549}
550
551impl ::std::error::Error for AddFileMemberError {
552 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
553 match self {
554 AddFileMemberError::UserError(inner) => Some(inner),
555 AddFileMemberError::AccessError(inner) => Some(inner),
556 _ => None,
557 }
558 }
559}
560
561impl ::std::fmt::Display for AddFileMemberError {
562 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
563 match self {
564 AddFileMemberError::UserError(inner) => write!(f, "AddFileMemberError: {}", inner),
565 AddFileMemberError::AccessError(inner) => write!(f, "AddFileMemberError: {}", inner),
566 AddFileMemberError::RateLimit => f.write_str("The user has reached the rate limit for invitations."),
567 AddFileMemberError::InvalidComment => f.write_str("The custom message did not pass comment permissions checks."),
568 _ => write!(f, "{:?}", *self),
569 }
570 }
571}
572
573#[derive(Debug, Clone, PartialEq, Eq)]
574#[non_exhaustive] pub struct AddFolderMemberArg {
576 pub shared_folder_id: crate::types::common::SharedFolderId,
578 pub members: Vec<AddMember>,
581 pub quiet: bool,
583 pub custom_message: Option<String>,
585}
586
587impl AddFolderMemberArg {
588 pub fn new(
589 shared_folder_id: crate::types::common::SharedFolderId,
590 members: Vec<AddMember>,
591 ) -> Self {
592 AddFolderMemberArg {
593 shared_folder_id,
594 members,
595 quiet: false,
596 custom_message: None,
597 }
598 }
599
600 pub fn with_quiet(mut self, value: bool) -> Self {
601 self.quiet = value;
602 self
603 }
604
605 pub fn with_custom_message(mut self, value: String) -> Self {
606 self.custom_message = Some(value);
607 self
608 }
609}
610
611const ADD_FOLDER_MEMBER_ARG_FIELDS: &[&str] = &["shared_folder_id",
612 "members",
613 "quiet",
614 "custom_message"];
615impl AddFolderMemberArg {
616 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
617 map: V,
618 ) -> Result<AddFolderMemberArg, V::Error> {
619 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
620 }
621
622 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
623 mut map: V,
624 optional: bool,
625 ) -> Result<Option<AddFolderMemberArg>, V::Error> {
626 let mut field_shared_folder_id = None;
627 let mut field_members = None;
628 let mut field_quiet = None;
629 let mut field_custom_message = None;
630 let mut nothing = true;
631 while let Some(key) = map.next_key::<&str>()? {
632 nothing = false;
633 match key {
634 "shared_folder_id" => {
635 if field_shared_folder_id.is_some() {
636 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
637 }
638 field_shared_folder_id = Some(map.next_value()?);
639 }
640 "members" => {
641 if field_members.is_some() {
642 return Err(::serde::de::Error::duplicate_field("members"));
643 }
644 field_members = Some(map.next_value()?);
645 }
646 "quiet" => {
647 if field_quiet.is_some() {
648 return Err(::serde::de::Error::duplicate_field("quiet"));
649 }
650 field_quiet = Some(map.next_value()?);
651 }
652 "custom_message" => {
653 if field_custom_message.is_some() {
654 return Err(::serde::de::Error::duplicate_field("custom_message"));
655 }
656 field_custom_message = Some(map.next_value()?);
657 }
658 _ => {
659 map.next_value::<::serde_json::Value>()?;
661 }
662 }
663 }
664 if optional && nothing {
665 return Ok(None);
666 }
667 let result = AddFolderMemberArg {
668 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
669 members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?,
670 quiet: field_quiet.unwrap_or(false),
671 custom_message: field_custom_message.and_then(Option::flatten),
672 };
673 Ok(Some(result))
674 }
675
676 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
677 &self,
678 s: &mut S::SerializeStruct,
679 ) -> Result<(), S::Error> {
680 use serde::ser::SerializeStruct;
681 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
682 s.serialize_field("members", &self.members)?;
683 if self.quiet {
684 s.serialize_field("quiet", &self.quiet)?;
685 }
686 if let Some(val) = &self.custom_message {
687 s.serialize_field("custom_message", val)?;
688 }
689 Ok(())
690 }
691}
692
693impl<'de> ::serde::de::Deserialize<'de> for AddFolderMemberArg {
694 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
695 use serde::de::{MapAccess, Visitor};
697 struct StructVisitor;
698 impl<'de> Visitor<'de> for StructVisitor {
699 type Value = AddFolderMemberArg;
700 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
701 f.write_str("a AddFolderMemberArg struct")
702 }
703 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
704 AddFolderMemberArg::internal_deserialize(map)
705 }
706 }
707 deserializer.deserialize_struct("AddFolderMemberArg", ADD_FOLDER_MEMBER_ARG_FIELDS, StructVisitor)
708 }
709}
710
711impl ::serde::ser::Serialize for AddFolderMemberArg {
712 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
713 use serde::ser::SerializeStruct;
715 let mut s = serializer.serialize_struct("AddFolderMemberArg", 4)?;
716 self.internal_serialize::<S>(&mut s)?;
717 s.end()
718 }
719}
720
721#[derive(Debug, Clone, PartialEq, Eq)]
722#[non_exhaustive] pub enum AddFolderMemberError {
724 AccessError(SharedFolderAccessError),
726 EmailUnverified,
730 BannedMember,
732 BadMember(AddMemberSelectorError),
734 CantShareOutsideTeam,
736 TooManyMembers(u64),
738 TooManyPendingInvites(u64),
740 RateLimit,
742 TooManyInvitees,
744 InsufficientPlan,
748 TeamFolder,
750 NoPermission,
752 InvalidSharedFolder,
754 Other,
757}
758
759impl<'de> ::serde::de::Deserialize<'de> for AddFolderMemberError {
760 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
761 use serde::de::{self, MapAccess, Visitor};
763 struct EnumVisitor;
764 impl<'de> Visitor<'de> for EnumVisitor {
765 type Value = AddFolderMemberError;
766 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
767 f.write_str("a AddFolderMemberError structure")
768 }
769 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
770 let tag: &str = match map.next_key()? {
771 Some(".tag") => map.next_value()?,
772 _ => return Err(de::Error::missing_field(".tag"))
773 };
774 let value = match tag {
775 "access_error" => {
776 match map.next_key()? {
777 Some("access_error") => AddFolderMemberError::AccessError(map.next_value()?),
778 None => return Err(de::Error::missing_field("access_error")),
779 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
780 }
781 }
782 "email_unverified" => AddFolderMemberError::EmailUnverified,
783 "banned_member" => AddFolderMemberError::BannedMember,
784 "bad_member" => {
785 match map.next_key()? {
786 Some("bad_member") => AddFolderMemberError::BadMember(map.next_value()?),
787 None => return Err(de::Error::missing_field("bad_member")),
788 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
789 }
790 }
791 "cant_share_outside_team" => AddFolderMemberError::CantShareOutsideTeam,
792 "too_many_members" => {
793 match map.next_key()? {
794 Some("too_many_members") => AddFolderMemberError::TooManyMembers(map.next_value()?),
795 None => return Err(de::Error::missing_field("too_many_members")),
796 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
797 }
798 }
799 "too_many_pending_invites" => {
800 match map.next_key()? {
801 Some("too_many_pending_invites") => AddFolderMemberError::TooManyPendingInvites(map.next_value()?),
802 None => return Err(de::Error::missing_field("too_many_pending_invites")),
803 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
804 }
805 }
806 "rate_limit" => AddFolderMemberError::RateLimit,
807 "too_many_invitees" => AddFolderMemberError::TooManyInvitees,
808 "insufficient_plan" => AddFolderMemberError::InsufficientPlan,
809 "team_folder" => AddFolderMemberError::TeamFolder,
810 "no_permission" => AddFolderMemberError::NoPermission,
811 "invalid_shared_folder" => AddFolderMemberError::InvalidSharedFolder,
812 _ => AddFolderMemberError::Other,
813 };
814 crate::eat_json_fields(&mut map)?;
815 Ok(value)
816 }
817 }
818 const VARIANTS: &[&str] = &["access_error",
819 "email_unverified",
820 "banned_member",
821 "bad_member",
822 "cant_share_outside_team",
823 "too_many_members",
824 "too_many_pending_invites",
825 "rate_limit",
826 "too_many_invitees",
827 "insufficient_plan",
828 "team_folder",
829 "no_permission",
830 "invalid_shared_folder",
831 "other"];
832 deserializer.deserialize_struct("AddFolderMemberError", VARIANTS, EnumVisitor)
833 }
834}
835
836impl ::serde::ser::Serialize for AddFolderMemberError {
837 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
838 use serde::ser::SerializeStruct;
840 match self {
841 AddFolderMemberError::AccessError(x) => {
842 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
844 s.serialize_field(".tag", "access_error")?;
845 s.serialize_field("access_error", x)?;
846 s.end()
847 }
848 AddFolderMemberError::EmailUnverified => {
849 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
851 s.serialize_field(".tag", "email_unverified")?;
852 s.end()
853 }
854 AddFolderMemberError::BannedMember => {
855 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
857 s.serialize_field(".tag", "banned_member")?;
858 s.end()
859 }
860 AddFolderMemberError::BadMember(x) => {
861 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
863 s.serialize_field(".tag", "bad_member")?;
864 s.serialize_field("bad_member", x)?;
865 s.end()
866 }
867 AddFolderMemberError::CantShareOutsideTeam => {
868 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
870 s.serialize_field(".tag", "cant_share_outside_team")?;
871 s.end()
872 }
873 AddFolderMemberError::TooManyMembers(x) => {
874 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
876 s.serialize_field(".tag", "too_many_members")?;
877 s.serialize_field("too_many_members", x)?;
878 s.end()
879 }
880 AddFolderMemberError::TooManyPendingInvites(x) => {
881 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
883 s.serialize_field(".tag", "too_many_pending_invites")?;
884 s.serialize_field("too_many_pending_invites", x)?;
885 s.end()
886 }
887 AddFolderMemberError::RateLimit => {
888 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
890 s.serialize_field(".tag", "rate_limit")?;
891 s.end()
892 }
893 AddFolderMemberError::TooManyInvitees => {
894 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
896 s.serialize_field(".tag", "too_many_invitees")?;
897 s.end()
898 }
899 AddFolderMemberError::InsufficientPlan => {
900 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
902 s.serialize_field(".tag", "insufficient_plan")?;
903 s.end()
904 }
905 AddFolderMemberError::TeamFolder => {
906 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
908 s.serialize_field(".tag", "team_folder")?;
909 s.end()
910 }
911 AddFolderMemberError::NoPermission => {
912 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
914 s.serialize_field(".tag", "no_permission")?;
915 s.end()
916 }
917 AddFolderMemberError::InvalidSharedFolder => {
918 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
920 s.serialize_field(".tag", "invalid_shared_folder")?;
921 s.end()
922 }
923 AddFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
924 }
925 }
926}
927
928impl ::std::error::Error for AddFolderMemberError {
929 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
930 match self {
931 AddFolderMemberError::AccessError(inner) => Some(inner),
932 AddFolderMemberError::BadMember(inner) => Some(inner),
933 _ => None,
934 }
935 }
936}
937
938impl ::std::fmt::Display for AddFolderMemberError {
939 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
940 match self {
941 AddFolderMemberError::AccessError(inner) => write!(f, "Unable to access shared folder: {}", inner),
942 AddFolderMemberError::BannedMember => f.write_str("The current user has been banned."),
943 AddFolderMemberError::BadMember(inner) => write!(f, "AddFolderMemberError: {}", inner),
944 AddFolderMemberError::CantShareOutsideTeam => f.write_str("Your team policy does not allow sharing outside of the team."),
945 AddFolderMemberError::TooManyMembers(inner) => write!(f, "The value is the member limit that was reached: {:?}", inner),
946 AddFolderMemberError::TooManyPendingInvites(inner) => write!(f, "The value is the pending invite limit that was reached: {:?}", inner),
947 AddFolderMemberError::RateLimit => f.write_str("The current user has hit the limit of invites they can send per day. Try again in 24 hours."),
948 AddFolderMemberError::TooManyInvitees => f.write_str("The current user is trying to share with too many people at once."),
949 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."),
950 AddFolderMemberError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
951 AddFolderMemberError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
952 AddFolderMemberError::InvalidSharedFolder => f.write_str("Invalid shared folder error will be returned as an access_error."),
953 _ => write!(f, "{:?}", *self),
954 }
955 }
956}
957
958#[derive(Debug, Clone, PartialEq, Eq)]
960#[non_exhaustive] pub struct AddMember {
962 pub member: MemberSelector,
964 pub access_level: AccessLevel,
967}
968
969impl AddMember {
970 pub fn new(member: MemberSelector) -> Self {
971 AddMember {
972 member,
973 access_level: AccessLevel::Viewer,
974 }
975 }
976
977 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
978 self.access_level = value;
979 self
980 }
981}
982
983const ADD_MEMBER_FIELDS: &[&str] = &["member",
984 "access_level"];
985impl AddMember {
986 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
987 map: V,
988 ) -> Result<AddMember, V::Error> {
989 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
990 }
991
992 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
993 mut map: V,
994 optional: bool,
995 ) -> Result<Option<AddMember>, V::Error> {
996 let mut field_member = None;
997 let mut field_access_level = None;
998 let mut nothing = true;
999 while let Some(key) = map.next_key::<&str>()? {
1000 nothing = false;
1001 match key {
1002 "member" => {
1003 if field_member.is_some() {
1004 return Err(::serde::de::Error::duplicate_field("member"));
1005 }
1006 field_member = Some(map.next_value()?);
1007 }
1008 "access_level" => {
1009 if field_access_level.is_some() {
1010 return Err(::serde::de::Error::duplicate_field("access_level"));
1011 }
1012 field_access_level = Some(map.next_value()?);
1013 }
1014 _ => {
1015 map.next_value::<::serde_json::Value>()?;
1017 }
1018 }
1019 }
1020 if optional && nothing {
1021 return Ok(None);
1022 }
1023 let result = AddMember {
1024 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
1025 access_level: field_access_level.unwrap_or(AccessLevel::Viewer),
1026 };
1027 Ok(Some(result))
1028 }
1029
1030 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1031 &self,
1032 s: &mut S::SerializeStruct,
1033 ) -> Result<(), S::Error> {
1034 use serde::ser::SerializeStruct;
1035 s.serialize_field("member", &self.member)?;
1036 if self.access_level != AccessLevel::Viewer {
1037 s.serialize_field("access_level", &self.access_level)?;
1038 }
1039 Ok(())
1040 }
1041}
1042
1043impl<'de> ::serde::de::Deserialize<'de> for AddMember {
1044 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1045 use serde::de::{MapAccess, Visitor};
1047 struct StructVisitor;
1048 impl<'de> Visitor<'de> for StructVisitor {
1049 type Value = AddMember;
1050 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1051 f.write_str("a AddMember struct")
1052 }
1053 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1054 AddMember::internal_deserialize(map)
1055 }
1056 }
1057 deserializer.deserialize_struct("AddMember", ADD_MEMBER_FIELDS, StructVisitor)
1058 }
1059}
1060
1061impl ::serde::ser::Serialize for AddMember {
1062 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1063 use serde::ser::SerializeStruct;
1065 let mut s = serializer.serialize_struct("AddMember", 2)?;
1066 self.internal_serialize::<S>(&mut s)?;
1067 s.end()
1068 }
1069}
1070
1071#[derive(Debug, Clone, PartialEq, Eq)]
1072#[non_exhaustive] pub enum AddMemberSelectorError {
1074 AutomaticGroup,
1076 InvalidDropboxId(DropboxId),
1078 InvalidEmail(crate::types::common::EmailAddress),
1080 UnverifiedDropboxId(DropboxId),
1083 GroupDeleted,
1086 GroupNotOnTeam,
1088 Other,
1091}
1092
1093impl<'de> ::serde::de::Deserialize<'de> for AddMemberSelectorError {
1094 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1095 use serde::de::{self, MapAccess, Visitor};
1097 struct EnumVisitor;
1098 impl<'de> Visitor<'de> for EnumVisitor {
1099 type Value = AddMemberSelectorError;
1100 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1101 f.write_str("a AddMemberSelectorError structure")
1102 }
1103 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1104 let tag: &str = match map.next_key()? {
1105 Some(".tag") => map.next_value()?,
1106 _ => return Err(de::Error::missing_field(".tag"))
1107 };
1108 let value = match tag {
1109 "automatic_group" => AddMemberSelectorError::AutomaticGroup,
1110 "invalid_dropbox_id" => {
1111 match map.next_key()? {
1112 Some("invalid_dropbox_id") => AddMemberSelectorError::InvalidDropboxId(map.next_value()?),
1113 None => return Err(de::Error::missing_field("invalid_dropbox_id")),
1114 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
1115 }
1116 }
1117 "invalid_email" => {
1118 match map.next_key()? {
1119 Some("invalid_email") => AddMemberSelectorError::InvalidEmail(map.next_value()?),
1120 None => return Err(de::Error::missing_field("invalid_email")),
1121 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
1122 }
1123 }
1124 "unverified_dropbox_id" => {
1125 match map.next_key()? {
1126 Some("unverified_dropbox_id") => AddMemberSelectorError::UnverifiedDropboxId(map.next_value()?),
1127 None => return Err(de::Error::missing_field("unverified_dropbox_id")),
1128 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
1129 }
1130 }
1131 "group_deleted" => AddMemberSelectorError::GroupDeleted,
1132 "group_not_on_team" => AddMemberSelectorError::GroupNotOnTeam,
1133 _ => AddMemberSelectorError::Other,
1134 };
1135 crate::eat_json_fields(&mut map)?;
1136 Ok(value)
1137 }
1138 }
1139 const VARIANTS: &[&str] = &["automatic_group",
1140 "invalid_dropbox_id",
1141 "invalid_email",
1142 "unverified_dropbox_id",
1143 "group_deleted",
1144 "group_not_on_team",
1145 "other"];
1146 deserializer.deserialize_struct("AddMemberSelectorError", VARIANTS, EnumVisitor)
1147 }
1148}
1149
1150impl ::serde::ser::Serialize for AddMemberSelectorError {
1151 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1152 use serde::ser::SerializeStruct;
1154 match self {
1155 AddMemberSelectorError::AutomaticGroup => {
1156 let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?;
1158 s.serialize_field(".tag", "automatic_group")?;
1159 s.end()
1160 }
1161 AddMemberSelectorError::InvalidDropboxId(x) => {
1162 let mut s = serializer.serialize_struct("AddMemberSelectorError", 2)?;
1164 s.serialize_field(".tag", "invalid_dropbox_id")?;
1165 s.serialize_field("invalid_dropbox_id", x)?;
1166 s.end()
1167 }
1168 AddMemberSelectorError::InvalidEmail(x) => {
1169 let mut s = serializer.serialize_struct("AddMemberSelectorError", 2)?;
1171 s.serialize_field(".tag", "invalid_email")?;
1172 s.serialize_field("invalid_email", x)?;
1173 s.end()
1174 }
1175 AddMemberSelectorError::UnverifiedDropboxId(x) => {
1176 let mut s = serializer.serialize_struct("AddMemberSelectorError", 2)?;
1178 s.serialize_field(".tag", "unverified_dropbox_id")?;
1179 s.serialize_field("unverified_dropbox_id", x)?;
1180 s.end()
1181 }
1182 AddMemberSelectorError::GroupDeleted => {
1183 let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?;
1185 s.serialize_field(".tag", "group_deleted")?;
1186 s.end()
1187 }
1188 AddMemberSelectorError::GroupNotOnTeam => {
1189 let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?;
1191 s.serialize_field(".tag", "group_not_on_team")?;
1192 s.end()
1193 }
1194 AddMemberSelectorError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1195 }
1196 }
1197}
1198
1199impl ::std::error::Error for AddMemberSelectorError {
1200}
1201
1202impl ::std::fmt::Display for AddMemberSelectorError {
1203 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1204 match self {
1205 AddMemberSelectorError::AutomaticGroup => f.write_str("Automatically created groups can only be added to team folders."),
1206 AddMemberSelectorError::InvalidDropboxId(inner) => write!(f, "The value is the ID that could not be identified: {:?}", inner),
1207 AddMemberSelectorError::InvalidEmail(inner) => write!(f, "The value is the e-email address that is malformed: {:?}", inner),
1208 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),
1209 AddMemberSelectorError::GroupNotOnTeam => f.write_str("Sharing to a group that is not on the current user's team."),
1210 _ => write!(f, "{:?}", *self),
1211 }
1212 }
1213}
1214
1215#[derive(Debug, Clone, PartialEq, Eq)]
1217#[non_exhaustive] pub enum AlphaResolvedVisibility {
1219 Public,
1221 TeamOnly,
1223 Password,
1225 TeamAndPassword,
1228 SharedFolderOnly,
1231 NoOne,
1235 OnlyYou,
1237 Other,
1240}
1241
1242impl<'de> ::serde::de::Deserialize<'de> for AlphaResolvedVisibility {
1243 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1244 use serde::de::{self, MapAccess, Visitor};
1246 struct EnumVisitor;
1247 impl<'de> Visitor<'de> for EnumVisitor {
1248 type Value = AlphaResolvedVisibility;
1249 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1250 f.write_str("a AlphaResolvedVisibility structure")
1251 }
1252 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1253 let tag: &str = match map.next_key()? {
1254 Some(".tag") => map.next_value()?,
1255 _ => return Err(de::Error::missing_field(".tag"))
1256 };
1257 let value = match tag {
1258 "public" => AlphaResolvedVisibility::Public,
1259 "team_only" => AlphaResolvedVisibility::TeamOnly,
1260 "password" => AlphaResolvedVisibility::Password,
1261 "team_and_password" => AlphaResolvedVisibility::TeamAndPassword,
1262 "shared_folder_only" => AlphaResolvedVisibility::SharedFolderOnly,
1263 "no_one" => AlphaResolvedVisibility::NoOne,
1264 "only_you" => AlphaResolvedVisibility::OnlyYou,
1265 _ => AlphaResolvedVisibility::Other,
1266 };
1267 crate::eat_json_fields(&mut map)?;
1268 Ok(value)
1269 }
1270 }
1271 const VARIANTS: &[&str] = &["public",
1272 "team_only",
1273 "password",
1274 "team_and_password",
1275 "shared_folder_only",
1276 "no_one",
1277 "only_you",
1278 "other"];
1279 deserializer.deserialize_struct("AlphaResolvedVisibility", VARIANTS, EnumVisitor)
1280 }
1281}
1282
1283impl ::serde::ser::Serialize for AlphaResolvedVisibility {
1284 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1285 use serde::ser::SerializeStruct;
1287 match self {
1288 AlphaResolvedVisibility::Public => {
1289 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1291 s.serialize_field(".tag", "public")?;
1292 s.end()
1293 }
1294 AlphaResolvedVisibility::TeamOnly => {
1295 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1297 s.serialize_field(".tag", "team_only")?;
1298 s.end()
1299 }
1300 AlphaResolvedVisibility::Password => {
1301 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1303 s.serialize_field(".tag", "password")?;
1304 s.end()
1305 }
1306 AlphaResolvedVisibility::TeamAndPassword => {
1307 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1309 s.serialize_field(".tag", "team_and_password")?;
1310 s.end()
1311 }
1312 AlphaResolvedVisibility::SharedFolderOnly => {
1313 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1315 s.serialize_field(".tag", "shared_folder_only")?;
1316 s.end()
1317 }
1318 AlphaResolvedVisibility::NoOne => {
1319 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1321 s.serialize_field(".tag", "no_one")?;
1322 s.end()
1323 }
1324 AlphaResolvedVisibility::OnlyYou => {
1325 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1327 s.serialize_field(".tag", "only_you")?;
1328 s.end()
1329 }
1330 AlphaResolvedVisibility::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1331 }
1332 }
1333}
1334
1335impl From<ResolvedVisibility> for AlphaResolvedVisibility {
1337 fn from(parent: ResolvedVisibility) -> Self {
1338 match parent {
1339 ResolvedVisibility::Public => AlphaResolvedVisibility::Public,
1340 ResolvedVisibility::TeamOnly => AlphaResolvedVisibility::TeamOnly,
1341 ResolvedVisibility::Password => AlphaResolvedVisibility::Password,
1342 ResolvedVisibility::TeamAndPassword => AlphaResolvedVisibility::TeamAndPassword,
1343 ResolvedVisibility::SharedFolderOnly => AlphaResolvedVisibility::SharedFolderOnly,
1344 ResolvedVisibility::NoOne => AlphaResolvedVisibility::NoOne,
1345 ResolvedVisibility::OnlyYou => AlphaResolvedVisibility::OnlyYou,
1346 ResolvedVisibility::Other => AlphaResolvedVisibility::Other,
1347 }
1348 }
1349}
1350#[derive(Debug, Clone, PartialEq, Eq)]
1352#[non_exhaustive] pub struct AudienceExceptionContentInfo {
1354 pub name: String,
1356}
1357
1358impl AudienceExceptionContentInfo {
1359 pub fn new(name: String) -> Self {
1360 AudienceExceptionContentInfo {
1361 name,
1362 }
1363 }
1364}
1365
1366const AUDIENCE_EXCEPTION_CONTENT_INFO_FIELDS: &[&str] = &["name"];
1367impl AudienceExceptionContentInfo {
1368 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1369 map: V,
1370 ) -> Result<AudienceExceptionContentInfo, V::Error> {
1371 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1372 }
1373
1374 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1375 mut map: V,
1376 optional: bool,
1377 ) -> Result<Option<AudienceExceptionContentInfo>, V::Error> {
1378 let mut field_name = None;
1379 let mut nothing = true;
1380 while let Some(key) = map.next_key::<&str>()? {
1381 nothing = false;
1382 match key {
1383 "name" => {
1384 if field_name.is_some() {
1385 return Err(::serde::de::Error::duplicate_field("name"));
1386 }
1387 field_name = Some(map.next_value()?);
1388 }
1389 _ => {
1390 map.next_value::<::serde_json::Value>()?;
1392 }
1393 }
1394 }
1395 if optional && nothing {
1396 return Ok(None);
1397 }
1398 let result = AudienceExceptionContentInfo {
1399 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
1400 };
1401 Ok(Some(result))
1402 }
1403
1404 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1405 &self,
1406 s: &mut S::SerializeStruct,
1407 ) -> Result<(), S::Error> {
1408 use serde::ser::SerializeStruct;
1409 s.serialize_field("name", &self.name)?;
1410 Ok(())
1411 }
1412}
1413
1414impl<'de> ::serde::de::Deserialize<'de> for AudienceExceptionContentInfo {
1415 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1416 use serde::de::{MapAccess, Visitor};
1418 struct StructVisitor;
1419 impl<'de> Visitor<'de> for StructVisitor {
1420 type Value = AudienceExceptionContentInfo;
1421 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1422 f.write_str("a AudienceExceptionContentInfo struct")
1423 }
1424 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1425 AudienceExceptionContentInfo::internal_deserialize(map)
1426 }
1427 }
1428 deserializer.deserialize_struct("AudienceExceptionContentInfo", AUDIENCE_EXCEPTION_CONTENT_INFO_FIELDS, StructVisitor)
1429 }
1430}
1431
1432impl ::serde::ser::Serialize for AudienceExceptionContentInfo {
1433 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1434 use serde::ser::SerializeStruct;
1436 let mut s = serializer.serialize_struct("AudienceExceptionContentInfo", 1)?;
1437 self.internal_serialize::<S>(&mut s)?;
1438 s.end()
1439 }
1440}
1441
1442#[derive(Debug, Clone, PartialEq, Eq)]
1445#[non_exhaustive] pub struct AudienceExceptions {
1447 pub count: u32,
1448 pub exceptions: Vec<AudienceExceptionContentInfo>,
1452}
1453
1454impl AudienceExceptions {
1455 pub fn new(count: u32, exceptions: Vec<AudienceExceptionContentInfo>) -> Self {
1456 AudienceExceptions {
1457 count,
1458 exceptions,
1459 }
1460 }
1461}
1462
1463const AUDIENCE_EXCEPTIONS_FIELDS: &[&str] = &["count",
1464 "exceptions"];
1465impl AudienceExceptions {
1466 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1467 map: V,
1468 ) -> Result<AudienceExceptions, V::Error> {
1469 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1470 }
1471
1472 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1473 mut map: V,
1474 optional: bool,
1475 ) -> Result<Option<AudienceExceptions>, V::Error> {
1476 let mut field_count = None;
1477 let mut field_exceptions = None;
1478 let mut nothing = true;
1479 while let Some(key) = map.next_key::<&str>()? {
1480 nothing = false;
1481 match key {
1482 "count" => {
1483 if field_count.is_some() {
1484 return Err(::serde::de::Error::duplicate_field("count"));
1485 }
1486 field_count = Some(map.next_value()?);
1487 }
1488 "exceptions" => {
1489 if field_exceptions.is_some() {
1490 return Err(::serde::de::Error::duplicate_field("exceptions"));
1491 }
1492 field_exceptions = Some(map.next_value()?);
1493 }
1494 _ => {
1495 map.next_value::<::serde_json::Value>()?;
1497 }
1498 }
1499 }
1500 if optional && nothing {
1501 return Ok(None);
1502 }
1503 let result = AudienceExceptions {
1504 count: field_count.ok_or_else(|| ::serde::de::Error::missing_field("count"))?,
1505 exceptions: field_exceptions.ok_or_else(|| ::serde::de::Error::missing_field("exceptions"))?,
1506 };
1507 Ok(Some(result))
1508 }
1509
1510 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1511 &self,
1512 s: &mut S::SerializeStruct,
1513 ) -> Result<(), S::Error> {
1514 use serde::ser::SerializeStruct;
1515 s.serialize_field("count", &self.count)?;
1516 s.serialize_field("exceptions", &self.exceptions)?;
1517 Ok(())
1518 }
1519}
1520
1521impl<'de> ::serde::de::Deserialize<'de> for AudienceExceptions {
1522 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1523 use serde::de::{MapAccess, Visitor};
1525 struct StructVisitor;
1526 impl<'de> Visitor<'de> for StructVisitor {
1527 type Value = AudienceExceptions;
1528 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1529 f.write_str("a AudienceExceptions struct")
1530 }
1531 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1532 AudienceExceptions::internal_deserialize(map)
1533 }
1534 }
1535 deserializer.deserialize_struct("AudienceExceptions", AUDIENCE_EXCEPTIONS_FIELDS, StructVisitor)
1536 }
1537}
1538
1539impl ::serde::ser::Serialize for AudienceExceptions {
1540 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1541 use serde::ser::SerializeStruct;
1543 let mut s = serializer.serialize_struct("AudienceExceptions", 2)?;
1544 self.internal_serialize::<S>(&mut s)?;
1545 s.end()
1546 }
1547}
1548
1549#[derive(Debug, Clone, PartialEq, Eq)]
1552#[non_exhaustive] pub struct AudienceRestrictingSharedFolder {
1554 pub shared_folder_id: crate::types::common::SharedFolderId,
1556 pub name: String,
1558 pub audience: LinkAudience,
1560}
1561
1562impl AudienceRestrictingSharedFolder {
1563 pub fn new(
1564 shared_folder_id: crate::types::common::SharedFolderId,
1565 name: String,
1566 audience: LinkAudience,
1567 ) -> Self {
1568 AudienceRestrictingSharedFolder {
1569 shared_folder_id,
1570 name,
1571 audience,
1572 }
1573 }
1574}
1575
1576const AUDIENCE_RESTRICTING_SHARED_FOLDER_FIELDS: &[&str] = &["shared_folder_id",
1577 "name",
1578 "audience"];
1579impl AudienceRestrictingSharedFolder {
1580 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1581 map: V,
1582 ) -> Result<AudienceRestrictingSharedFolder, V::Error> {
1583 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1584 }
1585
1586 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1587 mut map: V,
1588 optional: bool,
1589 ) -> Result<Option<AudienceRestrictingSharedFolder>, V::Error> {
1590 let mut field_shared_folder_id = None;
1591 let mut field_name = None;
1592 let mut field_audience = None;
1593 let mut nothing = true;
1594 while let Some(key) = map.next_key::<&str>()? {
1595 nothing = false;
1596 match key {
1597 "shared_folder_id" => {
1598 if field_shared_folder_id.is_some() {
1599 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
1600 }
1601 field_shared_folder_id = Some(map.next_value()?);
1602 }
1603 "name" => {
1604 if field_name.is_some() {
1605 return Err(::serde::de::Error::duplicate_field("name"));
1606 }
1607 field_name = Some(map.next_value()?);
1608 }
1609 "audience" => {
1610 if field_audience.is_some() {
1611 return Err(::serde::de::Error::duplicate_field("audience"));
1612 }
1613 field_audience = Some(map.next_value()?);
1614 }
1615 _ => {
1616 map.next_value::<::serde_json::Value>()?;
1618 }
1619 }
1620 }
1621 if optional && nothing {
1622 return Ok(None);
1623 }
1624 let result = AudienceRestrictingSharedFolder {
1625 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
1626 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
1627 audience: field_audience.ok_or_else(|| ::serde::de::Error::missing_field("audience"))?,
1628 };
1629 Ok(Some(result))
1630 }
1631
1632 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1633 &self,
1634 s: &mut S::SerializeStruct,
1635 ) -> Result<(), S::Error> {
1636 use serde::ser::SerializeStruct;
1637 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
1638 s.serialize_field("name", &self.name)?;
1639 s.serialize_field("audience", &self.audience)?;
1640 Ok(())
1641 }
1642}
1643
1644impl<'de> ::serde::de::Deserialize<'de> for AudienceRestrictingSharedFolder {
1645 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1646 use serde::de::{MapAccess, Visitor};
1648 struct StructVisitor;
1649 impl<'de> Visitor<'de> for StructVisitor {
1650 type Value = AudienceRestrictingSharedFolder;
1651 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1652 f.write_str("a AudienceRestrictingSharedFolder struct")
1653 }
1654 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1655 AudienceRestrictingSharedFolder::internal_deserialize(map)
1656 }
1657 }
1658 deserializer.deserialize_struct("AudienceRestrictingSharedFolder", AUDIENCE_RESTRICTING_SHARED_FOLDER_FIELDS, StructVisitor)
1659 }
1660}
1661
1662impl ::serde::ser::Serialize for AudienceRestrictingSharedFolder {
1663 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1664 use serde::ser::SerializeStruct;
1666 let mut s = serializer.serialize_struct("AudienceRestrictingSharedFolder", 3)?;
1667 self.internal_serialize::<S>(&mut s)?;
1668 s.end()
1669 }
1670}
1671
1672#[derive(Debug, Clone, PartialEq, Eq)]
1674#[non_exhaustive] pub struct CollectionLinkMetadata {
1676 pub url: String,
1678 pub visibility: Visibility,
1680 pub expires: Option<crate::types::common::DropboxTimestamp>,
1682}
1683
1684impl CollectionLinkMetadata {
1685 pub fn new(url: String, visibility: Visibility) -> Self {
1686 CollectionLinkMetadata {
1687 url,
1688 visibility,
1689 expires: None,
1690 }
1691 }
1692
1693 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
1694 self.expires = Some(value);
1695 self
1696 }
1697}
1698
1699const COLLECTION_LINK_METADATA_FIELDS: &[&str] = &["url",
1700 "visibility",
1701 "expires"];
1702impl CollectionLinkMetadata {
1703 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1704 map: V,
1705 ) -> Result<CollectionLinkMetadata, V::Error> {
1706 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1707 }
1708
1709 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1710 mut map: V,
1711 optional: bool,
1712 ) -> Result<Option<CollectionLinkMetadata>, V::Error> {
1713 let mut field_url = None;
1714 let mut field_visibility = None;
1715 let mut field_expires = None;
1716 let mut nothing = true;
1717 while let Some(key) = map.next_key::<&str>()? {
1718 nothing = false;
1719 match key {
1720 "url" => {
1721 if field_url.is_some() {
1722 return Err(::serde::de::Error::duplicate_field("url"));
1723 }
1724 field_url = Some(map.next_value()?);
1725 }
1726 "visibility" => {
1727 if field_visibility.is_some() {
1728 return Err(::serde::de::Error::duplicate_field("visibility"));
1729 }
1730 field_visibility = Some(map.next_value()?);
1731 }
1732 "expires" => {
1733 if field_expires.is_some() {
1734 return Err(::serde::de::Error::duplicate_field("expires"));
1735 }
1736 field_expires = Some(map.next_value()?);
1737 }
1738 _ => {
1739 map.next_value::<::serde_json::Value>()?;
1741 }
1742 }
1743 }
1744 if optional && nothing {
1745 return Ok(None);
1746 }
1747 let result = CollectionLinkMetadata {
1748 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
1749 visibility: field_visibility.ok_or_else(|| ::serde::de::Error::missing_field("visibility"))?,
1750 expires: field_expires.and_then(Option::flatten),
1751 };
1752 Ok(Some(result))
1753 }
1754
1755 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1756 &self,
1757 s: &mut S::SerializeStruct,
1758 ) -> Result<(), S::Error> {
1759 use serde::ser::SerializeStruct;
1760 s.serialize_field("url", &self.url)?;
1761 s.serialize_field("visibility", &self.visibility)?;
1762 if let Some(val) = &self.expires {
1763 s.serialize_field("expires", val)?;
1764 }
1765 Ok(())
1766 }
1767}
1768
1769impl<'de> ::serde::de::Deserialize<'de> for CollectionLinkMetadata {
1770 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1771 use serde::de::{MapAccess, Visitor};
1773 struct StructVisitor;
1774 impl<'de> Visitor<'de> for StructVisitor {
1775 type Value = CollectionLinkMetadata;
1776 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1777 f.write_str("a CollectionLinkMetadata struct")
1778 }
1779 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1780 CollectionLinkMetadata::internal_deserialize(map)
1781 }
1782 }
1783 deserializer.deserialize_struct("CollectionLinkMetadata", COLLECTION_LINK_METADATA_FIELDS, StructVisitor)
1784 }
1785}
1786
1787impl ::serde::ser::Serialize for CollectionLinkMetadata {
1788 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1789 use serde::ser::SerializeStruct;
1791 let mut s = serializer.serialize_struct("CollectionLinkMetadata", 3)?;
1792 self.internal_serialize::<S>(&mut s)?;
1793 s.end()
1794 }
1795}
1796
1797impl From<CollectionLinkMetadata> for LinkMetadata {
1799 fn from(subtype: CollectionLinkMetadata) -> Self {
1800 LinkMetadata::Collection(subtype)
1801 }
1802}
1803#[derive(Debug, Clone, PartialEq, Eq)]
1804#[non_exhaustive] pub struct CreateSharedLinkArg {
1806 pub path: String,
1808 pub short_url: bool,
1809 pub pending_upload: Option<PendingUploadMode>,
1813}
1814
1815impl CreateSharedLinkArg {
1816 pub fn new(path: String) -> Self {
1817 CreateSharedLinkArg {
1818 path,
1819 short_url: false,
1820 pending_upload: None,
1821 }
1822 }
1823
1824 pub fn with_short_url(mut self, value: bool) -> Self {
1825 self.short_url = value;
1826 self
1827 }
1828
1829 pub fn with_pending_upload(mut self, value: PendingUploadMode) -> Self {
1830 self.pending_upload = Some(value);
1831 self
1832 }
1833}
1834
1835const CREATE_SHARED_LINK_ARG_FIELDS: &[&str] = &["path",
1836 "short_url",
1837 "pending_upload"];
1838impl CreateSharedLinkArg {
1839 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1840 map: V,
1841 ) -> Result<CreateSharedLinkArg, V::Error> {
1842 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1843 }
1844
1845 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1846 mut map: V,
1847 optional: bool,
1848 ) -> Result<Option<CreateSharedLinkArg>, V::Error> {
1849 let mut field_path = None;
1850 let mut field_short_url = None;
1851 let mut field_pending_upload = None;
1852 let mut nothing = true;
1853 while let Some(key) = map.next_key::<&str>()? {
1854 nothing = false;
1855 match key {
1856 "path" => {
1857 if field_path.is_some() {
1858 return Err(::serde::de::Error::duplicate_field("path"));
1859 }
1860 field_path = Some(map.next_value()?);
1861 }
1862 "short_url" => {
1863 if field_short_url.is_some() {
1864 return Err(::serde::de::Error::duplicate_field("short_url"));
1865 }
1866 field_short_url = Some(map.next_value()?);
1867 }
1868 "pending_upload" => {
1869 if field_pending_upload.is_some() {
1870 return Err(::serde::de::Error::duplicate_field("pending_upload"));
1871 }
1872 field_pending_upload = Some(map.next_value()?);
1873 }
1874 _ => {
1875 map.next_value::<::serde_json::Value>()?;
1877 }
1878 }
1879 }
1880 if optional && nothing {
1881 return Ok(None);
1882 }
1883 let result = CreateSharedLinkArg {
1884 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
1885 short_url: field_short_url.unwrap_or(false),
1886 pending_upload: field_pending_upload.and_then(Option::flatten),
1887 };
1888 Ok(Some(result))
1889 }
1890
1891 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1892 &self,
1893 s: &mut S::SerializeStruct,
1894 ) -> Result<(), S::Error> {
1895 use serde::ser::SerializeStruct;
1896 s.serialize_field("path", &self.path)?;
1897 if self.short_url {
1898 s.serialize_field("short_url", &self.short_url)?;
1899 }
1900 if let Some(val) = &self.pending_upload {
1901 s.serialize_field("pending_upload", val)?;
1902 }
1903 Ok(())
1904 }
1905}
1906
1907impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkArg {
1908 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1909 use serde::de::{MapAccess, Visitor};
1911 struct StructVisitor;
1912 impl<'de> Visitor<'de> for StructVisitor {
1913 type Value = CreateSharedLinkArg;
1914 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1915 f.write_str("a CreateSharedLinkArg struct")
1916 }
1917 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1918 CreateSharedLinkArg::internal_deserialize(map)
1919 }
1920 }
1921 deserializer.deserialize_struct("CreateSharedLinkArg", CREATE_SHARED_LINK_ARG_FIELDS, StructVisitor)
1922 }
1923}
1924
1925impl ::serde::ser::Serialize for CreateSharedLinkArg {
1926 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1927 use serde::ser::SerializeStruct;
1929 let mut s = serializer.serialize_struct("CreateSharedLinkArg", 3)?;
1930 self.internal_serialize::<S>(&mut s)?;
1931 s.end()
1932 }
1933}
1934
1935#[derive(Debug, Clone, PartialEq, Eq)]
1936#[non_exhaustive] pub enum CreateSharedLinkError {
1938 Path(crate::types::files::LookupError),
1939 Other,
1942}
1943
1944impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkError {
1945 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1946 use serde::de::{self, MapAccess, Visitor};
1948 struct EnumVisitor;
1949 impl<'de> Visitor<'de> for EnumVisitor {
1950 type Value = CreateSharedLinkError;
1951 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1952 f.write_str("a CreateSharedLinkError structure")
1953 }
1954 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1955 let tag: &str = match map.next_key()? {
1956 Some(".tag") => map.next_value()?,
1957 _ => return Err(de::Error::missing_field(".tag"))
1958 };
1959 let value = match tag {
1960 "path" => {
1961 match map.next_key()? {
1962 Some("path") => CreateSharedLinkError::Path(map.next_value()?),
1963 None => return Err(de::Error::missing_field("path")),
1964 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
1965 }
1966 }
1967 _ => CreateSharedLinkError::Other,
1968 };
1969 crate::eat_json_fields(&mut map)?;
1970 Ok(value)
1971 }
1972 }
1973 const VARIANTS: &[&str] = &["path",
1974 "other"];
1975 deserializer.deserialize_struct("CreateSharedLinkError", VARIANTS, EnumVisitor)
1976 }
1977}
1978
1979impl ::serde::ser::Serialize for CreateSharedLinkError {
1980 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1981 use serde::ser::SerializeStruct;
1983 match self {
1984 CreateSharedLinkError::Path(x) => {
1985 let mut s = serializer.serialize_struct("CreateSharedLinkError", 2)?;
1987 s.serialize_field(".tag", "path")?;
1988 s.serialize_field("path", x)?;
1989 s.end()
1990 }
1991 CreateSharedLinkError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1992 }
1993 }
1994}
1995
1996impl ::std::error::Error for CreateSharedLinkError {
1997 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
1998 match self {
1999 CreateSharedLinkError::Path(inner) => Some(inner),
2000 _ => None,
2001 }
2002 }
2003}
2004
2005impl ::std::fmt::Display for CreateSharedLinkError {
2006 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2007 match self {
2008 CreateSharedLinkError::Path(inner) => write!(f, "CreateSharedLinkError: {}", inner),
2009 _ => write!(f, "{:?}", *self),
2010 }
2011 }
2012}
2013
2014#[derive(Debug, Clone, PartialEq, Eq)]
2015#[non_exhaustive] pub struct CreateSharedLinkWithSettingsArg {
2017 pub path: ReadPath,
2019 pub settings: Option<SharedLinkSettings>,
2021}
2022
2023impl CreateSharedLinkWithSettingsArg {
2024 pub fn new(path: ReadPath) -> Self {
2025 CreateSharedLinkWithSettingsArg {
2026 path,
2027 settings: None,
2028 }
2029 }
2030
2031 pub fn with_settings(mut self, value: SharedLinkSettings) -> Self {
2032 self.settings = Some(value);
2033 self
2034 }
2035}
2036
2037const CREATE_SHARED_LINK_WITH_SETTINGS_ARG_FIELDS: &[&str] = &["path",
2038 "settings"];
2039impl CreateSharedLinkWithSettingsArg {
2040 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2041 map: V,
2042 ) -> Result<CreateSharedLinkWithSettingsArg, V::Error> {
2043 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2044 }
2045
2046 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2047 mut map: V,
2048 optional: bool,
2049 ) -> Result<Option<CreateSharedLinkWithSettingsArg>, V::Error> {
2050 let mut field_path = None;
2051 let mut field_settings = None;
2052 let mut nothing = true;
2053 while let Some(key) = map.next_key::<&str>()? {
2054 nothing = false;
2055 match key {
2056 "path" => {
2057 if field_path.is_some() {
2058 return Err(::serde::de::Error::duplicate_field("path"));
2059 }
2060 field_path = Some(map.next_value()?);
2061 }
2062 "settings" => {
2063 if field_settings.is_some() {
2064 return Err(::serde::de::Error::duplicate_field("settings"));
2065 }
2066 field_settings = Some(map.next_value()?);
2067 }
2068 _ => {
2069 map.next_value::<::serde_json::Value>()?;
2071 }
2072 }
2073 }
2074 if optional && nothing {
2075 return Ok(None);
2076 }
2077 let result = CreateSharedLinkWithSettingsArg {
2078 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
2079 settings: field_settings.and_then(Option::flatten),
2080 };
2081 Ok(Some(result))
2082 }
2083
2084 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2085 &self,
2086 s: &mut S::SerializeStruct,
2087 ) -> Result<(), S::Error> {
2088 use serde::ser::SerializeStruct;
2089 s.serialize_field("path", &self.path)?;
2090 if let Some(val) = &self.settings {
2091 s.serialize_field("settings", val)?;
2092 }
2093 Ok(())
2094 }
2095}
2096
2097impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkWithSettingsArg {
2098 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2099 use serde::de::{MapAccess, Visitor};
2101 struct StructVisitor;
2102 impl<'de> Visitor<'de> for StructVisitor {
2103 type Value = CreateSharedLinkWithSettingsArg;
2104 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2105 f.write_str("a CreateSharedLinkWithSettingsArg struct")
2106 }
2107 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2108 CreateSharedLinkWithSettingsArg::internal_deserialize(map)
2109 }
2110 }
2111 deserializer.deserialize_struct("CreateSharedLinkWithSettingsArg", CREATE_SHARED_LINK_WITH_SETTINGS_ARG_FIELDS, StructVisitor)
2112 }
2113}
2114
2115impl ::serde::ser::Serialize for CreateSharedLinkWithSettingsArg {
2116 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2117 use serde::ser::SerializeStruct;
2119 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsArg", 2)?;
2120 self.internal_serialize::<S>(&mut s)?;
2121 s.end()
2122 }
2123}
2124
2125#[derive(Debug, Clone, PartialEq, Eq)]
2126pub enum CreateSharedLinkWithSettingsError {
2127 Path(crate::types::files::LookupError),
2128 EmailNotVerified,
2132 SharedLinkAlreadyExists(Option<SharedLinkAlreadyExistsMetadata>),
2136 SettingsError(SharedLinkSettingsError),
2138 AccessDenied,
2142}
2143
2144impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkWithSettingsError {
2145 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2146 use serde::de::{self, MapAccess, Visitor};
2148 struct EnumVisitor;
2149 impl<'de> Visitor<'de> for EnumVisitor {
2150 type Value = CreateSharedLinkWithSettingsError;
2151 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2152 f.write_str("a CreateSharedLinkWithSettingsError structure")
2153 }
2154 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2155 let tag: &str = match map.next_key()? {
2156 Some(".tag") => map.next_value()?,
2157 _ => return Err(de::Error::missing_field(".tag"))
2158 };
2159 let value = match tag {
2160 "path" => {
2161 match map.next_key()? {
2162 Some("path") => CreateSharedLinkWithSettingsError::Path(map.next_value()?),
2163 None => return Err(de::Error::missing_field("path")),
2164 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2165 }
2166 }
2167 "email_not_verified" => CreateSharedLinkWithSettingsError::EmailNotVerified,
2168 "shared_link_already_exists" => {
2169 match map.next_key()? {
2170 Some("shared_link_already_exists") => CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(map.next_value()?),
2171 None => CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(None),
2172 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2173 }
2174 }
2175 "settings_error" => {
2176 match map.next_key()? {
2177 Some("settings_error") => CreateSharedLinkWithSettingsError::SettingsError(map.next_value()?),
2178 None => return Err(de::Error::missing_field("settings_error")),
2179 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2180 }
2181 }
2182 "access_denied" => CreateSharedLinkWithSettingsError::AccessDenied,
2183 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
2184 };
2185 crate::eat_json_fields(&mut map)?;
2186 Ok(value)
2187 }
2188 }
2189 const VARIANTS: &[&str] = &["path",
2190 "email_not_verified",
2191 "shared_link_already_exists",
2192 "settings_error",
2193 "access_denied"];
2194 deserializer.deserialize_struct("CreateSharedLinkWithSettingsError", VARIANTS, EnumVisitor)
2195 }
2196}
2197
2198impl ::serde::ser::Serialize for CreateSharedLinkWithSettingsError {
2199 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2200 use serde::ser::SerializeStruct;
2202 match self {
2203 CreateSharedLinkWithSettingsError::Path(x) => {
2204 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 2)?;
2206 s.serialize_field(".tag", "path")?;
2207 s.serialize_field("path", x)?;
2208 s.end()
2209 }
2210 CreateSharedLinkWithSettingsError::EmailNotVerified => {
2211 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?;
2213 s.serialize_field(".tag", "email_not_verified")?;
2214 s.end()
2215 }
2216 CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(x) => {
2217 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 2)?;
2219 s.serialize_field(".tag", "shared_link_already_exists")?;
2220 s.serialize_field("shared_link_already_exists", x)?;
2221 s.end()
2222 }
2223 CreateSharedLinkWithSettingsError::SettingsError(x) => {
2224 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 2)?;
2226 s.serialize_field(".tag", "settings_error")?;
2227 s.serialize_field("settings_error", x)?;
2228 s.end()
2229 }
2230 CreateSharedLinkWithSettingsError::AccessDenied => {
2231 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?;
2233 s.serialize_field(".tag", "access_denied")?;
2234 s.end()
2235 }
2236 }
2237 }
2238}
2239
2240impl ::std::error::Error for CreateSharedLinkWithSettingsError {
2241 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
2242 match self {
2243 CreateSharedLinkWithSettingsError::Path(inner) => Some(inner),
2244 CreateSharedLinkWithSettingsError::SettingsError(inner) => Some(inner),
2245 _ => None,
2246 }
2247 }
2248}
2249
2250impl ::std::fmt::Display for CreateSharedLinkWithSettingsError {
2251 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2252 match self {
2253 CreateSharedLinkWithSettingsError::Path(inner) => write!(f, "CreateSharedLinkWithSettingsError: {}", inner),
2254 CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(None) => f.write_str("shared_link_already_exists"),
2255 CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(Some(inner)) => write!(f, "shared_link_already_exists: {:?}", inner),
2256 CreateSharedLinkWithSettingsError::SettingsError(inner) => write!(f, "There is an error with the given settings: {}", inner),
2257 _ => write!(f, "{:?}", *self),
2258 }
2259 }
2260}
2261
2262#[derive(Debug, Clone, PartialEq, Eq)]
2265#[non_exhaustive] pub struct ExpectedSharedContentLinkMetadata {
2267 pub audience_options: Vec<LinkAudience>,
2272 pub current_audience: LinkAudience,
2274 pub link_permissions: Vec<LinkPermission>,
2276 pub password_protected: bool,
2278 pub access_level: Option<AccessLevel>,
2280 pub audience_restricting_shared_folder: Option<AudienceRestrictingSharedFolder>,
2282 pub expiry: Option<crate::types::common::DropboxTimestamp>,
2285}
2286
2287impl ExpectedSharedContentLinkMetadata {
2288 pub fn new(
2289 audience_options: Vec<LinkAudience>,
2290 current_audience: LinkAudience,
2291 link_permissions: Vec<LinkPermission>,
2292 password_protected: bool,
2293 ) -> Self {
2294 ExpectedSharedContentLinkMetadata {
2295 audience_options,
2296 current_audience,
2297 link_permissions,
2298 password_protected,
2299 access_level: None,
2300 audience_restricting_shared_folder: None,
2301 expiry: None,
2302 }
2303 }
2304
2305 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
2306 self.access_level = Some(value);
2307 self
2308 }
2309
2310 pub fn with_audience_restricting_shared_folder(
2311 mut self,
2312 value: AudienceRestrictingSharedFolder,
2313 ) -> Self {
2314 self.audience_restricting_shared_folder = Some(value);
2315 self
2316 }
2317
2318 pub fn with_expiry(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
2319 self.expiry = Some(value);
2320 self
2321 }
2322}
2323
2324const EXPECTED_SHARED_CONTENT_LINK_METADATA_FIELDS: &[&str] = &["audience_options",
2325 "current_audience",
2326 "link_permissions",
2327 "password_protected",
2328 "access_level",
2329 "audience_restricting_shared_folder",
2330 "expiry"];
2331impl ExpectedSharedContentLinkMetadata {
2332 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2333 map: V,
2334 ) -> Result<ExpectedSharedContentLinkMetadata, V::Error> {
2335 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2336 }
2337
2338 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2339 mut map: V,
2340 optional: bool,
2341 ) -> Result<Option<ExpectedSharedContentLinkMetadata>, V::Error> {
2342 let mut field_audience_options = None;
2343 let mut field_current_audience = None;
2344 let mut field_link_permissions = None;
2345 let mut field_password_protected = None;
2346 let mut field_access_level = None;
2347 let mut field_audience_restricting_shared_folder = None;
2348 let mut field_expiry = None;
2349 let mut nothing = true;
2350 while let Some(key) = map.next_key::<&str>()? {
2351 nothing = false;
2352 match key {
2353 "audience_options" => {
2354 if field_audience_options.is_some() {
2355 return Err(::serde::de::Error::duplicate_field("audience_options"));
2356 }
2357 field_audience_options = Some(map.next_value()?);
2358 }
2359 "current_audience" => {
2360 if field_current_audience.is_some() {
2361 return Err(::serde::de::Error::duplicate_field("current_audience"));
2362 }
2363 field_current_audience = Some(map.next_value()?);
2364 }
2365 "link_permissions" => {
2366 if field_link_permissions.is_some() {
2367 return Err(::serde::de::Error::duplicate_field("link_permissions"));
2368 }
2369 field_link_permissions = Some(map.next_value()?);
2370 }
2371 "password_protected" => {
2372 if field_password_protected.is_some() {
2373 return Err(::serde::de::Error::duplicate_field("password_protected"));
2374 }
2375 field_password_protected = Some(map.next_value()?);
2376 }
2377 "access_level" => {
2378 if field_access_level.is_some() {
2379 return Err(::serde::de::Error::duplicate_field("access_level"));
2380 }
2381 field_access_level = Some(map.next_value()?);
2382 }
2383 "audience_restricting_shared_folder" => {
2384 if field_audience_restricting_shared_folder.is_some() {
2385 return Err(::serde::de::Error::duplicate_field("audience_restricting_shared_folder"));
2386 }
2387 field_audience_restricting_shared_folder = Some(map.next_value()?);
2388 }
2389 "expiry" => {
2390 if field_expiry.is_some() {
2391 return Err(::serde::de::Error::duplicate_field("expiry"));
2392 }
2393 field_expiry = Some(map.next_value()?);
2394 }
2395 _ => {
2396 map.next_value::<::serde_json::Value>()?;
2398 }
2399 }
2400 }
2401 if optional && nothing {
2402 return Ok(None);
2403 }
2404 let result = ExpectedSharedContentLinkMetadata {
2405 audience_options: field_audience_options.ok_or_else(|| ::serde::de::Error::missing_field("audience_options"))?,
2406 current_audience: field_current_audience.ok_or_else(|| ::serde::de::Error::missing_field("current_audience"))?,
2407 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
2408 password_protected: field_password_protected.ok_or_else(|| ::serde::de::Error::missing_field("password_protected"))?,
2409 access_level: field_access_level.and_then(Option::flatten),
2410 audience_restricting_shared_folder: field_audience_restricting_shared_folder.and_then(Option::flatten),
2411 expiry: field_expiry.and_then(Option::flatten),
2412 };
2413 Ok(Some(result))
2414 }
2415
2416 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2417 &self,
2418 s: &mut S::SerializeStruct,
2419 ) -> Result<(), S::Error> {
2420 use serde::ser::SerializeStruct;
2421 s.serialize_field("audience_options", &self.audience_options)?;
2422 s.serialize_field("current_audience", &self.current_audience)?;
2423 s.serialize_field("link_permissions", &self.link_permissions)?;
2424 s.serialize_field("password_protected", &self.password_protected)?;
2425 if let Some(val) = &self.access_level {
2426 s.serialize_field("access_level", val)?;
2427 }
2428 if let Some(val) = &self.audience_restricting_shared_folder {
2429 s.serialize_field("audience_restricting_shared_folder", val)?;
2430 }
2431 if let Some(val) = &self.expiry {
2432 s.serialize_field("expiry", val)?;
2433 }
2434 Ok(())
2435 }
2436}
2437
2438impl<'de> ::serde::de::Deserialize<'de> for ExpectedSharedContentLinkMetadata {
2439 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2440 use serde::de::{MapAccess, Visitor};
2442 struct StructVisitor;
2443 impl<'de> Visitor<'de> for StructVisitor {
2444 type Value = ExpectedSharedContentLinkMetadata;
2445 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2446 f.write_str("a ExpectedSharedContentLinkMetadata struct")
2447 }
2448 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2449 ExpectedSharedContentLinkMetadata::internal_deserialize(map)
2450 }
2451 }
2452 deserializer.deserialize_struct("ExpectedSharedContentLinkMetadata", EXPECTED_SHARED_CONTENT_LINK_METADATA_FIELDS, StructVisitor)
2453 }
2454}
2455
2456impl ::serde::ser::Serialize for ExpectedSharedContentLinkMetadata {
2457 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2458 use serde::ser::SerializeStruct;
2460 let mut s = serializer.serialize_struct("ExpectedSharedContentLinkMetadata", 7)?;
2461 self.internal_serialize::<S>(&mut s)?;
2462 s.end()
2463 }
2464}
2465
2466impl From<ExpectedSharedContentLinkMetadata> for SharedContentLinkMetadataBase {
2468 fn from(subtype: ExpectedSharedContentLinkMetadata) -> Self {
2469 Self {
2470 audience_options: subtype.audience_options,
2471 current_audience: subtype.current_audience,
2472 link_permissions: subtype.link_permissions,
2473 password_protected: subtype.password_protected,
2474 access_level: subtype.access_level,
2475 audience_restricting_shared_folder: subtype.audience_restricting_shared_folder,
2476 expiry: subtype.expiry,
2477 }
2478 }
2479}
2480#[derive(Debug, Clone, PartialEq, Eq)]
2482#[non_exhaustive] pub enum FileAction {
2484 DisableViewerInfo,
2486 EditContents,
2488 EnableViewerInfo,
2490 InviteViewer,
2492 InviteViewerNoComment,
2494 InviteEditor,
2496 Unshare,
2498 RelinquishMembership,
2500 ShareLink,
2502 CreateLink,
2504 CreateViewLink,
2506 CreateEditLink,
2508 Other,
2511}
2512
2513impl<'de> ::serde::de::Deserialize<'de> for FileAction {
2514 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2515 use serde::de::{self, MapAccess, Visitor};
2517 struct EnumVisitor;
2518 impl<'de> Visitor<'de> for EnumVisitor {
2519 type Value = FileAction;
2520 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2521 f.write_str("a FileAction structure")
2522 }
2523 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2524 let tag: &str = match map.next_key()? {
2525 Some(".tag") => map.next_value()?,
2526 _ => return Err(de::Error::missing_field(".tag"))
2527 };
2528 let value = match tag {
2529 "disable_viewer_info" => FileAction::DisableViewerInfo,
2530 "edit_contents" => FileAction::EditContents,
2531 "enable_viewer_info" => FileAction::EnableViewerInfo,
2532 "invite_viewer" => FileAction::InviteViewer,
2533 "invite_viewer_no_comment" => FileAction::InviteViewerNoComment,
2534 "invite_editor" => FileAction::InviteEditor,
2535 "unshare" => FileAction::Unshare,
2536 "relinquish_membership" => FileAction::RelinquishMembership,
2537 "share_link" => FileAction::ShareLink,
2538 "create_link" => FileAction::CreateLink,
2539 "create_view_link" => FileAction::CreateViewLink,
2540 "create_edit_link" => FileAction::CreateEditLink,
2541 _ => FileAction::Other,
2542 };
2543 crate::eat_json_fields(&mut map)?;
2544 Ok(value)
2545 }
2546 }
2547 const VARIANTS: &[&str] = &["disable_viewer_info",
2548 "edit_contents",
2549 "enable_viewer_info",
2550 "invite_viewer",
2551 "invite_viewer_no_comment",
2552 "invite_editor",
2553 "unshare",
2554 "relinquish_membership",
2555 "share_link",
2556 "create_link",
2557 "create_view_link",
2558 "create_edit_link",
2559 "other"];
2560 deserializer.deserialize_struct("FileAction", VARIANTS, EnumVisitor)
2561 }
2562}
2563
2564impl ::serde::ser::Serialize for FileAction {
2565 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2566 use serde::ser::SerializeStruct;
2568 match self {
2569 FileAction::DisableViewerInfo => {
2570 let mut s = serializer.serialize_struct("FileAction", 1)?;
2572 s.serialize_field(".tag", "disable_viewer_info")?;
2573 s.end()
2574 }
2575 FileAction::EditContents => {
2576 let mut s = serializer.serialize_struct("FileAction", 1)?;
2578 s.serialize_field(".tag", "edit_contents")?;
2579 s.end()
2580 }
2581 FileAction::EnableViewerInfo => {
2582 let mut s = serializer.serialize_struct("FileAction", 1)?;
2584 s.serialize_field(".tag", "enable_viewer_info")?;
2585 s.end()
2586 }
2587 FileAction::InviteViewer => {
2588 let mut s = serializer.serialize_struct("FileAction", 1)?;
2590 s.serialize_field(".tag", "invite_viewer")?;
2591 s.end()
2592 }
2593 FileAction::InviteViewerNoComment => {
2594 let mut s = serializer.serialize_struct("FileAction", 1)?;
2596 s.serialize_field(".tag", "invite_viewer_no_comment")?;
2597 s.end()
2598 }
2599 FileAction::InviteEditor => {
2600 let mut s = serializer.serialize_struct("FileAction", 1)?;
2602 s.serialize_field(".tag", "invite_editor")?;
2603 s.end()
2604 }
2605 FileAction::Unshare => {
2606 let mut s = serializer.serialize_struct("FileAction", 1)?;
2608 s.serialize_field(".tag", "unshare")?;
2609 s.end()
2610 }
2611 FileAction::RelinquishMembership => {
2612 let mut s = serializer.serialize_struct("FileAction", 1)?;
2614 s.serialize_field(".tag", "relinquish_membership")?;
2615 s.end()
2616 }
2617 FileAction::ShareLink => {
2618 let mut s = serializer.serialize_struct("FileAction", 1)?;
2620 s.serialize_field(".tag", "share_link")?;
2621 s.end()
2622 }
2623 FileAction::CreateLink => {
2624 let mut s = serializer.serialize_struct("FileAction", 1)?;
2626 s.serialize_field(".tag", "create_link")?;
2627 s.end()
2628 }
2629 FileAction::CreateViewLink => {
2630 let mut s = serializer.serialize_struct("FileAction", 1)?;
2632 s.serialize_field(".tag", "create_view_link")?;
2633 s.end()
2634 }
2635 FileAction::CreateEditLink => {
2636 let mut s = serializer.serialize_struct("FileAction", 1)?;
2638 s.serialize_field(".tag", "create_edit_link")?;
2639 s.end()
2640 }
2641 FileAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
2642 }
2643 }
2644}
2645
2646#[derive(Debug, Clone, PartialEq, Eq)]
2647#[non_exhaustive] pub enum FileErrorResult {
2649 FileNotFoundError(crate::types::files::Id),
2651 InvalidFileActionError(crate::types::files::Id),
2653 PermissionDeniedError(crate::types::files::Id),
2655 Other,
2658}
2659
2660impl<'de> ::serde::de::Deserialize<'de> for FileErrorResult {
2661 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2662 use serde::de::{self, MapAccess, Visitor};
2664 struct EnumVisitor;
2665 impl<'de> Visitor<'de> for EnumVisitor {
2666 type Value = FileErrorResult;
2667 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2668 f.write_str("a FileErrorResult structure")
2669 }
2670 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2671 let tag: &str = match map.next_key()? {
2672 Some(".tag") => map.next_value()?,
2673 _ => return Err(de::Error::missing_field(".tag"))
2674 };
2675 let value = match tag {
2676 "file_not_found_error" => {
2677 match map.next_key()? {
2678 Some("file_not_found_error") => FileErrorResult::FileNotFoundError(map.next_value()?),
2679 None => return Err(de::Error::missing_field("file_not_found_error")),
2680 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2681 }
2682 }
2683 "invalid_file_action_error" => {
2684 match map.next_key()? {
2685 Some("invalid_file_action_error") => FileErrorResult::InvalidFileActionError(map.next_value()?),
2686 None => return Err(de::Error::missing_field("invalid_file_action_error")),
2687 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2688 }
2689 }
2690 "permission_denied_error" => {
2691 match map.next_key()? {
2692 Some("permission_denied_error") => FileErrorResult::PermissionDeniedError(map.next_value()?),
2693 None => return Err(de::Error::missing_field("permission_denied_error")),
2694 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2695 }
2696 }
2697 _ => FileErrorResult::Other,
2698 };
2699 crate::eat_json_fields(&mut map)?;
2700 Ok(value)
2701 }
2702 }
2703 const VARIANTS: &[&str] = &["file_not_found_error",
2704 "invalid_file_action_error",
2705 "permission_denied_error",
2706 "other"];
2707 deserializer.deserialize_struct("FileErrorResult", VARIANTS, EnumVisitor)
2708 }
2709}
2710
2711impl ::serde::ser::Serialize for FileErrorResult {
2712 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2713 use serde::ser::SerializeStruct;
2715 match self {
2716 FileErrorResult::FileNotFoundError(x) => {
2717 let mut s = serializer.serialize_struct("FileErrorResult", 2)?;
2719 s.serialize_field(".tag", "file_not_found_error")?;
2720 s.serialize_field("file_not_found_error", x)?;
2721 s.end()
2722 }
2723 FileErrorResult::InvalidFileActionError(x) => {
2724 let mut s = serializer.serialize_struct("FileErrorResult", 2)?;
2726 s.serialize_field(".tag", "invalid_file_action_error")?;
2727 s.serialize_field("invalid_file_action_error", x)?;
2728 s.end()
2729 }
2730 FileErrorResult::PermissionDeniedError(x) => {
2731 let mut s = serializer.serialize_struct("FileErrorResult", 2)?;
2733 s.serialize_field(".tag", "permission_denied_error")?;
2734 s.serialize_field("permission_denied_error", x)?;
2735 s.end()
2736 }
2737 FileErrorResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
2738 }
2739 }
2740}
2741
2742#[derive(Debug, Clone, PartialEq, Eq)]
2744#[non_exhaustive] pub struct FileLinkMetadata {
2746 pub url: String,
2748 pub name: String,
2750 pub link_permissions: LinkPermissions,
2752 pub client_modified: crate::types::common::DropboxTimestamp,
2757 pub server_modified: crate::types::common::DropboxTimestamp,
2759 pub rev: Rev,
2762 pub size: u64,
2764 pub id: Option<Id>,
2766 pub expires: Option<crate::types::common::DropboxTimestamp>,
2768 pub path_lower: Option<String>,
2771 pub team_member_info: Option<TeamMemberInfo>,
2774 pub content_owner_team_info: Option<TeamInfo>,
2778}
2779
2780impl FileLinkMetadata {
2781 pub fn new(
2782 url: String,
2783 name: String,
2784 link_permissions: LinkPermissions,
2785 client_modified: crate::types::common::DropboxTimestamp,
2786 server_modified: crate::types::common::DropboxTimestamp,
2787 rev: Rev,
2788 size: u64,
2789 ) -> Self {
2790 FileLinkMetadata {
2791 url,
2792 name,
2793 link_permissions,
2794 client_modified,
2795 server_modified,
2796 rev,
2797 size,
2798 id: None,
2799 expires: None,
2800 path_lower: None,
2801 team_member_info: None,
2802 content_owner_team_info: None,
2803 }
2804 }
2805
2806 pub fn with_id(mut self, value: Id) -> Self {
2807 self.id = Some(value);
2808 self
2809 }
2810
2811 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
2812 self.expires = Some(value);
2813 self
2814 }
2815
2816 pub fn with_path_lower(mut self, value: String) -> Self {
2817 self.path_lower = Some(value);
2818 self
2819 }
2820
2821 pub fn with_team_member_info(mut self, value: TeamMemberInfo) -> Self {
2822 self.team_member_info = Some(value);
2823 self
2824 }
2825
2826 pub fn with_content_owner_team_info(mut self, value: TeamInfo) -> Self {
2827 self.content_owner_team_info = Some(value);
2828 self
2829 }
2830}
2831
2832const FILE_LINK_METADATA_FIELDS: &[&str] = &["url",
2833 "name",
2834 "link_permissions",
2835 "client_modified",
2836 "server_modified",
2837 "rev",
2838 "size",
2839 "id",
2840 "expires",
2841 "path_lower",
2842 "team_member_info",
2843 "content_owner_team_info"];
2844impl FileLinkMetadata {
2845 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2846 map: V,
2847 ) -> Result<FileLinkMetadata, V::Error> {
2848 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2849 }
2850
2851 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2852 mut map: V,
2853 optional: bool,
2854 ) -> Result<Option<FileLinkMetadata>, V::Error> {
2855 let mut field_url = None;
2856 let mut field_name = None;
2857 let mut field_link_permissions = None;
2858 let mut field_client_modified = None;
2859 let mut field_server_modified = None;
2860 let mut field_rev = None;
2861 let mut field_size = None;
2862 let mut field_id = None;
2863 let mut field_expires = None;
2864 let mut field_path_lower = None;
2865 let mut field_team_member_info = None;
2866 let mut field_content_owner_team_info = None;
2867 let mut nothing = true;
2868 while let Some(key) = map.next_key::<&str>()? {
2869 nothing = false;
2870 match key {
2871 "url" => {
2872 if field_url.is_some() {
2873 return Err(::serde::de::Error::duplicate_field("url"));
2874 }
2875 field_url = Some(map.next_value()?);
2876 }
2877 "name" => {
2878 if field_name.is_some() {
2879 return Err(::serde::de::Error::duplicate_field("name"));
2880 }
2881 field_name = Some(map.next_value()?);
2882 }
2883 "link_permissions" => {
2884 if field_link_permissions.is_some() {
2885 return Err(::serde::de::Error::duplicate_field("link_permissions"));
2886 }
2887 field_link_permissions = Some(map.next_value()?);
2888 }
2889 "client_modified" => {
2890 if field_client_modified.is_some() {
2891 return Err(::serde::de::Error::duplicate_field("client_modified"));
2892 }
2893 field_client_modified = Some(map.next_value()?);
2894 }
2895 "server_modified" => {
2896 if field_server_modified.is_some() {
2897 return Err(::serde::de::Error::duplicate_field("server_modified"));
2898 }
2899 field_server_modified = Some(map.next_value()?);
2900 }
2901 "rev" => {
2902 if field_rev.is_some() {
2903 return Err(::serde::de::Error::duplicate_field("rev"));
2904 }
2905 field_rev = Some(map.next_value()?);
2906 }
2907 "size" => {
2908 if field_size.is_some() {
2909 return Err(::serde::de::Error::duplicate_field("size"));
2910 }
2911 field_size = Some(map.next_value()?);
2912 }
2913 "id" => {
2914 if field_id.is_some() {
2915 return Err(::serde::de::Error::duplicate_field("id"));
2916 }
2917 field_id = Some(map.next_value()?);
2918 }
2919 "expires" => {
2920 if field_expires.is_some() {
2921 return Err(::serde::de::Error::duplicate_field("expires"));
2922 }
2923 field_expires = Some(map.next_value()?);
2924 }
2925 "path_lower" => {
2926 if field_path_lower.is_some() {
2927 return Err(::serde::de::Error::duplicate_field("path_lower"));
2928 }
2929 field_path_lower = Some(map.next_value()?);
2930 }
2931 "team_member_info" => {
2932 if field_team_member_info.is_some() {
2933 return Err(::serde::de::Error::duplicate_field("team_member_info"));
2934 }
2935 field_team_member_info = Some(map.next_value()?);
2936 }
2937 "content_owner_team_info" => {
2938 if field_content_owner_team_info.is_some() {
2939 return Err(::serde::de::Error::duplicate_field("content_owner_team_info"));
2940 }
2941 field_content_owner_team_info = Some(map.next_value()?);
2942 }
2943 _ => {
2944 map.next_value::<::serde_json::Value>()?;
2946 }
2947 }
2948 }
2949 if optional && nothing {
2950 return Ok(None);
2951 }
2952 let result = FileLinkMetadata {
2953 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
2954 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
2955 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
2956 client_modified: field_client_modified.ok_or_else(|| ::serde::de::Error::missing_field("client_modified"))?,
2957 server_modified: field_server_modified.ok_or_else(|| ::serde::de::Error::missing_field("server_modified"))?,
2958 rev: field_rev.ok_or_else(|| ::serde::de::Error::missing_field("rev"))?,
2959 size: field_size.ok_or_else(|| ::serde::de::Error::missing_field("size"))?,
2960 id: field_id.and_then(Option::flatten),
2961 expires: field_expires.and_then(Option::flatten),
2962 path_lower: field_path_lower.and_then(Option::flatten),
2963 team_member_info: field_team_member_info.and_then(Option::flatten),
2964 content_owner_team_info: field_content_owner_team_info.and_then(Option::flatten),
2965 };
2966 Ok(Some(result))
2967 }
2968
2969 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2970 &self,
2971 s: &mut S::SerializeStruct,
2972 ) -> Result<(), S::Error> {
2973 use serde::ser::SerializeStruct;
2974 s.serialize_field("url", &self.url)?;
2975 s.serialize_field("name", &self.name)?;
2976 s.serialize_field("link_permissions", &self.link_permissions)?;
2977 s.serialize_field("client_modified", &self.client_modified)?;
2978 s.serialize_field("server_modified", &self.server_modified)?;
2979 s.serialize_field("rev", &self.rev)?;
2980 s.serialize_field("size", &self.size)?;
2981 if let Some(val) = &self.id {
2982 s.serialize_field("id", val)?;
2983 }
2984 if let Some(val) = &self.expires {
2985 s.serialize_field("expires", val)?;
2986 }
2987 if let Some(val) = &self.path_lower {
2988 s.serialize_field("path_lower", val)?;
2989 }
2990 if let Some(val) = &self.team_member_info {
2991 s.serialize_field("team_member_info", val)?;
2992 }
2993 if let Some(val) = &self.content_owner_team_info {
2994 s.serialize_field("content_owner_team_info", val)?;
2995 }
2996 Ok(())
2997 }
2998}
2999
3000impl<'de> ::serde::de::Deserialize<'de> for FileLinkMetadata {
3001 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3002 use serde::de::{MapAccess, Visitor};
3004 struct StructVisitor;
3005 impl<'de> Visitor<'de> for StructVisitor {
3006 type Value = FileLinkMetadata;
3007 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3008 f.write_str("a FileLinkMetadata struct")
3009 }
3010 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3011 FileLinkMetadata::internal_deserialize(map)
3012 }
3013 }
3014 deserializer.deserialize_struct("FileLinkMetadata", FILE_LINK_METADATA_FIELDS, StructVisitor)
3015 }
3016}
3017
3018impl ::serde::ser::Serialize for FileLinkMetadata {
3019 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3020 use serde::ser::SerializeStruct;
3022 let mut s = serializer.serialize_struct("FileLinkMetadata", 12)?;
3023 self.internal_serialize::<S>(&mut s)?;
3024 s.end()
3025 }
3026}
3027
3028impl From<FileLinkMetadata> for SharedLinkMetadata {
3030 fn from(subtype: FileLinkMetadata) -> Self {
3031 SharedLinkMetadata::File(subtype)
3032 }
3033}
3034#[derive(Debug, Clone, PartialEq, Eq)]
3035#[non_exhaustive] pub enum FileMemberActionError {
3037 InvalidMember,
3039 NoPermission,
3041 AccessError(SharingFileAccessError),
3043 NoExplicitAccess(MemberAccessLevelResult),
3047 Other,
3050}
3051
3052impl<'de> ::serde::de::Deserialize<'de> for FileMemberActionError {
3053 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3054 use serde::de::{self, MapAccess, Visitor};
3056 struct EnumVisitor;
3057 impl<'de> Visitor<'de> for EnumVisitor {
3058 type Value = FileMemberActionError;
3059 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3060 f.write_str("a FileMemberActionError structure")
3061 }
3062 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3063 let tag: &str = match map.next_key()? {
3064 Some(".tag") => map.next_value()?,
3065 _ => return Err(de::Error::missing_field(".tag"))
3066 };
3067 let value = match tag {
3068 "invalid_member" => FileMemberActionError::InvalidMember,
3069 "no_permission" => FileMemberActionError::NoPermission,
3070 "access_error" => {
3071 match map.next_key()? {
3072 Some("access_error") => FileMemberActionError::AccessError(map.next_value()?),
3073 None => return Err(de::Error::missing_field("access_error")),
3074 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3075 }
3076 }
3077 "no_explicit_access" => FileMemberActionError::NoExplicitAccess(MemberAccessLevelResult::internal_deserialize(&mut map)?),
3078 _ => FileMemberActionError::Other,
3079 };
3080 crate::eat_json_fields(&mut map)?;
3081 Ok(value)
3082 }
3083 }
3084 const VARIANTS: &[&str] = &["invalid_member",
3085 "no_permission",
3086 "access_error",
3087 "no_explicit_access",
3088 "other"];
3089 deserializer.deserialize_struct("FileMemberActionError", VARIANTS, EnumVisitor)
3090 }
3091}
3092
3093impl ::serde::ser::Serialize for FileMemberActionError {
3094 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3095 use serde::ser::SerializeStruct;
3097 match self {
3098 FileMemberActionError::InvalidMember => {
3099 let mut s = serializer.serialize_struct("FileMemberActionError", 1)?;
3101 s.serialize_field(".tag", "invalid_member")?;
3102 s.end()
3103 }
3104 FileMemberActionError::NoPermission => {
3105 let mut s = serializer.serialize_struct("FileMemberActionError", 1)?;
3107 s.serialize_field(".tag", "no_permission")?;
3108 s.end()
3109 }
3110 FileMemberActionError::AccessError(x) => {
3111 let mut s = serializer.serialize_struct("FileMemberActionError", 2)?;
3113 s.serialize_field(".tag", "access_error")?;
3114 s.serialize_field("access_error", x)?;
3115 s.end()
3116 }
3117 FileMemberActionError::NoExplicitAccess(x) => {
3118 let mut s = serializer.serialize_struct("FileMemberActionError", 4)?;
3120 s.serialize_field(".tag", "no_explicit_access")?;
3121 x.internal_serialize::<S>(&mut s)?;
3122 s.end()
3123 }
3124 FileMemberActionError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3125 }
3126 }
3127}
3128
3129impl ::std::error::Error for FileMemberActionError {
3130 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
3131 match self {
3132 FileMemberActionError::AccessError(inner) => Some(inner),
3133 _ => None,
3134 }
3135 }
3136}
3137
3138impl ::std::fmt::Display for FileMemberActionError {
3139 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3140 match self {
3141 FileMemberActionError::InvalidMember => f.write_str("Specified member was not found."),
3142 FileMemberActionError::NoPermission => f.write_str("User does not have permission to perform this action on this member."),
3143 FileMemberActionError::AccessError(inner) => write!(f, "Specified file was invalid or user does not have access: {}", inner),
3144 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),
3145 _ => write!(f, "{:?}", *self),
3146 }
3147 }
3148}
3149
3150#[derive(Debug, Clone, PartialEq, Eq)]
3151pub enum FileMemberActionIndividualResult {
3152 Success(Option<AccessLevel>),
3157 MemberError(FileMemberActionError),
3159}
3160
3161impl<'de> ::serde::de::Deserialize<'de> for FileMemberActionIndividualResult {
3162 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3163 use serde::de::{self, MapAccess, Visitor};
3165 struct EnumVisitor;
3166 impl<'de> Visitor<'de> for EnumVisitor {
3167 type Value = FileMemberActionIndividualResult;
3168 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3169 f.write_str("a FileMemberActionIndividualResult structure")
3170 }
3171 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3172 let tag: &str = match map.next_key()? {
3173 Some(".tag") => map.next_value()?,
3174 _ => return Err(de::Error::missing_field(".tag"))
3175 };
3176 let value = match tag {
3177 "success" => {
3178 match map.next_key()? {
3179 Some("success") => FileMemberActionIndividualResult::Success(map.next_value()?),
3180 None => FileMemberActionIndividualResult::Success(None),
3181 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3182 }
3183 }
3184 "member_error" => {
3185 match map.next_key()? {
3186 Some("member_error") => FileMemberActionIndividualResult::MemberError(map.next_value()?),
3187 None => return Err(de::Error::missing_field("member_error")),
3188 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3189 }
3190 }
3191 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
3192 };
3193 crate::eat_json_fields(&mut map)?;
3194 Ok(value)
3195 }
3196 }
3197 const VARIANTS: &[&str] = &["success",
3198 "member_error"];
3199 deserializer.deserialize_struct("FileMemberActionIndividualResult", VARIANTS, EnumVisitor)
3200 }
3201}
3202
3203impl ::serde::ser::Serialize for FileMemberActionIndividualResult {
3204 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3205 use serde::ser::SerializeStruct;
3207 match self {
3208 FileMemberActionIndividualResult::Success(x) => {
3209 let mut s = serializer.serialize_struct("FileMemberActionIndividualResult", 2)?;
3211 s.serialize_field(".tag", "success")?;
3212 s.serialize_field("success", x)?;
3213 s.end()
3214 }
3215 FileMemberActionIndividualResult::MemberError(x) => {
3216 let mut s = serializer.serialize_struct("FileMemberActionIndividualResult", 2)?;
3218 s.serialize_field(".tag", "member_error")?;
3219 s.serialize_field("member_error", x)?;
3220 s.end()
3221 }
3222 }
3223 }
3224}
3225
3226#[derive(Debug, Clone, PartialEq, Eq)]
3228#[non_exhaustive] pub struct FileMemberActionResult {
3230 pub member: MemberSelector,
3232 pub result: FileMemberActionIndividualResult,
3234 pub sckey_sha1: Option<String>,
3236 pub invitation_signature: Option<Vec<String>>,
3239}
3240
3241impl FileMemberActionResult {
3242 pub fn new(member: MemberSelector, result: FileMemberActionIndividualResult) -> Self {
3243 FileMemberActionResult {
3244 member,
3245 result,
3246 sckey_sha1: None,
3247 invitation_signature: None,
3248 }
3249 }
3250
3251 pub fn with_sckey_sha1(mut self, value: String) -> Self {
3252 self.sckey_sha1 = Some(value);
3253 self
3254 }
3255
3256 pub fn with_invitation_signature(mut self, value: Vec<String>) -> Self {
3257 self.invitation_signature = Some(value);
3258 self
3259 }
3260}
3261
3262const FILE_MEMBER_ACTION_RESULT_FIELDS: &[&str] = &["member",
3263 "result",
3264 "sckey_sha1",
3265 "invitation_signature"];
3266impl FileMemberActionResult {
3267 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3268 map: V,
3269 ) -> Result<FileMemberActionResult, V::Error> {
3270 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3271 }
3272
3273 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3274 mut map: V,
3275 optional: bool,
3276 ) -> Result<Option<FileMemberActionResult>, V::Error> {
3277 let mut field_member = None;
3278 let mut field_result = None;
3279 let mut field_sckey_sha1 = None;
3280 let mut field_invitation_signature = None;
3281 let mut nothing = true;
3282 while let Some(key) = map.next_key::<&str>()? {
3283 nothing = false;
3284 match key {
3285 "member" => {
3286 if field_member.is_some() {
3287 return Err(::serde::de::Error::duplicate_field("member"));
3288 }
3289 field_member = Some(map.next_value()?);
3290 }
3291 "result" => {
3292 if field_result.is_some() {
3293 return Err(::serde::de::Error::duplicate_field("result"));
3294 }
3295 field_result = Some(map.next_value()?);
3296 }
3297 "sckey_sha1" => {
3298 if field_sckey_sha1.is_some() {
3299 return Err(::serde::de::Error::duplicate_field("sckey_sha1"));
3300 }
3301 field_sckey_sha1 = Some(map.next_value()?);
3302 }
3303 "invitation_signature" => {
3304 if field_invitation_signature.is_some() {
3305 return Err(::serde::de::Error::duplicate_field("invitation_signature"));
3306 }
3307 field_invitation_signature = Some(map.next_value()?);
3308 }
3309 _ => {
3310 map.next_value::<::serde_json::Value>()?;
3312 }
3313 }
3314 }
3315 if optional && nothing {
3316 return Ok(None);
3317 }
3318 let result = FileMemberActionResult {
3319 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
3320 result: field_result.ok_or_else(|| ::serde::de::Error::missing_field("result"))?,
3321 sckey_sha1: field_sckey_sha1.and_then(Option::flatten),
3322 invitation_signature: field_invitation_signature.and_then(Option::flatten),
3323 };
3324 Ok(Some(result))
3325 }
3326
3327 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3328 &self,
3329 s: &mut S::SerializeStruct,
3330 ) -> Result<(), S::Error> {
3331 use serde::ser::SerializeStruct;
3332 s.serialize_field("member", &self.member)?;
3333 s.serialize_field("result", &self.result)?;
3334 if let Some(val) = &self.sckey_sha1 {
3335 s.serialize_field("sckey_sha1", val)?;
3336 }
3337 if let Some(val) = &self.invitation_signature {
3338 s.serialize_field("invitation_signature", val)?;
3339 }
3340 Ok(())
3341 }
3342}
3343
3344impl<'de> ::serde::de::Deserialize<'de> for FileMemberActionResult {
3345 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3346 use serde::de::{MapAccess, Visitor};
3348 struct StructVisitor;
3349 impl<'de> Visitor<'de> for StructVisitor {
3350 type Value = FileMemberActionResult;
3351 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3352 f.write_str("a FileMemberActionResult struct")
3353 }
3354 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3355 FileMemberActionResult::internal_deserialize(map)
3356 }
3357 }
3358 deserializer.deserialize_struct("FileMemberActionResult", FILE_MEMBER_ACTION_RESULT_FIELDS, StructVisitor)
3359 }
3360}
3361
3362impl ::serde::ser::Serialize for FileMemberActionResult {
3363 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3364 use serde::ser::SerializeStruct;
3366 let mut s = serializer.serialize_struct("FileMemberActionResult", 4)?;
3367 self.internal_serialize::<S>(&mut s)?;
3368 s.end()
3369 }
3370}
3371
3372#[derive(Debug, Clone, PartialEq, Eq)]
3373#[non_exhaustive] pub enum FileMemberRemoveActionResult {
3375 Success(MemberAccessLevelResult),
3377 MemberError(FileMemberActionError),
3379 Other,
3382}
3383
3384impl<'de> ::serde::de::Deserialize<'de> for FileMemberRemoveActionResult {
3385 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3386 use serde::de::{self, MapAccess, Visitor};
3388 struct EnumVisitor;
3389 impl<'de> Visitor<'de> for EnumVisitor {
3390 type Value = FileMemberRemoveActionResult;
3391 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3392 f.write_str("a FileMemberRemoveActionResult structure")
3393 }
3394 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3395 let tag: &str = match map.next_key()? {
3396 Some(".tag") => map.next_value()?,
3397 _ => return Err(de::Error::missing_field(".tag"))
3398 };
3399 let value = match tag {
3400 "success" => FileMemberRemoveActionResult::Success(MemberAccessLevelResult::internal_deserialize(&mut map)?),
3401 "member_error" => {
3402 match map.next_key()? {
3403 Some("member_error") => FileMemberRemoveActionResult::MemberError(map.next_value()?),
3404 None => return Err(de::Error::missing_field("member_error")),
3405 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3406 }
3407 }
3408 _ => FileMemberRemoveActionResult::Other,
3409 };
3410 crate::eat_json_fields(&mut map)?;
3411 Ok(value)
3412 }
3413 }
3414 const VARIANTS: &[&str] = &["success",
3415 "member_error",
3416 "other"];
3417 deserializer.deserialize_struct("FileMemberRemoveActionResult", VARIANTS, EnumVisitor)
3418 }
3419}
3420
3421impl ::serde::ser::Serialize for FileMemberRemoveActionResult {
3422 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3423 use serde::ser::SerializeStruct;
3425 match self {
3426 FileMemberRemoveActionResult::Success(x) => {
3427 let mut s = serializer.serialize_struct("FileMemberRemoveActionResult", 4)?;
3429 s.serialize_field(".tag", "success")?;
3430 x.internal_serialize::<S>(&mut s)?;
3431 s.end()
3432 }
3433 FileMemberRemoveActionResult::MemberError(x) => {
3434 let mut s = serializer.serialize_struct("FileMemberRemoveActionResult", 2)?;
3436 s.serialize_field(".tag", "member_error")?;
3437 s.serialize_field("member_error", x)?;
3438 s.end()
3439 }
3440 FileMemberRemoveActionResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3441 }
3442 }
3443}
3444
3445#[derive(Debug, Clone, PartialEq, Eq)]
3447#[non_exhaustive] pub struct FilePermission {
3449 pub action: FileAction,
3451 pub allow: bool,
3453 pub reason: Option<PermissionDeniedReason>,
3455}
3456
3457impl FilePermission {
3458 pub fn new(action: FileAction, allow: bool) -> Self {
3459 FilePermission {
3460 action,
3461 allow,
3462 reason: None,
3463 }
3464 }
3465
3466 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
3467 self.reason = Some(value);
3468 self
3469 }
3470}
3471
3472const FILE_PERMISSION_FIELDS: &[&str] = &["action",
3473 "allow",
3474 "reason"];
3475impl FilePermission {
3476 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3477 map: V,
3478 ) -> Result<FilePermission, V::Error> {
3479 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3480 }
3481
3482 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3483 mut map: V,
3484 optional: bool,
3485 ) -> Result<Option<FilePermission>, V::Error> {
3486 let mut field_action = None;
3487 let mut field_allow = None;
3488 let mut field_reason = None;
3489 let mut nothing = true;
3490 while let Some(key) = map.next_key::<&str>()? {
3491 nothing = false;
3492 match key {
3493 "action" => {
3494 if field_action.is_some() {
3495 return Err(::serde::de::Error::duplicate_field("action"));
3496 }
3497 field_action = Some(map.next_value()?);
3498 }
3499 "allow" => {
3500 if field_allow.is_some() {
3501 return Err(::serde::de::Error::duplicate_field("allow"));
3502 }
3503 field_allow = Some(map.next_value()?);
3504 }
3505 "reason" => {
3506 if field_reason.is_some() {
3507 return Err(::serde::de::Error::duplicate_field("reason"));
3508 }
3509 field_reason = Some(map.next_value()?);
3510 }
3511 _ => {
3512 map.next_value::<::serde_json::Value>()?;
3514 }
3515 }
3516 }
3517 if optional && nothing {
3518 return Ok(None);
3519 }
3520 let result = FilePermission {
3521 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
3522 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
3523 reason: field_reason.and_then(Option::flatten),
3524 };
3525 Ok(Some(result))
3526 }
3527
3528 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3529 &self,
3530 s: &mut S::SerializeStruct,
3531 ) -> Result<(), S::Error> {
3532 use serde::ser::SerializeStruct;
3533 s.serialize_field("action", &self.action)?;
3534 s.serialize_field("allow", &self.allow)?;
3535 if let Some(val) = &self.reason {
3536 s.serialize_field("reason", val)?;
3537 }
3538 Ok(())
3539 }
3540}
3541
3542impl<'de> ::serde::de::Deserialize<'de> for FilePermission {
3543 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3544 use serde::de::{MapAccess, Visitor};
3546 struct StructVisitor;
3547 impl<'de> Visitor<'de> for StructVisitor {
3548 type Value = FilePermission;
3549 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3550 f.write_str("a FilePermission struct")
3551 }
3552 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3553 FilePermission::internal_deserialize(map)
3554 }
3555 }
3556 deserializer.deserialize_struct("FilePermission", FILE_PERMISSION_FIELDS, StructVisitor)
3557 }
3558}
3559
3560impl ::serde::ser::Serialize for FilePermission {
3561 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3562 use serde::ser::SerializeStruct;
3564 let mut s = serializer.serialize_struct("FilePermission", 3)?;
3565 self.internal_serialize::<S>(&mut s)?;
3566 s.end()
3567 }
3568}
3569
3570#[derive(Debug, Clone, PartialEq, Eq)]
3572#[non_exhaustive] pub enum FolderAction {
3574 ChangeOptions,
3576 DisableViewerInfo,
3578 EditContents,
3580 EnableViewerInfo,
3582 InviteEditor,
3584 InviteViewer,
3586 InviteViewerNoComment,
3588 RelinquishMembership,
3590 Unmount,
3592 Unshare,
3594 LeaveACopy,
3596 ShareLink,
3598 CreateLink,
3600 SetAccessInheritance,
3602 Other,
3605}
3606
3607impl<'de> ::serde::de::Deserialize<'de> for FolderAction {
3608 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3609 use serde::de::{self, MapAccess, Visitor};
3611 struct EnumVisitor;
3612 impl<'de> Visitor<'de> for EnumVisitor {
3613 type Value = FolderAction;
3614 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3615 f.write_str("a FolderAction structure")
3616 }
3617 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3618 let tag: &str = match map.next_key()? {
3619 Some(".tag") => map.next_value()?,
3620 _ => return Err(de::Error::missing_field(".tag"))
3621 };
3622 let value = match tag {
3623 "change_options" => FolderAction::ChangeOptions,
3624 "disable_viewer_info" => FolderAction::DisableViewerInfo,
3625 "edit_contents" => FolderAction::EditContents,
3626 "enable_viewer_info" => FolderAction::EnableViewerInfo,
3627 "invite_editor" => FolderAction::InviteEditor,
3628 "invite_viewer" => FolderAction::InviteViewer,
3629 "invite_viewer_no_comment" => FolderAction::InviteViewerNoComment,
3630 "relinquish_membership" => FolderAction::RelinquishMembership,
3631 "unmount" => FolderAction::Unmount,
3632 "unshare" => FolderAction::Unshare,
3633 "leave_a_copy" => FolderAction::LeaveACopy,
3634 "share_link" => FolderAction::ShareLink,
3635 "create_link" => FolderAction::CreateLink,
3636 "set_access_inheritance" => FolderAction::SetAccessInheritance,
3637 _ => FolderAction::Other,
3638 };
3639 crate::eat_json_fields(&mut map)?;
3640 Ok(value)
3641 }
3642 }
3643 const VARIANTS: &[&str] = &["change_options",
3644 "disable_viewer_info",
3645 "edit_contents",
3646 "enable_viewer_info",
3647 "invite_editor",
3648 "invite_viewer",
3649 "invite_viewer_no_comment",
3650 "relinquish_membership",
3651 "unmount",
3652 "unshare",
3653 "leave_a_copy",
3654 "share_link",
3655 "create_link",
3656 "set_access_inheritance",
3657 "other"];
3658 deserializer.deserialize_struct("FolderAction", VARIANTS, EnumVisitor)
3659 }
3660}
3661
3662impl ::serde::ser::Serialize for FolderAction {
3663 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3664 use serde::ser::SerializeStruct;
3666 match self {
3667 FolderAction::ChangeOptions => {
3668 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3670 s.serialize_field(".tag", "change_options")?;
3671 s.end()
3672 }
3673 FolderAction::DisableViewerInfo => {
3674 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3676 s.serialize_field(".tag", "disable_viewer_info")?;
3677 s.end()
3678 }
3679 FolderAction::EditContents => {
3680 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3682 s.serialize_field(".tag", "edit_contents")?;
3683 s.end()
3684 }
3685 FolderAction::EnableViewerInfo => {
3686 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3688 s.serialize_field(".tag", "enable_viewer_info")?;
3689 s.end()
3690 }
3691 FolderAction::InviteEditor => {
3692 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3694 s.serialize_field(".tag", "invite_editor")?;
3695 s.end()
3696 }
3697 FolderAction::InviteViewer => {
3698 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3700 s.serialize_field(".tag", "invite_viewer")?;
3701 s.end()
3702 }
3703 FolderAction::InviteViewerNoComment => {
3704 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3706 s.serialize_field(".tag", "invite_viewer_no_comment")?;
3707 s.end()
3708 }
3709 FolderAction::RelinquishMembership => {
3710 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3712 s.serialize_field(".tag", "relinquish_membership")?;
3713 s.end()
3714 }
3715 FolderAction::Unmount => {
3716 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3718 s.serialize_field(".tag", "unmount")?;
3719 s.end()
3720 }
3721 FolderAction::Unshare => {
3722 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3724 s.serialize_field(".tag", "unshare")?;
3725 s.end()
3726 }
3727 FolderAction::LeaveACopy => {
3728 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3730 s.serialize_field(".tag", "leave_a_copy")?;
3731 s.end()
3732 }
3733 FolderAction::ShareLink => {
3734 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3736 s.serialize_field(".tag", "share_link")?;
3737 s.end()
3738 }
3739 FolderAction::CreateLink => {
3740 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3742 s.serialize_field(".tag", "create_link")?;
3743 s.end()
3744 }
3745 FolderAction::SetAccessInheritance => {
3746 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3748 s.serialize_field(".tag", "set_access_inheritance")?;
3749 s.end()
3750 }
3751 FolderAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3752 }
3753 }
3754}
3755
3756#[derive(Debug, Clone, PartialEq, Eq)]
3758#[non_exhaustive] pub struct FolderLinkMetadata {
3760 pub url: String,
3762 pub name: String,
3764 pub link_permissions: LinkPermissions,
3766 pub id: Option<Id>,
3768 pub expires: Option<crate::types::common::DropboxTimestamp>,
3770 pub path_lower: Option<String>,
3773 pub team_member_info: Option<TeamMemberInfo>,
3776 pub content_owner_team_info: Option<TeamInfo>,
3780}
3781
3782impl FolderLinkMetadata {
3783 pub fn new(url: String, name: String, link_permissions: LinkPermissions) -> Self {
3784 FolderLinkMetadata {
3785 url,
3786 name,
3787 link_permissions,
3788 id: None,
3789 expires: None,
3790 path_lower: None,
3791 team_member_info: None,
3792 content_owner_team_info: None,
3793 }
3794 }
3795
3796 pub fn with_id(mut self, value: Id) -> Self {
3797 self.id = Some(value);
3798 self
3799 }
3800
3801 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
3802 self.expires = Some(value);
3803 self
3804 }
3805
3806 pub fn with_path_lower(mut self, value: String) -> Self {
3807 self.path_lower = Some(value);
3808 self
3809 }
3810
3811 pub fn with_team_member_info(mut self, value: TeamMemberInfo) -> Self {
3812 self.team_member_info = Some(value);
3813 self
3814 }
3815
3816 pub fn with_content_owner_team_info(mut self, value: TeamInfo) -> Self {
3817 self.content_owner_team_info = Some(value);
3818 self
3819 }
3820}
3821
3822const FOLDER_LINK_METADATA_FIELDS: &[&str] = &["url",
3823 "name",
3824 "link_permissions",
3825 "id",
3826 "expires",
3827 "path_lower",
3828 "team_member_info",
3829 "content_owner_team_info"];
3830impl FolderLinkMetadata {
3831 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3832 map: V,
3833 ) -> Result<FolderLinkMetadata, V::Error> {
3834 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3835 }
3836
3837 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3838 mut map: V,
3839 optional: bool,
3840 ) -> Result<Option<FolderLinkMetadata>, V::Error> {
3841 let mut field_url = None;
3842 let mut field_name = None;
3843 let mut field_link_permissions = None;
3844 let mut field_id = None;
3845 let mut field_expires = None;
3846 let mut field_path_lower = None;
3847 let mut field_team_member_info = None;
3848 let mut field_content_owner_team_info = None;
3849 let mut nothing = true;
3850 while let Some(key) = map.next_key::<&str>()? {
3851 nothing = false;
3852 match key {
3853 "url" => {
3854 if field_url.is_some() {
3855 return Err(::serde::de::Error::duplicate_field("url"));
3856 }
3857 field_url = Some(map.next_value()?);
3858 }
3859 "name" => {
3860 if field_name.is_some() {
3861 return Err(::serde::de::Error::duplicate_field("name"));
3862 }
3863 field_name = Some(map.next_value()?);
3864 }
3865 "link_permissions" => {
3866 if field_link_permissions.is_some() {
3867 return Err(::serde::de::Error::duplicate_field("link_permissions"));
3868 }
3869 field_link_permissions = Some(map.next_value()?);
3870 }
3871 "id" => {
3872 if field_id.is_some() {
3873 return Err(::serde::de::Error::duplicate_field("id"));
3874 }
3875 field_id = Some(map.next_value()?);
3876 }
3877 "expires" => {
3878 if field_expires.is_some() {
3879 return Err(::serde::de::Error::duplicate_field("expires"));
3880 }
3881 field_expires = Some(map.next_value()?);
3882 }
3883 "path_lower" => {
3884 if field_path_lower.is_some() {
3885 return Err(::serde::de::Error::duplicate_field("path_lower"));
3886 }
3887 field_path_lower = Some(map.next_value()?);
3888 }
3889 "team_member_info" => {
3890 if field_team_member_info.is_some() {
3891 return Err(::serde::de::Error::duplicate_field("team_member_info"));
3892 }
3893 field_team_member_info = Some(map.next_value()?);
3894 }
3895 "content_owner_team_info" => {
3896 if field_content_owner_team_info.is_some() {
3897 return Err(::serde::de::Error::duplicate_field("content_owner_team_info"));
3898 }
3899 field_content_owner_team_info = Some(map.next_value()?);
3900 }
3901 _ => {
3902 map.next_value::<::serde_json::Value>()?;
3904 }
3905 }
3906 }
3907 if optional && nothing {
3908 return Ok(None);
3909 }
3910 let result = FolderLinkMetadata {
3911 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
3912 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
3913 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
3914 id: field_id.and_then(Option::flatten),
3915 expires: field_expires.and_then(Option::flatten),
3916 path_lower: field_path_lower.and_then(Option::flatten),
3917 team_member_info: field_team_member_info.and_then(Option::flatten),
3918 content_owner_team_info: field_content_owner_team_info.and_then(Option::flatten),
3919 };
3920 Ok(Some(result))
3921 }
3922
3923 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3924 &self,
3925 s: &mut S::SerializeStruct,
3926 ) -> Result<(), S::Error> {
3927 use serde::ser::SerializeStruct;
3928 s.serialize_field("url", &self.url)?;
3929 s.serialize_field("name", &self.name)?;
3930 s.serialize_field("link_permissions", &self.link_permissions)?;
3931 if let Some(val) = &self.id {
3932 s.serialize_field("id", val)?;
3933 }
3934 if let Some(val) = &self.expires {
3935 s.serialize_field("expires", val)?;
3936 }
3937 if let Some(val) = &self.path_lower {
3938 s.serialize_field("path_lower", val)?;
3939 }
3940 if let Some(val) = &self.team_member_info {
3941 s.serialize_field("team_member_info", val)?;
3942 }
3943 if let Some(val) = &self.content_owner_team_info {
3944 s.serialize_field("content_owner_team_info", val)?;
3945 }
3946 Ok(())
3947 }
3948}
3949
3950impl<'de> ::serde::de::Deserialize<'de> for FolderLinkMetadata {
3951 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3952 use serde::de::{MapAccess, Visitor};
3954 struct StructVisitor;
3955 impl<'de> Visitor<'de> for StructVisitor {
3956 type Value = FolderLinkMetadata;
3957 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3958 f.write_str("a FolderLinkMetadata struct")
3959 }
3960 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3961 FolderLinkMetadata::internal_deserialize(map)
3962 }
3963 }
3964 deserializer.deserialize_struct("FolderLinkMetadata", FOLDER_LINK_METADATA_FIELDS, StructVisitor)
3965 }
3966}
3967
3968impl ::serde::ser::Serialize for FolderLinkMetadata {
3969 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3970 use serde::ser::SerializeStruct;
3972 let mut s = serializer.serialize_struct("FolderLinkMetadata", 8)?;
3973 self.internal_serialize::<S>(&mut s)?;
3974 s.end()
3975 }
3976}
3977
3978impl From<FolderLinkMetadata> for SharedLinkMetadata {
3980 fn from(subtype: FolderLinkMetadata) -> Self {
3981 SharedLinkMetadata::Folder(subtype)
3982 }
3983}
3984#[derive(Debug, Clone, PartialEq, Eq)]
3986#[non_exhaustive] pub struct FolderPermission {
3988 pub action: FolderAction,
3990 pub allow: bool,
3992 pub reason: Option<PermissionDeniedReason>,
3995}
3996
3997impl FolderPermission {
3998 pub fn new(action: FolderAction, allow: bool) -> Self {
3999 FolderPermission {
4000 action,
4001 allow,
4002 reason: None,
4003 }
4004 }
4005
4006 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
4007 self.reason = Some(value);
4008 self
4009 }
4010}
4011
4012const FOLDER_PERMISSION_FIELDS: &[&str] = &["action",
4013 "allow",
4014 "reason"];
4015impl FolderPermission {
4016 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4017 map: V,
4018 ) -> Result<FolderPermission, V::Error> {
4019 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4020 }
4021
4022 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4023 mut map: V,
4024 optional: bool,
4025 ) -> Result<Option<FolderPermission>, V::Error> {
4026 let mut field_action = None;
4027 let mut field_allow = None;
4028 let mut field_reason = None;
4029 let mut nothing = true;
4030 while let Some(key) = map.next_key::<&str>()? {
4031 nothing = false;
4032 match key {
4033 "action" => {
4034 if field_action.is_some() {
4035 return Err(::serde::de::Error::duplicate_field("action"));
4036 }
4037 field_action = Some(map.next_value()?);
4038 }
4039 "allow" => {
4040 if field_allow.is_some() {
4041 return Err(::serde::de::Error::duplicate_field("allow"));
4042 }
4043 field_allow = Some(map.next_value()?);
4044 }
4045 "reason" => {
4046 if field_reason.is_some() {
4047 return Err(::serde::de::Error::duplicate_field("reason"));
4048 }
4049 field_reason = Some(map.next_value()?);
4050 }
4051 _ => {
4052 map.next_value::<::serde_json::Value>()?;
4054 }
4055 }
4056 }
4057 if optional && nothing {
4058 return Ok(None);
4059 }
4060 let result = FolderPermission {
4061 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
4062 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
4063 reason: field_reason.and_then(Option::flatten),
4064 };
4065 Ok(Some(result))
4066 }
4067
4068 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4069 &self,
4070 s: &mut S::SerializeStruct,
4071 ) -> Result<(), S::Error> {
4072 use serde::ser::SerializeStruct;
4073 s.serialize_field("action", &self.action)?;
4074 s.serialize_field("allow", &self.allow)?;
4075 if let Some(val) = &self.reason {
4076 s.serialize_field("reason", val)?;
4077 }
4078 Ok(())
4079 }
4080}
4081
4082impl<'de> ::serde::de::Deserialize<'de> for FolderPermission {
4083 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4084 use serde::de::{MapAccess, Visitor};
4086 struct StructVisitor;
4087 impl<'de> Visitor<'de> for StructVisitor {
4088 type Value = FolderPermission;
4089 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4090 f.write_str("a FolderPermission struct")
4091 }
4092 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4093 FolderPermission::internal_deserialize(map)
4094 }
4095 }
4096 deserializer.deserialize_struct("FolderPermission", FOLDER_PERMISSION_FIELDS, StructVisitor)
4097 }
4098}
4099
4100impl ::serde::ser::Serialize for FolderPermission {
4101 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4102 use serde::ser::SerializeStruct;
4104 let mut s = serializer.serialize_struct("FolderPermission", 3)?;
4105 self.internal_serialize::<S>(&mut s)?;
4106 s.end()
4107 }
4108}
4109
4110#[derive(Debug, Clone, PartialEq, Eq)]
4112#[non_exhaustive] pub struct FolderPolicy {
4114 pub acl_update_policy: AclUpdatePolicy,
4116 pub shared_link_policy: SharedLinkPolicy,
4118 pub member_policy: Option<MemberPolicy>,
4122 pub resolved_member_policy: Option<MemberPolicy>,
4126 pub viewer_info_policy: Option<ViewerInfoPolicy>,
4128}
4129
4130impl FolderPolicy {
4131 pub fn new(acl_update_policy: AclUpdatePolicy, shared_link_policy: SharedLinkPolicy) -> Self {
4132 FolderPolicy {
4133 acl_update_policy,
4134 shared_link_policy,
4135 member_policy: None,
4136 resolved_member_policy: None,
4137 viewer_info_policy: None,
4138 }
4139 }
4140
4141 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
4142 self.member_policy = Some(value);
4143 self
4144 }
4145
4146 pub fn with_resolved_member_policy(mut self, value: MemberPolicy) -> Self {
4147 self.resolved_member_policy = Some(value);
4148 self
4149 }
4150
4151 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
4152 self.viewer_info_policy = Some(value);
4153 self
4154 }
4155}
4156
4157const FOLDER_POLICY_FIELDS: &[&str] = &["acl_update_policy",
4158 "shared_link_policy",
4159 "member_policy",
4160 "resolved_member_policy",
4161 "viewer_info_policy"];
4162impl FolderPolicy {
4163 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4164 map: V,
4165 ) -> Result<FolderPolicy, V::Error> {
4166 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4167 }
4168
4169 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4170 mut map: V,
4171 optional: bool,
4172 ) -> Result<Option<FolderPolicy>, V::Error> {
4173 let mut field_acl_update_policy = None;
4174 let mut field_shared_link_policy = None;
4175 let mut field_member_policy = None;
4176 let mut field_resolved_member_policy = None;
4177 let mut field_viewer_info_policy = None;
4178 let mut nothing = true;
4179 while let Some(key) = map.next_key::<&str>()? {
4180 nothing = false;
4181 match key {
4182 "acl_update_policy" => {
4183 if field_acl_update_policy.is_some() {
4184 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
4185 }
4186 field_acl_update_policy = Some(map.next_value()?);
4187 }
4188 "shared_link_policy" => {
4189 if field_shared_link_policy.is_some() {
4190 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
4191 }
4192 field_shared_link_policy = Some(map.next_value()?);
4193 }
4194 "member_policy" => {
4195 if field_member_policy.is_some() {
4196 return Err(::serde::de::Error::duplicate_field("member_policy"));
4197 }
4198 field_member_policy = Some(map.next_value()?);
4199 }
4200 "resolved_member_policy" => {
4201 if field_resolved_member_policy.is_some() {
4202 return Err(::serde::de::Error::duplicate_field("resolved_member_policy"));
4203 }
4204 field_resolved_member_policy = Some(map.next_value()?);
4205 }
4206 "viewer_info_policy" => {
4207 if field_viewer_info_policy.is_some() {
4208 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
4209 }
4210 field_viewer_info_policy = Some(map.next_value()?);
4211 }
4212 _ => {
4213 map.next_value::<::serde_json::Value>()?;
4215 }
4216 }
4217 }
4218 if optional && nothing {
4219 return Ok(None);
4220 }
4221 let result = FolderPolicy {
4222 acl_update_policy: field_acl_update_policy.ok_or_else(|| ::serde::de::Error::missing_field("acl_update_policy"))?,
4223 shared_link_policy: field_shared_link_policy.ok_or_else(|| ::serde::de::Error::missing_field("shared_link_policy"))?,
4224 member_policy: field_member_policy.and_then(Option::flatten),
4225 resolved_member_policy: field_resolved_member_policy.and_then(Option::flatten),
4226 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
4227 };
4228 Ok(Some(result))
4229 }
4230
4231 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4232 &self,
4233 s: &mut S::SerializeStruct,
4234 ) -> Result<(), S::Error> {
4235 use serde::ser::SerializeStruct;
4236 s.serialize_field("acl_update_policy", &self.acl_update_policy)?;
4237 s.serialize_field("shared_link_policy", &self.shared_link_policy)?;
4238 if let Some(val) = &self.member_policy {
4239 s.serialize_field("member_policy", val)?;
4240 }
4241 if let Some(val) = &self.resolved_member_policy {
4242 s.serialize_field("resolved_member_policy", val)?;
4243 }
4244 if let Some(val) = &self.viewer_info_policy {
4245 s.serialize_field("viewer_info_policy", val)?;
4246 }
4247 Ok(())
4248 }
4249}
4250
4251impl<'de> ::serde::de::Deserialize<'de> for FolderPolicy {
4252 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4253 use serde::de::{MapAccess, Visitor};
4255 struct StructVisitor;
4256 impl<'de> Visitor<'de> for StructVisitor {
4257 type Value = FolderPolicy;
4258 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4259 f.write_str("a FolderPolicy struct")
4260 }
4261 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4262 FolderPolicy::internal_deserialize(map)
4263 }
4264 }
4265 deserializer.deserialize_struct("FolderPolicy", FOLDER_POLICY_FIELDS, StructVisitor)
4266 }
4267}
4268
4269impl ::serde::ser::Serialize for FolderPolicy {
4270 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4271 use serde::ser::SerializeStruct;
4273 let mut s = serializer.serialize_struct("FolderPolicy", 5)?;
4274 self.internal_serialize::<S>(&mut s)?;
4275 s.end()
4276 }
4277}
4278
4279#[derive(Debug, Clone, PartialEq, Eq)]
4281#[non_exhaustive] pub struct GetFileMetadataArg {
4283 pub file: PathOrId,
4285 pub actions: Option<Vec<FileAction>>,
4289}
4290
4291impl GetFileMetadataArg {
4292 pub fn new(file: PathOrId) -> Self {
4293 GetFileMetadataArg {
4294 file,
4295 actions: None,
4296 }
4297 }
4298
4299 pub fn with_actions(mut self, value: Vec<FileAction>) -> Self {
4300 self.actions = Some(value);
4301 self
4302 }
4303}
4304
4305const GET_FILE_METADATA_ARG_FIELDS: &[&str] = &["file",
4306 "actions"];
4307impl GetFileMetadataArg {
4308 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4309 map: V,
4310 ) -> Result<GetFileMetadataArg, V::Error> {
4311 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4312 }
4313
4314 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4315 mut map: V,
4316 optional: bool,
4317 ) -> Result<Option<GetFileMetadataArg>, V::Error> {
4318 let mut field_file = None;
4319 let mut field_actions = None;
4320 let mut nothing = true;
4321 while let Some(key) = map.next_key::<&str>()? {
4322 nothing = false;
4323 match key {
4324 "file" => {
4325 if field_file.is_some() {
4326 return Err(::serde::de::Error::duplicate_field("file"));
4327 }
4328 field_file = Some(map.next_value()?);
4329 }
4330 "actions" => {
4331 if field_actions.is_some() {
4332 return Err(::serde::de::Error::duplicate_field("actions"));
4333 }
4334 field_actions = Some(map.next_value()?);
4335 }
4336 _ => {
4337 map.next_value::<::serde_json::Value>()?;
4339 }
4340 }
4341 }
4342 if optional && nothing {
4343 return Ok(None);
4344 }
4345 let result = GetFileMetadataArg {
4346 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
4347 actions: field_actions.and_then(Option::flatten),
4348 };
4349 Ok(Some(result))
4350 }
4351
4352 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4353 &self,
4354 s: &mut S::SerializeStruct,
4355 ) -> Result<(), S::Error> {
4356 use serde::ser::SerializeStruct;
4357 s.serialize_field("file", &self.file)?;
4358 if let Some(val) = &self.actions {
4359 s.serialize_field("actions", val)?;
4360 }
4361 Ok(())
4362 }
4363}
4364
4365impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataArg {
4366 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4367 use serde::de::{MapAccess, Visitor};
4369 struct StructVisitor;
4370 impl<'de> Visitor<'de> for StructVisitor {
4371 type Value = GetFileMetadataArg;
4372 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4373 f.write_str("a GetFileMetadataArg struct")
4374 }
4375 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4376 GetFileMetadataArg::internal_deserialize(map)
4377 }
4378 }
4379 deserializer.deserialize_struct("GetFileMetadataArg", GET_FILE_METADATA_ARG_FIELDS, StructVisitor)
4380 }
4381}
4382
4383impl ::serde::ser::Serialize for GetFileMetadataArg {
4384 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4385 use serde::ser::SerializeStruct;
4387 let mut s = serializer.serialize_struct("GetFileMetadataArg", 2)?;
4388 self.internal_serialize::<S>(&mut s)?;
4389 s.end()
4390 }
4391}
4392
4393#[derive(Debug, Clone, PartialEq, Eq)]
4395#[non_exhaustive] pub struct GetFileMetadataBatchArg {
4397 pub files: Vec<PathOrId>,
4399 pub actions: Option<Vec<FileAction>>,
4403}
4404
4405impl GetFileMetadataBatchArg {
4406 pub fn new(files: Vec<PathOrId>) -> Self {
4407 GetFileMetadataBatchArg {
4408 files,
4409 actions: None,
4410 }
4411 }
4412
4413 pub fn with_actions(mut self, value: Vec<FileAction>) -> Self {
4414 self.actions = Some(value);
4415 self
4416 }
4417}
4418
4419const GET_FILE_METADATA_BATCH_ARG_FIELDS: &[&str] = &["files",
4420 "actions"];
4421impl GetFileMetadataBatchArg {
4422 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4423 map: V,
4424 ) -> Result<GetFileMetadataBatchArg, V::Error> {
4425 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4426 }
4427
4428 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4429 mut map: V,
4430 optional: bool,
4431 ) -> Result<Option<GetFileMetadataBatchArg>, V::Error> {
4432 let mut field_files = None;
4433 let mut field_actions = None;
4434 let mut nothing = true;
4435 while let Some(key) = map.next_key::<&str>()? {
4436 nothing = false;
4437 match key {
4438 "files" => {
4439 if field_files.is_some() {
4440 return Err(::serde::de::Error::duplicate_field("files"));
4441 }
4442 field_files = Some(map.next_value()?);
4443 }
4444 "actions" => {
4445 if field_actions.is_some() {
4446 return Err(::serde::de::Error::duplicate_field("actions"));
4447 }
4448 field_actions = Some(map.next_value()?);
4449 }
4450 _ => {
4451 map.next_value::<::serde_json::Value>()?;
4453 }
4454 }
4455 }
4456 if optional && nothing {
4457 return Ok(None);
4458 }
4459 let result = GetFileMetadataBatchArg {
4460 files: field_files.ok_or_else(|| ::serde::de::Error::missing_field("files"))?,
4461 actions: field_actions.and_then(Option::flatten),
4462 };
4463 Ok(Some(result))
4464 }
4465
4466 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4467 &self,
4468 s: &mut S::SerializeStruct,
4469 ) -> Result<(), S::Error> {
4470 use serde::ser::SerializeStruct;
4471 s.serialize_field("files", &self.files)?;
4472 if let Some(val) = &self.actions {
4473 s.serialize_field("actions", val)?;
4474 }
4475 Ok(())
4476 }
4477}
4478
4479impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataBatchArg {
4480 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4481 use serde::de::{MapAccess, Visitor};
4483 struct StructVisitor;
4484 impl<'de> Visitor<'de> for StructVisitor {
4485 type Value = GetFileMetadataBatchArg;
4486 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4487 f.write_str("a GetFileMetadataBatchArg struct")
4488 }
4489 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4490 GetFileMetadataBatchArg::internal_deserialize(map)
4491 }
4492 }
4493 deserializer.deserialize_struct("GetFileMetadataBatchArg", GET_FILE_METADATA_BATCH_ARG_FIELDS, StructVisitor)
4494 }
4495}
4496
4497impl ::serde::ser::Serialize for GetFileMetadataBatchArg {
4498 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4499 use serde::ser::SerializeStruct;
4501 let mut s = serializer.serialize_struct("GetFileMetadataBatchArg", 2)?;
4502 self.internal_serialize::<S>(&mut s)?;
4503 s.end()
4504 }
4505}
4506
4507#[derive(Debug, Clone, PartialEq, Eq)]
4509#[non_exhaustive] pub struct GetFileMetadataBatchResult {
4511 pub file: PathOrId,
4514 pub result: GetFileMetadataIndividualResult,
4516}
4517
4518impl GetFileMetadataBatchResult {
4519 pub fn new(file: PathOrId, result: GetFileMetadataIndividualResult) -> Self {
4520 GetFileMetadataBatchResult {
4521 file,
4522 result,
4523 }
4524 }
4525}
4526
4527const GET_FILE_METADATA_BATCH_RESULT_FIELDS: &[&str] = &["file",
4528 "result"];
4529impl GetFileMetadataBatchResult {
4530 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4531 map: V,
4532 ) -> Result<GetFileMetadataBatchResult, V::Error> {
4533 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4534 }
4535
4536 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4537 mut map: V,
4538 optional: bool,
4539 ) -> Result<Option<GetFileMetadataBatchResult>, V::Error> {
4540 let mut field_file = None;
4541 let mut field_result = None;
4542 let mut nothing = true;
4543 while let Some(key) = map.next_key::<&str>()? {
4544 nothing = false;
4545 match key {
4546 "file" => {
4547 if field_file.is_some() {
4548 return Err(::serde::de::Error::duplicate_field("file"));
4549 }
4550 field_file = Some(map.next_value()?);
4551 }
4552 "result" => {
4553 if field_result.is_some() {
4554 return Err(::serde::de::Error::duplicate_field("result"));
4555 }
4556 field_result = Some(map.next_value()?);
4557 }
4558 _ => {
4559 map.next_value::<::serde_json::Value>()?;
4561 }
4562 }
4563 }
4564 if optional && nothing {
4565 return Ok(None);
4566 }
4567 let result = GetFileMetadataBatchResult {
4568 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
4569 result: field_result.ok_or_else(|| ::serde::de::Error::missing_field("result"))?,
4570 };
4571 Ok(Some(result))
4572 }
4573
4574 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4575 &self,
4576 s: &mut S::SerializeStruct,
4577 ) -> Result<(), S::Error> {
4578 use serde::ser::SerializeStruct;
4579 s.serialize_field("file", &self.file)?;
4580 s.serialize_field("result", &self.result)?;
4581 Ok(())
4582 }
4583}
4584
4585impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataBatchResult {
4586 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4587 use serde::de::{MapAccess, Visitor};
4589 struct StructVisitor;
4590 impl<'de> Visitor<'de> for StructVisitor {
4591 type Value = GetFileMetadataBatchResult;
4592 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4593 f.write_str("a GetFileMetadataBatchResult struct")
4594 }
4595 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4596 GetFileMetadataBatchResult::internal_deserialize(map)
4597 }
4598 }
4599 deserializer.deserialize_struct("GetFileMetadataBatchResult", GET_FILE_METADATA_BATCH_RESULT_FIELDS, StructVisitor)
4600 }
4601}
4602
4603impl ::serde::ser::Serialize for GetFileMetadataBatchResult {
4604 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4605 use serde::ser::SerializeStruct;
4607 let mut s = serializer.serialize_struct("GetFileMetadataBatchResult", 2)?;
4608 self.internal_serialize::<S>(&mut s)?;
4609 s.end()
4610 }
4611}
4612
4613#[derive(Debug, Clone, PartialEq, Eq)]
4615#[non_exhaustive] pub enum GetFileMetadataError {
4617 UserError(SharingUserError),
4618 AccessError(SharingFileAccessError),
4619 Other,
4622}
4623
4624impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataError {
4625 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4626 use serde::de::{self, MapAccess, Visitor};
4628 struct EnumVisitor;
4629 impl<'de> Visitor<'de> for EnumVisitor {
4630 type Value = GetFileMetadataError;
4631 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4632 f.write_str("a GetFileMetadataError structure")
4633 }
4634 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4635 let tag: &str = match map.next_key()? {
4636 Some(".tag") => map.next_value()?,
4637 _ => return Err(de::Error::missing_field(".tag"))
4638 };
4639 let value = match tag {
4640 "user_error" => {
4641 match map.next_key()? {
4642 Some("user_error") => GetFileMetadataError::UserError(map.next_value()?),
4643 None => return Err(de::Error::missing_field("user_error")),
4644 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
4645 }
4646 }
4647 "access_error" => {
4648 match map.next_key()? {
4649 Some("access_error") => GetFileMetadataError::AccessError(map.next_value()?),
4650 None => return Err(de::Error::missing_field("access_error")),
4651 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
4652 }
4653 }
4654 _ => GetFileMetadataError::Other,
4655 };
4656 crate::eat_json_fields(&mut map)?;
4657 Ok(value)
4658 }
4659 }
4660 const VARIANTS: &[&str] = &["user_error",
4661 "access_error",
4662 "other"];
4663 deserializer.deserialize_struct("GetFileMetadataError", VARIANTS, EnumVisitor)
4664 }
4665}
4666
4667impl ::serde::ser::Serialize for GetFileMetadataError {
4668 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4669 use serde::ser::SerializeStruct;
4671 match self {
4672 GetFileMetadataError::UserError(x) => {
4673 let mut s = serializer.serialize_struct("GetFileMetadataError", 2)?;
4675 s.serialize_field(".tag", "user_error")?;
4676 s.serialize_field("user_error", x)?;
4677 s.end()
4678 }
4679 GetFileMetadataError::AccessError(x) => {
4680 let mut s = serializer.serialize_struct("GetFileMetadataError", 2)?;
4682 s.serialize_field(".tag", "access_error")?;
4683 s.serialize_field("access_error", x)?;
4684 s.end()
4685 }
4686 GetFileMetadataError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
4687 }
4688 }
4689}
4690
4691impl ::std::error::Error for GetFileMetadataError {
4692 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
4693 match self {
4694 GetFileMetadataError::UserError(inner) => Some(inner),
4695 GetFileMetadataError::AccessError(inner) => Some(inner),
4696 _ => None,
4697 }
4698 }
4699}
4700
4701impl ::std::fmt::Display for GetFileMetadataError {
4702 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4703 match self {
4704 GetFileMetadataError::UserError(inner) => write!(f, "GetFileMetadataError: {}", inner),
4705 GetFileMetadataError::AccessError(inner) => write!(f, "GetFileMetadataError: {}", inner),
4706 _ => write!(f, "{:?}", *self),
4707 }
4708 }
4709}
4710
4711#[derive(Debug, Clone, PartialEq, Eq)]
4712#[non_exhaustive] pub enum GetFileMetadataIndividualResult {
4714 Metadata(SharedFileMetadata),
4716 AccessError(SharingFileAccessError),
4718 Other,
4721}
4722
4723impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataIndividualResult {
4724 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4725 use serde::de::{self, MapAccess, Visitor};
4727 struct EnumVisitor;
4728 impl<'de> Visitor<'de> for EnumVisitor {
4729 type Value = GetFileMetadataIndividualResult;
4730 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4731 f.write_str("a GetFileMetadataIndividualResult structure")
4732 }
4733 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4734 let tag: &str = match map.next_key()? {
4735 Some(".tag") => map.next_value()?,
4736 _ => return Err(de::Error::missing_field(".tag"))
4737 };
4738 let value = match tag {
4739 "metadata" => GetFileMetadataIndividualResult::Metadata(SharedFileMetadata::internal_deserialize(&mut map)?),
4740 "access_error" => {
4741 match map.next_key()? {
4742 Some("access_error") => GetFileMetadataIndividualResult::AccessError(map.next_value()?),
4743 None => return Err(de::Error::missing_field("access_error")),
4744 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
4745 }
4746 }
4747 _ => GetFileMetadataIndividualResult::Other,
4748 };
4749 crate::eat_json_fields(&mut map)?;
4750 Ok(value)
4751 }
4752 }
4753 const VARIANTS: &[&str] = &["metadata",
4754 "access_error",
4755 "other"];
4756 deserializer.deserialize_struct("GetFileMetadataIndividualResult", VARIANTS, EnumVisitor)
4757 }
4758}
4759
4760impl ::serde::ser::Serialize for GetFileMetadataIndividualResult {
4761 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4762 use serde::ser::SerializeStruct;
4764 match self {
4765 GetFileMetadataIndividualResult::Metadata(x) => {
4766 let mut s = serializer.serialize_struct("GetFileMetadataIndividualResult", 15)?;
4768 s.serialize_field(".tag", "metadata")?;
4769 x.internal_serialize::<S>(&mut s)?;
4770 s.end()
4771 }
4772 GetFileMetadataIndividualResult::AccessError(x) => {
4773 let mut s = serializer.serialize_struct("GetFileMetadataIndividualResult", 2)?;
4775 s.serialize_field(".tag", "access_error")?;
4776 s.serialize_field("access_error", x)?;
4777 s.end()
4778 }
4779 GetFileMetadataIndividualResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
4780 }
4781 }
4782}
4783
4784#[derive(Debug, Clone, PartialEq, Eq)]
4785#[non_exhaustive] pub struct GetMetadataArgs {
4787 pub shared_folder_id: crate::types::common::SharedFolderId,
4789 pub actions: Option<Vec<FolderAction>>,
4793}
4794
4795impl GetMetadataArgs {
4796 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
4797 GetMetadataArgs {
4798 shared_folder_id,
4799 actions: None,
4800 }
4801 }
4802
4803 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
4804 self.actions = Some(value);
4805 self
4806 }
4807}
4808
4809const GET_METADATA_ARGS_FIELDS: &[&str] = &["shared_folder_id",
4810 "actions"];
4811impl GetMetadataArgs {
4812 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4813 map: V,
4814 ) -> Result<GetMetadataArgs, V::Error> {
4815 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4816 }
4817
4818 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4819 mut map: V,
4820 optional: bool,
4821 ) -> Result<Option<GetMetadataArgs>, V::Error> {
4822 let mut field_shared_folder_id = None;
4823 let mut field_actions = None;
4824 let mut nothing = true;
4825 while let Some(key) = map.next_key::<&str>()? {
4826 nothing = false;
4827 match key {
4828 "shared_folder_id" => {
4829 if field_shared_folder_id.is_some() {
4830 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
4831 }
4832 field_shared_folder_id = Some(map.next_value()?);
4833 }
4834 "actions" => {
4835 if field_actions.is_some() {
4836 return Err(::serde::de::Error::duplicate_field("actions"));
4837 }
4838 field_actions = Some(map.next_value()?);
4839 }
4840 _ => {
4841 map.next_value::<::serde_json::Value>()?;
4843 }
4844 }
4845 }
4846 if optional && nothing {
4847 return Ok(None);
4848 }
4849 let result = GetMetadataArgs {
4850 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
4851 actions: field_actions.and_then(Option::flatten),
4852 };
4853 Ok(Some(result))
4854 }
4855
4856 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4857 &self,
4858 s: &mut S::SerializeStruct,
4859 ) -> Result<(), S::Error> {
4860 use serde::ser::SerializeStruct;
4861 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
4862 if let Some(val) = &self.actions {
4863 s.serialize_field("actions", val)?;
4864 }
4865 Ok(())
4866 }
4867}
4868
4869impl<'de> ::serde::de::Deserialize<'de> for GetMetadataArgs {
4870 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4871 use serde::de::{MapAccess, Visitor};
4873 struct StructVisitor;
4874 impl<'de> Visitor<'de> for StructVisitor {
4875 type Value = GetMetadataArgs;
4876 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4877 f.write_str("a GetMetadataArgs struct")
4878 }
4879 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4880 GetMetadataArgs::internal_deserialize(map)
4881 }
4882 }
4883 deserializer.deserialize_struct("GetMetadataArgs", GET_METADATA_ARGS_FIELDS, StructVisitor)
4884 }
4885}
4886
4887impl ::serde::ser::Serialize for GetMetadataArgs {
4888 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4889 use serde::ser::SerializeStruct;
4891 let mut s = serializer.serialize_struct("GetMetadataArgs", 2)?;
4892 self.internal_serialize::<S>(&mut s)?;
4893 s.end()
4894 }
4895}
4896
4897#[derive(Debug, Clone, PartialEq, Eq)]
4898#[non_exhaustive] pub enum GetSharedLinkFileError {
4900 SharedLinkNotFound,
4902 SharedLinkAccessDenied,
4904 UnsupportedLinkType,
4906 SharedLinkIsDirectory,
4908 Other,
4911}
4912
4913impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinkFileError {
4914 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4915 use serde::de::{self, MapAccess, Visitor};
4917 struct EnumVisitor;
4918 impl<'de> Visitor<'de> for EnumVisitor {
4919 type Value = GetSharedLinkFileError;
4920 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4921 f.write_str("a GetSharedLinkFileError structure")
4922 }
4923 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4924 let tag: &str = match map.next_key()? {
4925 Some(".tag") => map.next_value()?,
4926 _ => return Err(de::Error::missing_field(".tag"))
4927 };
4928 let value = match tag {
4929 "shared_link_not_found" => GetSharedLinkFileError::SharedLinkNotFound,
4930 "shared_link_access_denied" => GetSharedLinkFileError::SharedLinkAccessDenied,
4931 "unsupported_link_type" => GetSharedLinkFileError::UnsupportedLinkType,
4932 "shared_link_is_directory" => GetSharedLinkFileError::SharedLinkIsDirectory,
4933 _ => GetSharedLinkFileError::Other,
4934 };
4935 crate::eat_json_fields(&mut map)?;
4936 Ok(value)
4937 }
4938 }
4939 const VARIANTS: &[&str] = &["shared_link_not_found",
4940 "shared_link_access_denied",
4941 "unsupported_link_type",
4942 "other",
4943 "shared_link_is_directory"];
4944 deserializer.deserialize_struct("GetSharedLinkFileError", VARIANTS, EnumVisitor)
4945 }
4946}
4947
4948impl ::serde::ser::Serialize for GetSharedLinkFileError {
4949 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4950 use serde::ser::SerializeStruct;
4952 match self {
4953 GetSharedLinkFileError::SharedLinkNotFound => {
4954 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
4956 s.serialize_field(".tag", "shared_link_not_found")?;
4957 s.end()
4958 }
4959 GetSharedLinkFileError::SharedLinkAccessDenied => {
4960 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
4962 s.serialize_field(".tag", "shared_link_access_denied")?;
4963 s.end()
4964 }
4965 GetSharedLinkFileError::UnsupportedLinkType => {
4966 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
4968 s.serialize_field(".tag", "unsupported_link_type")?;
4969 s.end()
4970 }
4971 GetSharedLinkFileError::SharedLinkIsDirectory => {
4972 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
4974 s.serialize_field(".tag", "shared_link_is_directory")?;
4975 s.end()
4976 }
4977 GetSharedLinkFileError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
4978 }
4979 }
4980}
4981
4982impl ::std::error::Error for GetSharedLinkFileError {
4983}
4984
4985impl ::std::fmt::Display for GetSharedLinkFileError {
4986 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4987 match self {
4988 GetSharedLinkFileError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
4989 GetSharedLinkFileError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
4990 GetSharedLinkFileError::SharedLinkIsDirectory => f.write_str("Directories cannot be retrieved by this endpoint."),
4991 _ => write!(f, "{:?}", *self),
4992 }
4993 }
4994}
4995
4996impl From<SharedLinkError> for GetSharedLinkFileError {
4998 fn from(parent: SharedLinkError) -> Self {
4999 match parent {
5000 SharedLinkError::SharedLinkNotFound => GetSharedLinkFileError::SharedLinkNotFound,
5001 SharedLinkError::SharedLinkAccessDenied => GetSharedLinkFileError::SharedLinkAccessDenied,
5002 SharedLinkError::UnsupportedLinkType => GetSharedLinkFileError::UnsupportedLinkType,
5003 SharedLinkError::Other => GetSharedLinkFileError::Other,
5004 }
5005 }
5006}
5007#[derive(Debug, Clone, PartialEq, Eq)]
5008#[non_exhaustive] pub struct GetSharedLinkMetadataArg {
5010 pub url: String,
5012 pub path: Option<Path>,
5015 pub link_password: Option<String>,
5017}
5018
5019impl GetSharedLinkMetadataArg {
5020 pub fn new(url: String) -> Self {
5021 GetSharedLinkMetadataArg {
5022 url,
5023 path: None,
5024 link_password: None,
5025 }
5026 }
5027
5028 pub fn with_path(mut self, value: Path) -> Self {
5029 self.path = Some(value);
5030 self
5031 }
5032
5033 pub fn with_link_password(mut self, value: String) -> Self {
5034 self.link_password = Some(value);
5035 self
5036 }
5037}
5038
5039const GET_SHARED_LINK_METADATA_ARG_FIELDS: &[&str] = &["url",
5040 "path",
5041 "link_password"];
5042impl GetSharedLinkMetadataArg {
5043 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5044 map: V,
5045 ) -> Result<GetSharedLinkMetadataArg, V::Error> {
5046 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5047 }
5048
5049 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5050 mut map: V,
5051 optional: bool,
5052 ) -> Result<Option<GetSharedLinkMetadataArg>, V::Error> {
5053 let mut field_url = None;
5054 let mut field_path = None;
5055 let mut field_link_password = None;
5056 let mut nothing = true;
5057 while let Some(key) = map.next_key::<&str>()? {
5058 nothing = false;
5059 match key {
5060 "url" => {
5061 if field_url.is_some() {
5062 return Err(::serde::de::Error::duplicate_field("url"));
5063 }
5064 field_url = Some(map.next_value()?);
5065 }
5066 "path" => {
5067 if field_path.is_some() {
5068 return Err(::serde::de::Error::duplicate_field("path"));
5069 }
5070 field_path = Some(map.next_value()?);
5071 }
5072 "link_password" => {
5073 if field_link_password.is_some() {
5074 return Err(::serde::de::Error::duplicate_field("link_password"));
5075 }
5076 field_link_password = Some(map.next_value()?);
5077 }
5078 _ => {
5079 map.next_value::<::serde_json::Value>()?;
5081 }
5082 }
5083 }
5084 if optional && nothing {
5085 return Ok(None);
5086 }
5087 let result = GetSharedLinkMetadataArg {
5088 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
5089 path: field_path.and_then(Option::flatten),
5090 link_password: field_link_password.and_then(Option::flatten),
5091 };
5092 Ok(Some(result))
5093 }
5094
5095 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5096 &self,
5097 s: &mut S::SerializeStruct,
5098 ) -> Result<(), S::Error> {
5099 use serde::ser::SerializeStruct;
5100 s.serialize_field("url", &self.url)?;
5101 if let Some(val) = &self.path {
5102 s.serialize_field("path", val)?;
5103 }
5104 if let Some(val) = &self.link_password {
5105 s.serialize_field("link_password", val)?;
5106 }
5107 Ok(())
5108 }
5109}
5110
5111impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinkMetadataArg {
5112 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5113 use serde::de::{MapAccess, Visitor};
5115 struct StructVisitor;
5116 impl<'de> Visitor<'de> for StructVisitor {
5117 type Value = GetSharedLinkMetadataArg;
5118 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5119 f.write_str("a GetSharedLinkMetadataArg struct")
5120 }
5121 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5122 GetSharedLinkMetadataArg::internal_deserialize(map)
5123 }
5124 }
5125 deserializer.deserialize_struct("GetSharedLinkMetadataArg", GET_SHARED_LINK_METADATA_ARG_FIELDS, StructVisitor)
5126 }
5127}
5128
5129impl ::serde::ser::Serialize for GetSharedLinkMetadataArg {
5130 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5131 use serde::ser::SerializeStruct;
5133 let mut s = serializer.serialize_struct("GetSharedLinkMetadataArg", 3)?;
5134 self.internal_serialize::<S>(&mut s)?;
5135 s.end()
5136 }
5137}
5138
5139#[derive(Debug, Clone, PartialEq, Eq, Default)]
5140#[non_exhaustive] pub struct GetSharedLinksArg {
5142 pub path: Option<String>,
5144}
5145
5146impl GetSharedLinksArg {
5147 pub fn with_path(mut self, value: String) -> Self {
5148 self.path = Some(value);
5149 self
5150 }
5151}
5152
5153const GET_SHARED_LINKS_ARG_FIELDS: &[&str] = &["path"];
5154impl GetSharedLinksArg {
5155 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5157 mut map: V,
5158 ) -> Result<GetSharedLinksArg, V::Error> {
5159 let mut field_path = None;
5160 while let Some(key) = map.next_key::<&str>()? {
5161 match key {
5162 "path" => {
5163 if field_path.is_some() {
5164 return Err(::serde::de::Error::duplicate_field("path"));
5165 }
5166 field_path = Some(map.next_value()?);
5167 }
5168 _ => {
5169 map.next_value::<::serde_json::Value>()?;
5171 }
5172 }
5173 }
5174 let result = GetSharedLinksArg {
5175 path: field_path.and_then(Option::flatten),
5176 };
5177 Ok(result)
5178 }
5179
5180 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5181 &self,
5182 s: &mut S::SerializeStruct,
5183 ) -> Result<(), S::Error> {
5184 use serde::ser::SerializeStruct;
5185 if let Some(val) = &self.path {
5186 s.serialize_field("path", val)?;
5187 }
5188 Ok(())
5189 }
5190}
5191
5192impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinksArg {
5193 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5194 use serde::de::{MapAccess, Visitor};
5196 struct StructVisitor;
5197 impl<'de> Visitor<'de> for StructVisitor {
5198 type Value = GetSharedLinksArg;
5199 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5200 f.write_str("a GetSharedLinksArg struct")
5201 }
5202 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5203 GetSharedLinksArg::internal_deserialize(map)
5204 }
5205 }
5206 deserializer.deserialize_struct("GetSharedLinksArg", GET_SHARED_LINKS_ARG_FIELDS, StructVisitor)
5207 }
5208}
5209
5210impl ::serde::ser::Serialize for GetSharedLinksArg {
5211 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5212 use serde::ser::SerializeStruct;
5214 let mut s = serializer.serialize_struct("GetSharedLinksArg", 1)?;
5215 self.internal_serialize::<S>(&mut s)?;
5216 s.end()
5217 }
5218}
5219
5220#[derive(Debug, Clone, PartialEq, Eq)]
5221#[non_exhaustive] pub enum GetSharedLinksError {
5223 Path(crate::types::files::MalformedPathError),
5224 Other,
5227}
5228
5229impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinksError {
5230 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5231 use serde::de::{self, MapAccess, Visitor};
5233 struct EnumVisitor;
5234 impl<'de> Visitor<'de> for EnumVisitor {
5235 type Value = GetSharedLinksError;
5236 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5237 f.write_str("a GetSharedLinksError structure")
5238 }
5239 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
5240 let tag: &str = match map.next_key()? {
5241 Some(".tag") => map.next_value()?,
5242 _ => return Err(de::Error::missing_field(".tag"))
5243 };
5244 let value = match tag {
5245 "path" => {
5246 match map.next_key()? {
5247 Some("path") => GetSharedLinksError::Path(map.next_value()?),
5248 None => GetSharedLinksError::Path(None),
5249 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
5250 }
5251 }
5252 _ => GetSharedLinksError::Other,
5253 };
5254 crate::eat_json_fields(&mut map)?;
5255 Ok(value)
5256 }
5257 }
5258 const VARIANTS: &[&str] = &["path",
5259 "other"];
5260 deserializer.deserialize_struct("GetSharedLinksError", VARIANTS, EnumVisitor)
5261 }
5262}
5263
5264impl ::serde::ser::Serialize for GetSharedLinksError {
5265 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5266 use serde::ser::SerializeStruct;
5268 match self {
5269 GetSharedLinksError::Path(x) => {
5270 let n = if x.is_some() { 2 } else { 1 };
5272 let mut s = serializer.serialize_struct("GetSharedLinksError", n)?;
5273 s.serialize_field(".tag", "path")?;
5274 if let Some(x) = x {
5275 s.serialize_field("path", &x)?;
5276 }
5277 s.end()
5278 }
5279 GetSharedLinksError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
5280 }
5281 }
5282}
5283
5284impl ::std::error::Error for GetSharedLinksError {
5285}
5286
5287impl ::std::fmt::Display for GetSharedLinksError {
5288 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5289 match self {
5290 GetSharedLinksError::Path(inner) => write!(f, "path: {:?}", inner),
5291 _ => write!(f, "{:?}", *self),
5292 }
5293 }
5294}
5295
5296#[derive(Debug, Clone, PartialEq, Eq)]
5297#[non_exhaustive] pub struct GetSharedLinksResult {
5299 pub links: Vec<LinkMetadata>,
5301}
5302
5303impl GetSharedLinksResult {
5304 pub fn new(links: Vec<LinkMetadata>) -> Self {
5305 GetSharedLinksResult {
5306 links,
5307 }
5308 }
5309}
5310
5311const GET_SHARED_LINKS_RESULT_FIELDS: &[&str] = &["links"];
5312impl GetSharedLinksResult {
5313 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5314 map: V,
5315 ) -> Result<GetSharedLinksResult, V::Error> {
5316 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5317 }
5318
5319 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5320 mut map: V,
5321 optional: bool,
5322 ) -> Result<Option<GetSharedLinksResult>, V::Error> {
5323 let mut field_links = None;
5324 let mut nothing = true;
5325 while let Some(key) = map.next_key::<&str>()? {
5326 nothing = false;
5327 match key {
5328 "links" => {
5329 if field_links.is_some() {
5330 return Err(::serde::de::Error::duplicate_field("links"));
5331 }
5332 field_links = Some(map.next_value()?);
5333 }
5334 _ => {
5335 map.next_value::<::serde_json::Value>()?;
5337 }
5338 }
5339 }
5340 if optional && nothing {
5341 return Ok(None);
5342 }
5343 let result = GetSharedLinksResult {
5344 links: field_links.ok_or_else(|| ::serde::de::Error::missing_field("links"))?,
5345 };
5346 Ok(Some(result))
5347 }
5348
5349 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5350 &self,
5351 s: &mut S::SerializeStruct,
5352 ) -> Result<(), S::Error> {
5353 use serde::ser::SerializeStruct;
5354 s.serialize_field("links", &self.links)?;
5355 Ok(())
5356 }
5357}
5358
5359impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinksResult {
5360 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5361 use serde::de::{MapAccess, Visitor};
5363 struct StructVisitor;
5364 impl<'de> Visitor<'de> for StructVisitor {
5365 type Value = GetSharedLinksResult;
5366 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5367 f.write_str("a GetSharedLinksResult struct")
5368 }
5369 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5370 GetSharedLinksResult::internal_deserialize(map)
5371 }
5372 }
5373 deserializer.deserialize_struct("GetSharedLinksResult", GET_SHARED_LINKS_RESULT_FIELDS, StructVisitor)
5374 }
5375}
5376
5377impl ::serde::ser::Serialize for GetSharedLinksResult {
5378 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5379 use serde::ser::SerializeStruct;
5381 let mut s = serializer.serialize_struct("GetSharedLinksResult", 1)?;
5382 self.internal_serialize::<S>(&mut s)?;
5383 s.end()
5384 }
5385}
5386
5387#[derive(Debug, Clone, PartialEq, Eq)]
5390#[non_exhaustive] pub struct GroupInfo {
5392 pub group_name: String,
5393 pub group_id: crate::types::team_common::GroupId,
5394 pub group_management_type: crate::types::team_common::GroupManagementType,
5396 pub group_type: crate::types::team_common::GroupType,
5398 pub is_member: bool,
5400 pub is_owner: bool,
5402 pub same_team: bool,
5404 pub group_external_id: Option<crate::types::team_common::GroupExternalId>,
5406 pub member_count: Option<u32>,
5408}
5409
5410impl GroupInfo {
5411 pub fn new(
5412 group_name: String,
5413 group_id: crate::types::team_common::GroupId,
5414 group_management_type: crate::types::team_common::GroupManagementType,
5415 group_type: crate::types::team_common::GroupType,
5416 is_member: bool,
5417 is_owner: bool,
5418 same_team: bool,
5419 ) -> Self {
5420 GroupInfo {
5421 group_name,
5422 group_id,
5423 group_management_type,
5424 group_type,
5425 is_member,
5426 is_owner,
5427 same_team,
5428 group_external_id: None,
5429 member_count: None,
5430 }
5431 }
5432
5433 pub fn with_group_external_id(
5434 mut self,
5435 value: crate::types::team_common::GroupExternalId,
5436 ) -> Self {
5437 self.group_external_id = Some(value);
5438 self
5439 }
5440
5441 pub fn with_member_count(mut self, value: u32) -> Self {
5442 self.member_count = Some(value);
5443 self
5444 }
5445}
5446
5447const GROUP_INFO_FIELDS: &[&str] = &["group_name",
5448 "group_id",
5449 "group_management_type",
5450 "group_type",
5451 "is_member",
5452 "is_owner",
5453 "same_team",
5454 "group_external_id",
5455 "member_count"];
5456impl GroupInfo {
5457 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5458 map: V,
5459 ) -> Result<GroupInfo, V::Error> {
5460 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5461 }
5462
5463 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5464 mut map: V,
5465 optional: bool,
5466 ) -> Result<Option<GroupInfo>, V::Error> {
5467 let mut field_group_name = None;
5468 let mut field_group_id = None;
5469 let mut field_group_management_type = None;
5470 let mut field_group_type = None;
5471 let mut field_is_member = None;
5472 let mut field_is_owner = None;
5473 let mut field_same_team = None;
5474 let mut field_group_external_id = None;
5475 let mut field_member_count = None;
5476 let mut nothing = true;
5477 while let Some(key) = map.next_key::<&str>()? {
5478 nothing = false;
5479 match key {
5480 "group_name" => {
5481 if field_group_name.is_some() {
5482 return Err(::serde::de::Error::duplicate_field("group_name"));
5483 }
5484 field_group_name = Some(map.next_value()?);
5485 }
5486 "group_id" => {
5487 if field_group_id.is_some() {
5488 return Err(::serde::de::Error::duplicate_field("group_id"));
5489 }
5490 field_group_id = Some(map.next_value()?);
5491 }
5492 "group_management_type" => {
5493 if field_group_management_type.is_some() {
5494 return Err(::serde::de::Error::duplicate_field("group_management_type"));
5495 }
5496 field_group_management_type = Some(map.next_value()?);
5497 }
5498 "group_type" => {
5499 if field_group_type.is_some() {
5500 return Err(::serde::de::Error::duplicate_field("group_type"));
5501 }
5502 field_group_type = Some(map.next_value()?);
5503 }
5504 "is_member" => {
5505 if field_is_member.is_some() {
5506 return Err(::serde::de::Error::duplicate_field("is_member"));
5507 }
5508 field_is_member = Some(map.next_value()?);
5509 }
5510 "is_owner" => {
5511 if field_is_owner.is_some() {
5512 return Err(::serde::de::Error::duplicate_field("is_owner"));
5513 }
5514 field_is_owner = Some(map.next_value()?);
5515 }
5516 "same_team" => {
5517 if field_same_team.is_some() {
5518 return Err(::serde::de::Error::duplicate_field("same_team"));
5519 }
5520 field_same_team = Some(map.next_value()?);
5521 }
5522 "group_external_id" => {
5523 if field_group_external_id.is_some() {
5524 return Err(::serde::de::Error::duplicate_field("group_external_id"));
5525 }
5526 field_group_external_id = Some(map.next_value()?);
5527 }
5528 "member_count" => {
5529 if field_member_count.is_some() {
5530 return Err(::serde::de::Error::duplicate_field("member_count"));
5531 }
5532 field_member_count = Some(map.next_value()?);
5533 }
5534 _ => {
5535 map.next_value::<::serde_json::Value>()?;
5537 }
5538 }
5539 }
5540 if optional && nothing {
5541 return Ok(None);
5542 }
5543 let result = GroupInfo {
5544 group_name: field_group_name.ok_or_else(|| ::serde::de::Error::missing_field("group_name"))?,
5545 group_id: field_group_id.ok_or_else(|| ::serde::de::Error::missing_field("group_id"))?,
5546 group_management_type: field_group_management_type.ok_or_else(|| ::serde::de::Error::missing_field("group_management_type"))?,
5547 group_type: field_group_type.ok_or_else(|| ::serde::de::Error::missing_field("group_type"))?,
5548 is_member: field_is_member.ok_or_else(|| ::serde::de::Error::missing_field("is_member"))?,
5549 is_owner: field_is_owner.ok_or_else(|| ::serde::de::Error::missing_field("is_owner"))?,
5550 same_team: field_same_team.ok_or_else(|| ::serde::de::Error::missing_field("same_team"))?,
5551 group_external_id: field_group_external_id.and_then(Option::flatten),
5552 member_count: field_member_count.and_then(Option::flatten),
5553 };
5554 Ok(Some(result))
5555 }
5556
5557 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5558 &self,
5559 s: &mut S::SerializeStruct,
5560 ) -> Result<(), S::Error> {
5561 use serde::ser::SerializeStruct;
5562 s.serialize_field("group_name", &self.group_name)?;
5563 s.serialize_field("group_id", &self.group_id)?;
5564 s.serialize_field("group_management_type", &self.group_management_type)?;
5565 s.serialize_field("group_type", &self.group_type)?;
5566 s.serialize_field("is_member", &self.is_member)?;
5567 s.serialize_field("is_owner", &self.is_owner)?;
5568 s.serialize_field("same_team", &self.same_team)?;
5569 if let Some(val) = &self.group_external_id {
5570 s.serialize_field("group_external_id", val)?;
5571 }
5572 if let Some(val) = &self.member_count {
5573 s.serialize_field("member_count", val)?;
5574 }
5575 Ok(())
5576 }
5577}
5578
5579impl<'de> ::serde::de::Deserialize<'de> for GroupInfo {
5580 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5581 use serde::de::{MapAccess, Visitor};
5583 struct StructVisitor;
5584 impl<'de> Visitor<'de> for StructVisitor {
5585 type Value = GroupInfo;
5586 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5587 f.write_str("a GroupInfo struct")
5588 }
5589 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5590 GroupInfo::internal_deserialize(map)
5591 }
5592 }
5593 deserializer.deserialize_struct("GroupInfo", GROUP_INFO_FIELDS, StructVisitor)
5594 }
5595}
5596
5597impl ::serde::ser::Serialize for GroupInfo {
5598 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5599 use serde::ser::SerializeStruct;
5601 let mut s = serializer.serialize_struct("GroupInfo", 9)?;
5602 self.internal_serialize::<S>(&mut s)?;
5603 s.end()
5604 }
5605}
5606
5607impl From<GroupInfo> for crate::types::team_common::GroupSummary {
5609 fn from(subtype: GroupInfo) -> Self {
5610 Self {
5611 group_name: subtype.group_name,
5612 group_id: subtype.group_id,
5613 group_management_type: subtype.group_management_type,
5614 group_external_id: subtype.group_external_id,
5615 member_count: subtype.member_count,
5616 }
5617 }
5618}
5619#[derive(Debug, Clone, PartialEq, Eq)]
5621#[non_exhaustive] pub struct GroupMembershipInfo {
5623 pub access_type: AccessLevel,
5626 pub group: GroupInfo,
5628 pub permissions: Option<Vec<MemberPermission>>,
5631 pub initials: Option<String>,
5633 pub is_inherited: bool,
5635}
5636
5637impl GroupMembershipInfo {
5638 pub fn new(access_type: AccessLevel, group: GroupInfo) -> Self {
5639 GroupMembershipInfo {
5640 access_type,
5641 group,
5642 permissions: None,
5643 initials: None,
5644 is_inherited: false,
5645 }
5646 }
5647
5648 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
5649 self.permissions = Some(value);
5650 self
5651 }
5652
5653 pub fn with_initials(mut self, value: String) -> Self {
5654 self.initials = Some(value);
5655 self
5656 }
5657
5658 pub fn with_is_inherited(mut self, value: bool) -> Self {
5659 self.is_inherited = value;
5660 self
5661 }
5662}
5663
5664const GROUP_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
5665 "group",
5666 "permissions",
5667 "initials",
5668 "is_inherited"];
5669impl GroupMembershipInfo {
5670 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5671 map: V,
5672 ) -> Result<GroupMembershipInfo, V::Error> {
5673 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5674 }
5675
5676 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5677 mut map: V,
5678 optional: bool,
5679 ) -> Result<Option<GroupMembershipInfo>, V::Error> {
5680 let mut field_access_type = None;
5681 let mut field_group = None;
5682 let mut field_permissions = None;
5683 let mut field_initials = None;
5684 let mut field_is_inherited = None;
5685 let mut nothing = true;
5686 while let Some(key) = map.next_key::<&str>()? {
5687 nothing = false;
5688 match key {
5689 "access_type" => {
5690 if field_access_type.is_some() {
5691 return Err(::serde::de::Error::duplicate_field("access_type"));
5692 }
5693 field_access_type = Some(map.next_value()?);
5694 }
5695 "group" => {
5696 if field_group.is_some() {
5697 return Err(::serde::de::Error::duplicate_field("group"));
5698 }
5699 field_group = Some(map.next_value()?);
5700 }
5701 "permissions" => {
5702 if field_permissions.is_some() {
5703 return Err(::serde::de::Error::duplicate_field("permissions"));
5704 }
5705 field_permissions = Some(map.next_value()?);
5706 }
5707 "initials" => {
5708 if field_initials.is_some() {
5709 return Err(::serde::de::Error::duplicate_field("initials"));
5710 }
5711 field_initials = Some(map.next_value()?);
5712 }
5713 "is_inherited" => {
5714 if field_is_inherited.is_some() {
5715 return Err(::serde::de::Error::duplicate_field("is_inherited"));
5716 }
5717 field_is_inherited = Some(map.next_value()?);
5718 }
5719 _ => {
5720 map.next_value::<::serde_json::Value>()?;
5722 }
5723 }
5724 }
5725 if optional && nothing {
5726 return Ok(None);
5727 }
5728 let result = GroupMembershipInfo {
5729 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
5730 group: field_group.ok_or_else(|| ::serde::de::Error::missing_field("group"))?,
5731 permissions: field_permissions.and_then(Option::flatten),
5732 initials: field_initials.and_then(Option::flatten),
5733 is_inherited: field_is_inherited.unwrap_or(false),
5734 };
5735 Ok(Some(result))
5736 }
5737
5738 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5739 &self,
5740 s: &mut S::SerializeStruct,
5741 ) -> Result<(), S::Error> {
5742 use serde::ser::SerializeStruct;
5743 s.serialize_field("access_type", &self.access_type)?;
5744 s.serialize_field("group", &self.group)?;
5745 if let Some(val) = &self.permissions {
5746 s.serialize_field("permissions", val)?;
5747 }
5748 if let Some(val) = &self.initials {
5749 s.serialize_field("initials", val)?;
5750 }
5751 if self.is_inherited {
5752 s.serialize_field("is_inherited", &self.is_inherited)?;
5753 }
5754 Ok(())
5755 }
5756}
5757
5758impl<'de> ::serde::de::Deserialize<'de> for GroupMembershipInfo {
5759 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5760 use serde::de::{MapAccess, Visitor};
5762 struct StructVisitor;
5763 impl<'de> Visitor<'de> for StructVisitor {
5764 type Value = GroupMembershipInfo;
5765 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5766 f.write_str("a GroupMembershipInfo struct")
5767 }
5768 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5769 GroupMembershipInfo::internal_deserialize(map)
5770 }
5771 }
5772 deserializer.deserialize_struct("GroupMembershipInfo", GROUP_MEMBERSHIP_INFO_FIELDS, StructVisitor)
5773 }
5774}
5775
5776impl ::serde::ser::Serialize for GroupMembershipInfo {
5777 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5778 use serde::ser::SerializeStruct;
5780 let mut s = serializer.serialize_struct("GroupMembershipInfo", 5)?;
5781 self.internal_serialize::<S>(&mut s)?;
5782 s.end()
5783 }
5784}
5785
5786impl From<GroupMembershipInfo> for MembershipInfo {
5788 fn from(subtype: GroupMembershipInfo) -> Self {
5789 Self {
5790 access_type: subtype.access_type,
5791 permissions: subtype.permissions,
5792 initials: subtype.initials,
5793 is_inherited: subtype.is_inherited,
5794 }
5795 }
5796}
5797#[derive(Debug, Clone, PartialEq, Eq)]
5798#[non_exhaustive] pub struct InsufficientPlan {
5800 pub message: String,
5802 pub upsell_url: Option<String>,
5805}
5806
5807impl InsufficientPlan {
5808 pub fn new(message: String) -> Self {
5809 InsufficientPlan {
5810 message,
5811 upsell_url: None,
5812 }
5813 }
5814
5815 pub fn with_upsell_url(mut self, value: String) -> Self {
5816 self.upsell_url = Some(value);
5817 self
5818 }
5819}
5820
5821const INSUFFICIENT_PLAN_FIELDS: &[&str] = &["message",
5822 "upsell_url"];
5823impl InsufficientPlan {
5824 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5825 map: V,
5826 ) -> Result<InsufficientPlan, V::Error> {
5827 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5828 }
5829
5830 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5831 mut map: V,
5832 optional: bool,
5833 ) -> Result<Option<InsufficientPlan>, V::Error> {
5834 let mut field_message = None;
5835 let mut field_upsell_url = None;
5836 let mut nothing = true;
5837 while let Some(key) = map.next_key::<&str>()? {
5838 nothing = false;
5839 match key {
5840 "message" => {
5841 if field_message.is_some() {
5842 return Err(::serde::de::Error::duplicate_field("message"));
5843 }
5844 field_message = Some(map.next_value()?);
5845 }
5846 "upsell_url" => {
5847 if field_upsell_url.is_some() {
5848 return Err(::serde::de::Error::duplicate_field("upsell_url"));
5849 }
5850 field_upsell_url = Some(map.next_value()?);
5851 }
5852 _ => {
5853 map.next_value::<::serde_json::Value>()?;
5855 }
5856 }
5857 }
5858 if optional && nothing {
5859 return Ok(None);
5860 }
5861 let result = InsufficientPlan {
5862 message: field_message.ok_or_else(|| ::serde::de::Error::missing_field("message"))?,
5863 upsell_url: field_upsell_url.and_then(Option::flatten),
5864 };
5865 Ok(Some(result))
5866 }
5867
5868 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5869 &self,
5870 s: &mut S::SerializeStruct,
5871 ) -> Result<(), S::Error> {
5872 use serde::ser::SerializeStruct;
5873 s.serialize_field("message", &self.message)?;
5874 if let Some(val) = &self.upsell_url {
5875 s.serialize_field("upsell_url", val)?;
5876 }
5877 Ok(())
5878 }
5879}
5880
5881impl<'de> ::serde::de::Deserialize<'de> for InsufficientPlan {
5882 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5883 use serde::de::{MapAccess, Visitor};
5885 struct StructVisitor;
5886 impl<'de> Visitor<'de> for StructVisitor {
5887 type Value = InsufficientPlan;
5888 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5889 f.write_str("a InsufficientPlan struct")
5890 }
5891 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5892 InsufficientPlan::internal_deserialize(map)
5893 }
5894 }
5895 deserializer.deserialize_struct("InsufficientPlan", INSUFFICIENT_PLAN_FIELDS, StructVisitor)
5896 }
5897}
5898
5899impl ::serde::ser::Serialize for InsufficientPlan {
5900 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5901 use serde::ser::SerializeStruct;
5903 let mut s = serializer.serialize_struct("InsufficientPlan", 2)?;
5904 self.internal_serialize::<S>(&mut s)?;
5905 s.end()
5906 }
5907}
5908
5909#[derive(Debug, Clone, PartialEq, Eq)]
5910#[non_exhaustive] pub struct InsufficientQuotaAmounts {
5912 pub space_needed: u64,
5914 pub space_shortage: u64,
5916 pub space_left: u64,
5918}
5919
5920impl InsufficientQuotaAmounts {
5921 pub fn new(space_needed: u64, space_shortage: u64, space_left: u64) -> Self {
5922 InsufficientQuotaAmounts {
5923 space_needed,
5924 space_shortage,
5925 space_left,
5926 }
5927 }
5928}
5929
5930const INSUFFICIENT_QUOTA_AMOUNTS_FIELDS: &[&str] = &["space_needed",
5931 "space_shortage",
5932 "space_left"];
5933impl InsufficientQuotaAmounts {
5934 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5935 map: V,
5936 ) -> Result<InsufficientQuotaAmounts, V::Error> {
5937 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5938 }
5939
5940 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5941 mut map: V,
5942 optional: bool,
5943 ) -> Result<Option<InsufficientQuotaAmounts>, V::Error> {
5944 let mut field_space_needed = None;
5945 let mut field_space_shortage = None;
5946 let mut field_space_left = None;
5947 let mut nothing = true;
5948 while let Some(key) = map.next_key::<&str>()? {
5949 nothing = false;
5950 match key {
5951 "space_needed" => {
5952 if field_space_needed.is_some() {
5953 return Err(::serde::de::Error::duplicate_field("space_needed"));
5954 }
5955 field_space_needed = Some(map.next_value()?);
5956 }
5957 "space_shortage" => {
5958 if field_space_shortage.is_some() {
5959 return Err(::serde::de::Error::duplicate_field("space_shortage"));
5960 }
5961 field_space_shortage = Some(map.next_value()?);
5962 }
5963 "space_left" => {
5964 if field_space_left.is_some() {
5965 return Err(::serde::de::Error::duplicate_field("space_left"));
5966 }
5967 field_space_left = Some(map.next_value()?);
5968 }
5969 _ => {
5970 map.next_value::<::serde_json::Value>()?;
5972 }
5973 }
5974 }
5975 if optional && nothing {
5976 return Ok(None);
5977 }
5978 let result = InsufficientQuotaAmounts {
5979 space_needed: field_space_needed.ok_or_else(|| ::serde::de::Error::missing_field("space_needed"))?,
5980 space_shortage: field_space_shortage.ok_or_else(|| ::serde::de::Error::missing_field("space_shortage"))?,
5981 space_left: field_space_left.ok_or_else(|| ::serde::de::Error::missing_field("space_left"))?,
5982 };
5983 Ok(Some(result))
5984 }
5985
5986 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5987 &self,
5988 s: &mut S::SerializeStruct,
5989 ) -> Result<(), S::Error> {
5990 use serde::ser::SerializeStruct;
5991 s.serialize_field("space_needed", &self.space_needed)?;
5992 s.serialize_field("space_shortage", &self.space_shortage)?;
5993 s.serialize_field("space_left", &self.space_left)?;
5994 Ok(())
5995 }
5996}
5997
5998impl<'de> ::serde::de::Deserialize<'de> for InsufficientQuotaAmounts {
5999 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6000 use serde::de::{MapAccess, Visitor};
6002 struct StructVisitor;
6003 impl<'de> Visitor<'de> for StructVisitor {
6004 type Value = InsufficientQuotaAmounts;
6005 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6006 f.write_str("a InsufficientQuotaAmounts struct")
6007 }
6008 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
6009 InsufficientQuotaAmounts::internal_deserialize(map)
6010 }
6011 }
6012 deserializer.deserialize_struct("InsufficientQuotaAmounts", INSUFFICIENT_QUOTA_AMOUNTS_FIELDS, StructVisitor)
6013 }
6014}
6015
6016impl ::serde::ser::Serialize for InsufficientQuotaAmounts {
6017 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6018 use serde::ser::SerializeStruct;
6020 let mut s = serializer.serialize_struct("InsufficientQuotaAmounts", 3)?;
6021 self.internal_serialize::<S>(&mut s)?;
6022 s.end()
6023 }
6024}
6025
6026#[derive(Debug, Clone, PartialEq, Eq)]
6028#[non_exhaustive] pub enum InviteeInfo {
6030 Email(crate::types::common::EmailAddress),
6032 Other,
6035}
6036
6037impl<'de> ::serde::de::Deserialize<'de> for InviteeInfo {
6038 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6039 use serde::de::{self, MapAccess, Visitor};
6041 struct EnumVisitor;
6042 impl<'de> Visitor<'de> for EnumVisitor {
6043 type Value = InviteeInfo;
6044 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6045 f.write_str("a InviteeInfo structure")
6046 }
6047 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6048 let tag: &str = match map.next_key()? {
6049 Some(".tag") => map.next_value()?,
6050 _ => return Err(de::Error::missing_field(".tag"))
6051 };
6052 let value = match tag {
6053 "email" => {
6054 match map.next_key()? {
6055 Some("email") => InviteeInfo::Email(map.next_value()?),
6056 None => return Err(de::Error::missing_field("email")),
6057 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6058 }
6059 }
6060 _ => InviteeInfo::Other,
6061 };
6062 crate::eat_json_fields(&mut map)?;
6063 Ok(value)
6064 }
6065 }
6066 const VARIANTS: &[&str] = &["email",
6067 "other"];
6068 deserializer.deserialize_struct("InviteeInfo", VARIANTS, EnumVisitor)
6069 }
6070}
6071
6072impl ::serde::ser::Serialize for InviteeInfo {
6073 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6074 use serde::ser::SerializeStruct;
6076 match self {
6077 InviteeInfo::Email(x) => {
6078 let mut s = serializer.serialize_struct("InviteeInfo", 2)?;
6080 s.serialize_field(".tag", "email")?;
6081 s.serialize_field("email", x)?;
6082 s.end()
6083 }
6084 InviteeInfo::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6085 }
6086 }
6087}
6088
6089#[derive(Debug, Clone, PartialEq, Eq)]
6091#[non_exhaustive] pub struct InviteeMembershipInfo {
6093 pub access_type: AccessLevel,
6096 pub invitee: InviteeInfo,
6098 pub permissions: Option<Vec<MemberPermission>>,
6101 pub initials: Option<String>,
6103 pub is_inherited: bool,
6105 pub user: Option<UserInfo>,
6107}
6108
6109impl InviteeMembershipInfo {
6110 pub fn new(access_type: AccessLevel, invitee: InviteeInfo) -> Self {
6111 InviteeMembershipInfo {
6112 access_type,
6113 invitee,
6114 permissions: None,
6115 initials: None,
6116 is_inherited: false,
6117 user: None,
6118 }
6119 }
6120
6121 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
6122 self.permissions = Some(value);
6123 self
6124 }
6125
6126 pub fn with_initials(mut self, value: String) -> Self {
6127 self.initials = Some(value);
6128 self
6129 }
6130
6131 pub fn with_is_inherited(mut self, value: bool) -> Self {
6132 self.is_inherited = value;
6133 self
6134 }
6135
6136 pub fn with_user(mut self, value: UserInfo) -> Self {
6137 self.user = Some(value);
6138 self
6139 }
6140}
6141
6142const INVITEE_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
6143 "invitee",
6144 "permissions",
6145 "initials",
6146 "is_inherited",
6147 "user"];
6148impl InviteeMembershipInfo {
6149 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
6150 map: V,
6151 ) -> Result<InviteeMembershipInfo, V::Error> {
6152 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
6153 }
6154
6155 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
6156 mut map: V,
6157 optional: bool,
6158 ) -> Result<Option<InviteeMembershipInfo>, V::Error> {
6159 let mut field_access_type = None;
6160 let mut field_invitee = None;
6161 let mut field_permissions = None;
6162 let mut field_initials = None;
6163 let mut field_is_inherited = None;
6164 let mut field_user = None;
6165 let mut nothing = true;
6166 while let Some(key) = map.next_key::<&str>()? {
6167 nothing = false;
6168 match key {
6169 "access_type" => {
6170 if field_access_type.is_some() {
6171 return Err(::serde::de::Error::duplicate_field("access_type"));
6172 }
6173 field_access_type = Some(map.next_value()?);
6174 }
6175 "invitee" => {
6176 if field_invitee.is_some() {
6177 return Err(::serde::de::Error::duplicate_field("invitee"));
6178 }
6179 field_invitee = Some(map.next_value()?);
6180 }
6181 "permissions" => {
6182 if field_permissions.is_some() {
6183 return Err(::serde::de::Error::duplicate_field("permissions"));
6184 }
6185 field_permissions = Some(map.next_value()?);
6186 }
6187 "initials" => {
6188 if field_initials.is_some() {
6189 return Err(::serde::de::Error::duplicate_field("initials"));
6190 }
6191 field_initials = Some(map.next_value()?);
6192 }
6193 "is_inherited" => {
6194 if field_is_inherited.is_some() {
6195 return Err(::serde::de::Error::duplicate_field("is_inherited"));
6196 }
6197 field_is_inherited = Some(map.next_value()?);
6198 }
6199 "user" => {
6200 if field_user.is_some() {
6201 return Err(::serde::de::Error::duplicate_field("user"));
6202 }
6203 field_user = Some(map.next_value()?);
6204 }
6205 _ => {
6206 map.next_value::<::serde_json::Value>()?;
6208 }
6209 }
6210 }
6211 if optional && nothing {
6212 return Ok(None);
6213 }
6214 let result = InviteeMembershipInfo {
6215 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
6216 invitee: field_invitee.ok_or_else(|| ::serde::de::Error::missing_field("invitee"))?,
6217 permissions: field_permissions.and_then(Option::flatten),
6218 initials: field_initials.and_then(Option::flatten),
6219 is_inherited: field_is_inherited.unwrap_or(false),
6220 user: field_user.and_then(Option::flatten),
6221 };
6222 Ok(Some(result))
6223 }
6224
6225 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
6226 &self,
6227 s: &mut S::SerializeStruct,
6228 ) -> Result<(), S::Error> {
6229 use serde::ser::SerializeStruct;
6230 s.serialize_field("access_type", &self.access_type)?;
6231 s.serialize_field("invitee", &self.invitee)?;
6232 if let Some(val) = &self.permissions {
6233 s.serialize_field("permissions", val)?;
6234 }
6235 if let Some(val) = &self.initials {
6236 s.serialize_field("initials", val)?;
6237 }
6238 if self.is_inherited {
6239 s.serialize_field("is_inherited", &self.is_inherited)?;
6240 }
6241 if let Some(val) = &self.user {
6242 s.serialize_field("user", val)?;
6243 }
6244 Ok(())
6245 }
6246}
6247
6248impl<'de> ::serde::de::Deserialize<'de> for InviteeMembershipInfo {
6249 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6250 use serde::de::{MapAccess, Visitor};
6252 struct StructVisitor;
6253 impl<'de> Visitor<'de> for StructVisitor {
6254 type Value = InviteeMembershipInfo;
6255 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6256 f.write_str("a InviteeMembershipInfo struct")
6257 }
6258 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
6259 InviteeMembershipInfo::internal_deserialize(map)
6260 }
6261 }
6262 deserializer.deserialize_struct("InviteeMembershipInfo", INVITEE_MEMBERSHIP_INFO_FIELDS, StructVisitor)
6263 }
6264}
6265
6266impl ::serde::ser::Serialize for InviteeMembershipInfo {
6267 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6268 use serde::ser::SerializeStruct;
6270 let mut s = serializer.serialize_struct("InviteeMembershipInfo", 6)?;
6271 self.internal_serialize::<S>(&mut s)?;
6272 s.end()
6273 }
6274}
6275
6276impl From<InviteeMembershipInfo> for MembershipInfo {
6278 fn from(subtype: InviteeMembershipInfo) -> Self {
6279 Self {
6280 access_type: subtype.access_type,
6281 permissions: subtype.permissions,
6282 initials: subtype.initials,
6283 is_inherited: subtype.is_inherited,
6284 }
6285 }
6286}
6287#[derive(Debug, Clone, PartialEq, Eq)]
6291#[non_exhaustive] pub enum JobError {
6293 UnshareFolderError(UnshareFolderError),
6295 RemoveFolderMemberError(RemoveFolderMemberError),
6298 RelinquishFolderMembershipError(RelinquishFolderMembershipError),
6301 Other,
6304}
6305
6306impl<'de> ::serde::de::Deserialize<'de> for JobError {
6307 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6308 use serde::de::{self, MapAccess, Visitor};
6310 struct EnumVisitor;
6311 impl<'de> Visitor<'de> for EnumVisitor {
6312 type Value = JobError;
6313 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6314 f.write_str("a JobError structure")
6315 }
6316 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6317 let tag: &str = match map.next_key()? {
6318 Some(".tag") => map.next_value()?,
6319 _ => return Err(de::Error::missing_field(".tag"))
6320 };
6321 let value = match tag {
6322 "unshare_folder_error" => {
6323 match map.next_key()? {
6324 Some("unshare_folder_error") => JobError::UnshareFolderError(map.next_value()?),
6325 None => return Err(de::Error::missing_field("unshare_folder_error")),
6326 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6327 }
6328 }
6329 "remove_folder_member_error" => {
6330 match map.next_key()? {
6331 Some("remove_folder_member_error") => JobError::RemoveFolderMemberError(map.next_value()?),
6332 None => return Err(de::Error::missing_field("remove_folder_member_error")),
6333 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6334 }
6335 }
6336 "relinquish_folder_membership_error" => {
6337 match map.next_key()? {
6338 Some("relinquish_folder_membership_error") => JobError::RelinquishFolderMembershipError(map.next_value()?),
6339 None => return Err(de::Error::missing_field("relinquish_folder_membership_error")),
6340 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6341 }
6342 }
6343 _ => JobError::Other,
6344 };
6345 crate::eat_json_fields(&mut map)?;
6346 Ok(value)
6347 }
6348 }
6349 const VARIANTS: &[&str] = &["unshare_folder_error",
6350 "remove_folder_member_error",
6351 "relinquish_folder_membership_error",
6352 "other"];
6353 deserializer.deserialize_struct("JobError", VARIANTS, EnumVisitor)
6354 }
6355}
6356
6357impl ::serde::ser::Serialize for JobError {
6358 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6359 use serde::ser::SerializeStruct;
6361 match self {
6362 JobError::UnshareFolderError(x) => {
6363 let mut s = serializer.serialize_struct("JobError", 2)?;
6365 s.serialize_field(".tag", "unshare_folder_error")?;
6366 s.serialize_field("unshare_folder_error", x)?;
6367 s.end()
6368 }
6369 JobError::RemoveFolderMemberError(x) => {
6370 let mut s = serializer.serialize_struct("JobError", 2)?;
6372 s.serialize_field(".tag", "remove_folder_member_error")?;
6373 s.serialize_field("remove_folder_member_error", x)?;
6374 s.end()
6375 }
6376 JobError::RelinquishFolderMembershipError(x) => {
6377 let mut s = serializer.serialize_struct("JobError", 2)?;
6379 s.serialize_field(".tag", "relinquish_folder_membership_error")?;
6380 s.serialize_field("relinquish_folder_membership_error", x)?;
6381 s.end()
6382 }
6383 JobError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6384 }
6385 }
6386}
6387
6388impl ::std::error::Error for JobError {
6389 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
6390 match self {
6391 JobError::UnshareFolderError(inner) => Some(inner),
6392 JobError::RemoveFolderMemberError(inner) => Some(inner),
6393 JobError::RelinquishFolderMembershipError(inner) => Some(inner),
6394 _ => None,
6395 }
6396 }
6397}
6398
6399impl ::std::fmt::Display for JobError {
6400 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6401 match self {
6402 JobError::UnshareFolderError(inner) => write!(f, "JobError: {}", inner),
6403 JobError::RemoveFolderMemberError(inner) => write!(f, "JobError: {}", inner),
6404 JobError::RelinquishFolderMembershipError(inner) => write!(f, "JobError: {}", inner),
6405 _ => write!(f, "{:?}", *self),
6406 }
6407 }
6408}
6409
6410#[derive(Debug, Clone, PartialEq, Eq)]
6411pub enum JobStatus {
6412 InProgress,
6414 Complete,
6416 Failed(JobError),
6418}
6419
6420impl<'de> ::serde::de::Deserialize<'de> for JobStatus {
6421 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6422 use serde::de::{self, MapAccess, Visitor};
6424 struct EnumVisitor;
6425 impl<'de> Visitor<'de> for EnumVisitor {
6426 type Value = JobStatus;
6427 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6428 f.write_str("a JobStatus structure")
6429 }
6430 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6431 let tag: &str = match map.next_key()? {
6432 Some(".tag") => map.next_value()?,
6433 _ => return Err(de::Error::missing_field(".tag"))
6434 };
6435 let value = match tag {
6436 "in_progress" => JobStatus::InProgress,
6437 "complete" => JobStatus::Complete,
6438 "failed" => {
6439 match map.next_key()? {
6440 Some("failed") => JobStatus::Failed(map.next_value()?),
6441 None => return Err(de::Error::missing_field("failed")),
6442 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6443 }
6444 }
6445 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
6446 };
6447 crate::eat_json_fields(&mut map)?;
6448 Ok(value)
6449 }
6450 }
6451 const VARIANTS: &[&str] = &["in_progress",
6452 "complete",
6453 "failed"];
6454 deserializer.deserialize_struct("JobStatus", VARIANTS, EnumVisitor)
6455 }
6456}
6457
6458impl ::serde::ser::Serialize for JobStatus {
6459 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6460 use serde::ser::SerializeStruct;
6462 match self {
6463 JobStatus::InProgress => {
6464 let mut s = serializer.serialize_struct("JobStatus", 1)?;
6466 s.serialize_field(".tag", "in_progress")?;
6467 s.end()
6468 }
6469 JobStatus::Complete => {
6470 let mut s = serializer.serialize_struct("JobStatus", 1)?;
6472 s.serialize_field(".tag", "complete")?;
6473 s.end()
6474 }
6475 JobStatus::Failed(x) => {
6476 let mut s = serializer.serialize_struct("JobStatus", 2)?;
6478 s.serialize_field(".tag", "failed")?;
6479 s.serialize_field("failed", x)?;
6480 s.end()
6481 }
6482 }
6483 }
6484}
6485
6486impl From<crate::types::dbx_async::PollResultBase> for JobStatus {
6488 fn from(parent: crate::types::dbx_async::PollResultBase) -> Self {
6489 match parent {
6490 crate::types::dbx_async::PollResultBase::InProgress => JobStatus::InProgress,
6491 }
6492 }
6493}
6494#[derive(Debug, Clone, PartialEq, Eq)]
6495#[non_exhaustive] pub enum LinkAccessLevel {
6497 Viewer,
6499 Editor,
6501 Other,
6504}
6505
6506impl<'de> ::serde::de::Deserialize<'de> for LinkAccessLevel {
6507 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6508 use serde::de::{self, MapAccess, Visitor};
6510 struct EnumVisitor;
6511 impl<'de> Visitor<'de> for EnumVisitor {
6512 type Value = LinkAccessLevel;
6513 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6514 f.write_str("a LinkAccessLevel structure")
6515 }
6516 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6517 let tag: &str = match map.next_key()? {
6518 Some(".tag") => map.next_value()?,
6519 _ => return Err(de::Error::missing_field(".tag"))
6520 };
6521 let value = match tag {
6522 "viewer" => LinkAccessLevel::Viewer,
6523 "editor" => LinkAccessLevel::Editor,
6524 _ => LinkAccessLevel::Other,
6525 };
6526 crate::eat_json_fields(&mut map)?;
6527 Ok(value)
6528 }
6529 }
6530 const VARIANTS: &[&str] = &["viewer",
6531 "editor",
6532 "other"];
6533 deserializer.deserialize_struct("LinkAccessLevel", VARIANTS, EnumVisitor)
6534 }
6535}
6536
6537impl ::serde::ser::Serialize for LinkAccessLevel {
6538 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6539 use serde::ser::SerializeStruct;
6541 match self {
6542 LinkAccessLevel::Viewer => {
6543 let mut s = serializer.serialize_struct("LinkAccessLevel", 1)?;
6545 s.serialize_field(".tag", "viewer")?;
6546 s.end()
6547 }
6548 LinkAccessLevel::Editor => {
6549 let mut s = serializer.serialize_struct("LinkAccessLevel", 1)?;
6551 s.serialize_field(".tag", "editor")?;
6552 s.end()
6553 }
6554 LinkAccessLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6555 }
6556 }
6557}
6558
6559#[derive(Debug, Clone, PartialEq, Eq)]
6561#[non_exhaustive] pub enum LinkAction {
6563 ChangeAccessLevel,
6565 ChangeAudience,
6567 RemoveExpiry,
6569 RemovePassword,
6571 SetExpiry,
6573 SetPassword,
6575 Other,
6578}
6579
6580impl<'de> ::serde::de::Deserialize<'de> for LinkAction {
6581 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6582 use serde::de::{self, MapAccess, Visitor};
6584 struct EnumVisitor;
6585 impl<'de> Visitor<'de> for EnumVisitor {
6586 type Value = LinkAction;
6587 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6588 f.write_str("a LinkAction structure")
6589 }
6590 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6591 let tag: &str = match map.next_key()? {
6592 Some(".tag") => map.next_value()?,
6593 _ => return Err(de::Error::missing_field(".tag"))
6594 };
6595 let value = match tag {
6596 "change_access_level" => LinkAction::ChangeAccessLevel,
6597 "change_audience" => LinkAction::ChangeAudience,
6598 "remove_expiry" => LinkAction::RemoveExpiry,
6599 "remove_password" => LinkAction::RemovePassword,
6600 "set_expiry" => LinkAction::SetExpiry,
6601 "set_password" => LinkAction::SetPassword,
6602 _ => LinkAction::Other,
6603 };
6604 crate::eat_json_fields(&mut map)?;
6605 Ok(value)
6606 }
6607 }
6608 const VARIANTS: &[&str] = &["change_access_level",
6609 "change_audience",
6610 "remove_expiry",
6611 "remove_password",
6612 "set_expiry",
6613 "set_password",
6614 "other"];
6615 deserializer.deserialize_struct("LinkAction", VARIANTS, EnumVisitor)
6616 }
6617}
6618
6619impl ::serde::ser::Serialize for LinkAction {
6620 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6621 use serde::ser::SerializeStruct;
6623 match self {
6624 LinkAction::ChangeAccessLevel => {
6625 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6627 s.serialize_field(".tag", "change_access_level")?;
6628 s.end()
6629 }
6630 LinkAction::ChangeAudience => {
6631 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6633 s.serialize_field(".tag", "change_audience")?;
6634 s.end()
6635 }
6636 LinkAction::RemoveExpiry => {
6637 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6639 s.serialize_field(".tag", "remove_expiry")?;
6640 s.end()
6641 }
6642 LinkAction::RemovePassword => {
6643 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6645 s.serialize_field(".tag", "remove_password")?;
6646 s.end()
6647 }
6648 LinkAction::SetExpiry => {
6649 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6651 s.serialize_field(".tag", "set_expiry")?;
6652 s.end()
6653 }
6654 LinkAction::SetPassword => {
6655 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6657 s.serialize_field(".tag", "set_password")?;
6658 s.end()
6659 }
6660 LinkAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6661 }
6662 }
6663}
6664
6665#[derive(Debug, Clone, PartialEq, Eq)]
6666#[non_exhaustive] pub enum LinkAudience {
6668 Public,
6670 Team,
6672 NoOne,
6676 Password,
6679 Members,
6681 Other,
6684}
6685
6686impl<'de> ::serde::de::Deserialize<'de> for LinkAudience {
6687 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6688 use serde::de::{self, MapAccess, Visitor};
6690 struct EnumVisitor;
6691 impl<'de> Visitor<'de> for EnumVisitor {
6692 type Value = LinkAudience;
6693 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6694 f.write_str("a LinkAudience structure")
6695 }
6696 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6697 let tag: &str = match map.next_key()? {
6698 Some(".tag") => map.next_value()?,
6699 _ => return Err(de::Error::missing_field(".tag"))
6700 };
6701 let value = match tag {
6702 "public" => LinkAudience::Public,
6703 "team" => LinkAudience::Team,
6704 "no_one" => LinkAudience::NoOne,
6705 "password" => LinkAudience::Password,
6706 "members" => LinkAudience::Members,
6707 _ => LinkAudience::Other,
6708 };
6709 crate::eat_json_fields(&mut map)?;
6710 Ok(value)
6711 }
6712 }
6713 const VARIANTS: &[&str] = &["public",
6714 "team",
6715 "no_one",
6716 "password",
6717 "members",
6718 "other"];
6719 deserializer.deserialize_struct("LinkAudience", VARIANTS, EnumVisitor)
6720 }
6721}
6722
6723impl ::serde::ser::Serialize for LinkAudience {
6724 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6725 use serde::ser::SerializeStruct;
6727 match self {
6728 LinkAudience::Public => {
6729 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6731 s.serialize_field(".tag", "public")?;
6732 s.end()
6733 }
6734 LinkAudience::Team => {
6735 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6737 s.serialize_field(".tag", "team")?;
6738 s.end()
6739 }
6740 LinkAudience::NoOne => {
6741 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6743 s.serialize_field(".tag", "no_one")?;
6744 s.end()
6745 }
6746 LinkAudience::Password => {
6747 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6749 s.serialize_field(".tag", "password")?;
6750 s.end()
6751 }
6752 LinkAudience::Members => {
6753 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6755 s.serialize_field(".tag", "members")?;
6756 s.end()
6757 }
6758 LinkAudience::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6759 }
6760 }
6761}
6762
6763#[derive(Debug, Clone, PartialEq, Eq)]
6765#[non_exhaustive] pub enum LinkAudienceDisallowedReason {
6767 DeleteAndRecreate,
6769 RestrictedBySharedFolder,
6772 RestrictedByTeam,
6774 UserNotOnTeam,
6776 UserAccountType,
6778 PermissionDenied,
6780 Other,
6783}
6784
6785impl<'de> ::serde::de::Deserialize<'de> for LinkAudienceDisallowedReason {
6786 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6787 use serde::de::{self, MapAccess, Visitor};
6789 struct EnumVisitor;
6790 impl<'de> Visitor<'de> for EnumVisitor {
6791 type Value = LinkAudienceDisallowedReason;
6792 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6793 f.write_str("a LinkAudienceDisallowedReason structure")
6794 }
6795 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6796 let tag: &str = match map.next_key()? {
6797 Some(".tag") => map.next_value()?,
6798 _ => return Err(de::Error::missing_field(".tag"))
6799 };
6800 let value = match tag {
6801 "delete_and_recreate" => LinkAudienceDisallowedReason::DeleteAndRecreate,
6802 "restricted_by_shared_folder" => LinkAudienceDisallowedReason::RestrictedBySharedFolder,
6803 "restricted_by_team" => LinkAudienceDisallowedReason::RestrictedByTeam,
6804 "user_not_on_team" => LinkAudienceDisallowedReason::UserNotOnTeam,
6805 "user_account_type" => LinkAudienceDisallowedReason::UserAccountType,
6806 "permission_denied" => LinkAudienceDisallowedReason::PermissionDenied,
6807 _ => LinkAudienceDisallowedReason::Other,
6808 };
6809 crate::eat_json_fields(&mut map)?;
6810 Ok(value)
6811 }
6812 }
6813 const VARIANTS: &[&str] = &["delete_and_recreate",
6814 "restricted_by_shared_folder",
6815 "restricted_by_team",
6816 "user_not_on_team",
6817 "user_account_type",
6818 "permission_denied",
6819 "other"];
6820 deserializer.deserialize_struct("LinkAudienceDisallowedReason", VARIANTS, EnumVisitor)
6821 }
6822}
6823
6824impl ::serde::ser::Serialize for LinkAudienceDisallowedReason {
6825 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6826 use serde::ser::SerializeStruct;
6828 match self {
6829 LinkAudienceDisallowedReason::DeleteAndRecreate => {
6830 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
6832 s.serialize_field(".tag", "delete_and_recreate")?;
6833 s.end()
6834 }
6835 LinkAudienceDisallowedReason::RestrictedBySharedFolder => {
6836 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
6838 s.serialize_field(".tag", "restricted_by_shared_folder")?;
6839 s.end()
6840 }
6841 LinkAudienceDisallowedReason::RestrictedByTeam => {
6842 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
6844 s.serialize_field(".tag", "restricted_by_team")?;
6845 s.end()
6846 }
6847 LinkAudienceDisallowedReason::UserNotOnTeam => {
6848 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
6850 s.serialize_field(".tag", "user_not_on_team")?;
6851 s.end()
6852 }
6853 LinkAudienceDisallowedReason::UserAccountType => {
6854 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
6856 s.serialize_field(".tag", "user_account_type")?;
6857 s.end()
6858 }
6859 LinkAudienceDisallowedReason::PermissionDenied => {
6860 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
6862 s.serialize_field(".tag", "permission_denied")?;
6863 s.end()
6864 }
6865 LinkAudienceDisallowedReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6866 }
6867 }
6868}
6869
6870impl From<VisibilityPolicyDisallowedReason> for LinkAudienceDisallowedReason {
6872 fn from(parent: VisibilityPolicyDisallowedReason) -> Self {
6873 match parent {
6874 VisibilityPolicyDisallowedReason::DeleteAndRecreate => LinkAudienceDisallowedReason::DeleteAndRecreate,
6875 VisibilityPolicyDisallowedReason::RestrictedBySharedFolder => LinkAudienceDisallowedReason::RestrictedBySharedFolder,
6876 VisibilityPolicyDisallowedReason::RestrictedByTeam => LinkAudienceDisallowedReason::RestrictedByTeam,
6877 VisibilityPolicyDisallowedReason::UserNotOnTeam => LinkAudienceDisallowedReason::UserNotOnTeam,
6878 VisibilityPolicyDisallowedReason::UserAccountType => LinkAudienceDisallowedReason::UserAccountType,
6879 VisibilityPolicyDisallowedReason::PermissionDenied => LinkAudienceDisallowedReason::PermissionDenied,
6880 VisibilityPolicyDisallowedReason::Other => LinkAudienceDisallowedReason::Other,
6881 }
6882 }
6883}
6884#[derive(Debug, Clone, PartialEq, Eq)]
6885#[non_exhaustive] pub struct LinkAudienceOption {
6887 pub audience: LinkAudience,
6889 pub allowed: bool,
6891 pub disallowed_reason: Option<LinkAudienceDisallowedReason>,
6894}
6895
6896impl LinkAudienceOption {
6897 pub fn new(audience: LinkAudience, allowed: bool) -> Self {
6898 LinkAudienceOption {
6899 audience,
6900 allowed,
6901 disallowed_reason: None,
6902 }
6903 }
6904
6905 pub fn with_disallowed_reason(mut self, value: LinkAudienceDisallowedReason) -> Self {
6906 self.disallowed_reason = Some(value);
6907 self
6908 }
6909}
6910
6911const LINK_AUDIENCE_OPTION_FIELDS: &[&str] = &["audience",
6912 "allowed",
6913 "disallowed_reason"];
6914impl LinkAudienceOption {
6915 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
6916 map: V,
6917 ) -> Result<LinkAudienceOption, V::Error> {
6918 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
6919 }
6920
6921 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
6922 mut map: V,
6923 optional: bool,
6924 ) -> Result<Option<LinkAudienceOption>, V::Error> {
6925 let mut field_audience = None;
6926 let mut field_allowed = None;
6927 let mut field_disallowed_reason = None;
6928 let mut nothing = true;
6929 while let Some(key) = map.next_key::<&str>()? {
6930 nothing = false;
6931 match key {
6932 "audience" => {
6933 if field_audience.is_some() {
6934 return Err(::serde::de::Error::duplicate_field("audience"));
6935 }
6936 field_audience = Some(map.next_value()?);
6937 }
6938 "allowed" => {
6939 if field_allowed.is_some() {
6940 return Err(::serde::de::Error::duplicate_field("allowed"));
6941 }
6942 field_allowed = Some(map.next_value()?);
6943 }
6944 "disallowed_reason" => {
6945 if field_disallowed_reason.is_some() {
6946 return Err(::serde::de::Error::duplicate_field("disallowed_reason"));
6947 }
6948 field_disallowed_reason = Some(map.next_value()?);
6949 }
6950 _ => {
6951 map.next_value::<::serde_json::Value>()?;
6953 }
6954 }
6955 }
6956 if optional && nothing {
6957 return Ok(None);
6958 }
6959 let result = LinkAudienceOption {
6960 audience: field_audience.ok_or_else(|| ::serde::de::Error::missing_field("audience"))?,
6961 allowed: field_allowed.ok_or_else(|| ::serde::de::Error::missing_field("allowed"))?,
6962 disallowed_reason: field_disallowed_reason.and_then(Option::flatten),
6963 };
6964 Ok(Some(result))
6965 }
6966
6967 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
6968 &self,
6969 s: &mut S::SerializeStruct,
6970 ) -> Result<(), S::Error> {
6971 use serde::ser::SerializeStruct;
6972 s.serialize_field("audience", &self.audience)?;
6973 s.serialize_field("allowed", &self.allowed)?;
6974 if let Some(val) = &self.disallowed_reason {
6975 s.serialize_field("disallowed_reason", val)?;
6976 }
6977 Ok(())
6978 }
6979}
6980
6981impl<'de> ::serde::de::Deserialize<'de> for LinkAudienceOption {
6982 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6983 use serde::de::{MapAccess, Visitor};
6985 struct StructVisitor;
6986 impl<'de> Visitor<'de> for StructVisitor {
6987 type Value = LinkAudienceOption;
6988 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6989 f.write_str("a LinkAudienceOption struct")
6990 }
6991 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
6992 LinkAudienceOption::internal_deserialize(map)
6993 }
6994 }
6995 deserializer.deserialize_struct("LinkAudienceOption", LINK_AUDIENCE_OPTION_FIELDS, StructVisitor)
6996 }
6997}
6998
6999impl ::serde::ser::Serialize for LinkAudienceOption {
7000 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7001 use serde::ser::SerializeStruct;
7003 let mut s = serializer.serialize_struct("LinkAudienceOption", 3)?;
7004 self.internal_serialize::<S>(&mut s)?;
7005 s.end()
7006 }
7007}
7008
7009#[derive(Debug, Clone, PartialEq, Eq)]
7010#[non_exhaustive] pub enum LinkExpiry {
7012 RemoveExpiry,
7014 SetExpiry(crate::types::common::DropboxTimestamp),
7016 Other,
7019}
7020
7021impl<'de> ::serde::de::Deserialize<'de> for LinkExpiry {
7022 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7023 use serde::de::{self, MapAccess, Visitor};
7025 struct EnumVisitor;
7026 impl<'de> Visitor<'de> for EnumVisitor {
7027 type Value = LinkExpiry;
7028 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7029 f.write_str("a LinkExpiry structure")
7030 }
7031 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
7032 let tag: &str = match map.next_key()? {
7033 Some(".tag") => map.next_value()?,
7034 _ => return Err(de::Error::missing_field(".tag"))
7035 };
7036 let value = match tag {
7037 "remove_expiry" => LinkExpiry::RemoveExpiry,
7038 "set_expiry" => {
7039 match map.next_key()? {
7040 Some("set_expiry") => LinkExpiry::SetExpiry(map.next_value()?),
7041 None => return Err(de::Error::missing_field("set_expiry")),
7042 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
7043 }
7044 }
7045 _ => LinkExpiry::Other,
7046 };
7047 crate::eat_json_fields(&mut map)?;
7048 Ok(value)
7049 }
7050 }
7051 const VARIANTS: &[&str] = &["remove_expiry",
7052 "set_expiry",
7053 "other"];
7054 deserializer.deserialize_struct("LinkExpiry", VARIANTS, EnumVisitor)
7055 }
7056}
7057
7058impl ::serde::ser::Serialize for LinkExpiry {
7059 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7060 use serde::ser::SerializeStruct;
7062 match self {
7063 LinkExpiry::RemoveExpiry => {
7064 let mut s = serializer.serialize_struct("LinkExpiry", 1)?;
7066 s.serialize_field(".tag", "remove_expiry")?;
7067 s.end()
7068 }
7069 LinkExpiry::SetExpiry(x) => {
7070 let mut s = serializer.serialize_struct("LinkExpiry", 2)?;
7072 s.serialize_field(".tag", "set_expiry")?;
7073 s.serialize_field("set_expiry", x)?;
7074 s.end()
7075 }
7076 LinkExpiry::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
7077 }
7078 }
7079}
7080
7081#[derive(Debug, Clone, PartialEq, Eq)]
7084#[non_exhaustive] pub enum LinkMetadata {
7086 Path(PathLinkMetadata),
7087 Collection(CollectionLinkMetadata),
7088 Other,
7091}
7092
7093impl<'de> ::serde::de::Deserialize<'de> for LinkMetadata {
7094 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7095 use serde::de::{self, MapAccess, Visitor};
7097 struct EnumVisitor;
7098 impl<'de> Visitor<'de> for EnumVisitor {
7099 type Value = LinkMetadata;
7100 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7101 f.write_str("a LinkMetadata structure")
7102 }
7103 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
7104 let tag = match map.next_key()? {
7105 Some(".tag") => map.next_value()?,
7106 _ => return Err(de::Error::missing_field(".tag"))
7107 };
7108 match tag {
7109 "path" => Ok(LinkMetadata::Path(PathLinkMetadata::internal_deserialize(map)?)),
7110 "collection" => Ok(LinkMetadata::Collection(CollectionLinkMetadata::internal_deserialize(map)?)),
7111 _ => {
7112 crate::eat_json_fields(&mut map)?;
7113 Ok(LinkMetadata::Other)
7114 }
7115 }
7116 }
7117 }
7118 const VARIANTS: &[&str] = &["path",
7119 "collection"];
7120 deserializer.deserialize_struct("LinkMetadata", VARIANTS, EnumVisitor)
7121 }
7122}
7123
7124impl ::serde::ser::Serialize for LinkMetadata {
7125 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7126 use serde::ser::SerializeStruct;
7128 match self {
7129 LinkMetadata::Path(x) => {
7130 let mut s = serializer.serialize_struct("LinkMetadata", 5)?;
7131 s.serialize_field(".tag", "path")?;
7132 x.internal_serialize::<S>(&mut s)?;
7133 s.end()
7134 }
7135 LinkMetadata::Collection(x) => {
7136 let mut s = serializer.serialize_struct("LinkMetadata", 4)?;
7137 s.serialize_field(".tag", "collection")?;
7138 x.internal_serialize::<S>(&mut s)?;
7139 s.end()
7140 }
7141 LinkMetadata::Other => Err(::serde::ser::Error::custom("cannot serialize unknown variant"))
7142 }
7143 }
7144}
7145
7146#[derive(Debug, Clone, PartialEq, Eq)]
7147#[non_exhaustive] pub enum LinkPassword {
7149 RemovePassword,
7151 SetPassword(String),
7153 Other,
7156}
7157
7158impl<'de> ::serde::de::Deserialize<'de> for LinkPassword {
7159 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7160 use serde::de::{self, MapAccess, Visitor};
7162 struct EnumVisitor;
7163 impl<'de> Visitor<'de> for EnumVisitor {
7164 type Value = LinkPassword;
7165 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7166 f.write_str("a LinkPassword structure")
7167 }
7168 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
7169 let tag: &str = match map.next_key()? {
7170 Some(".tag") => map.next_value()?,
7171 _ => return Err(de::Error::missing_field(".tag"))
7172 };
7173 let value = match tag {
7174 "remove_password" => LinkPassword::RemovePassword,
7175 "set_password" => {
7176 match map.next_key()? {
7177 Some("set_password") => LinkPassword::SetPassword(map.next_value()?),
7178 None => return Err(de::Error::missing_field("set_password")),
7179 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
7180 }
7181 }
7182 _ => LinkPassword::Other,
7183 };
7184 crate::eat_json_fields(&mut map)?;
7185 Ok(value)
7186 }
7187 }
7188 const VARIANTS: &[&str] = &["remove_password",
7189 "set_password",
7190 "other"];
7191 deserializer.deserialize_struct("LinkPassword", VARIANTS, EnumVisitor)
7192 }
7193}
7194
7195impl ::serde::ser::Serialize for LinkPassword {
7196 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7197 use serde::ser::SerializeStruct;
7199 match self {
7200 LinkPassword::RemovePassword => {
7201 let mut s = serializer.serialize_struct("LinkPassword", 1)?;
7203 s.serialize_field(".tag", "remove_password")?;
7204 s.end()
7205 }
7206 LinkPassword::SetPassword(x) => {
7207 let mut s = serializer.serialize_struct("LinkPassword", 2)?;
7209 s.serialize_field(".tag", "set_password")?;
7210 s.serialize_field("set_password", x)?;
7211 s.end()
7212 }
7213 LinkPassword::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
7214 }
7215 }
7216}
7217
7218#[derive(Debug, Clone, PartialEq, Eq)]
7220#[non_exhaustive] pub struct LinkPermission {
7222 pub action: LinkAction,
7223 pub allow: bool,
7224 pub reason: Option<PermissionDeniedReason>,
7225}
7226
7227impl LinkPermission {
7228 pub fn new(action: LinkAction, allow: bool) -> Self {
7229 LinkPermission {
7230 action,
7231 allow,
7232 reason: None,
7233 }
7234 }
7235
7236 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
7237 self.reason = Some(value);
7238 self
7239 }
7240}
7241
7242const LINK_PERMISSION_FIELDS: &[&str] = &["action",
7243 "allow",
7244 "reason"];
7245impl LinkPermission {
7246 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
7247 map: V,
7248 ) -> Result<LinkPermission, V::Error> {
7249 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
7250 }
7251
7252 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
7253 mut map: V,
7254 optional: bool,
7255 ) -> Result<Option<LinkPermission>, V::Error> {
7256 let mut field_action = None;
7257 let mut field_allow = None;
7258 let mut field_reason = None;
7259 let mut nothing = true;
7260 while let Some(key) = map.next_key::<&str>()? {
7261 nothing = false;
7262 match key {
7263 "action" => {
7264 if field_action.is_some() {
7265 return Err(::serde::de::Error::duplicate_field("action"));
7266 }
7267 field_action = Some(map.next_value()?);
7268 }
7269 "allow" => {
7270 if field_allow.is_some() {
7271 return Err(::serde::de::Error::duplicate_field("allow"));
7272 }
7273 field_allow = Some(map.next_value()?);
7274 }
7275 "reason" => {
7276 if field_reason.is_some() {
7277 return Err(::serde::de::Error::duplicate_field("reason"));
7278 }
7279 field_reason = Some(map.next_value()?);
7280 }
7281 _ => {
7282 map.next_value::<::serde_json::Value>()?;
7284 }
7285 }
7286 }
7287 if optional && nothing {
7288 return Ok(None);
7289 }
7290 let result = LinkPermission {
7291 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
7292 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
7293 reason: field_reason.and_then(Option::flatten),
7294 };
7295 Ok(Some(result))
7296 }
7297
7298 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
7299 &self,
7300 s: &mut S::SerializeStruct,
7301 ) -> Result<(), S::Error> {
7302 use serde::ser::SerializeStruct;
7303 s.serialize_field("action", &self.action)?;
7304 s.serialize_field("allow", &self.allow)?;
7305 if let Some(val) = &self.reason {
7306 s.serialize_field("reason", val)?;
7307 }
7308 Ok(())
7309 }
7310}
7311
7312impl<'de> ::serde::de::Deserialize<'de> for LinkPermission {
7313 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7314 use serde::de::{MapAccess, Visitor};
7316 struct StructVisitor;
7317 impl<'de> Visitor<'de> for StructVisitor {
7318 type Value = LinkPermission;
7319 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7320 f.write_str("a LinkPermission struct")
7321 }
7322 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
7323 LinkPermission::internal_deserialize(map)
7324 }
7325 }
7326 deserializer.deserialize_struct("LinkPermission", LINK_PERMISSION_FIELDS, StructVisitor)
7327 }
7328}
7329
7330impl ::serde::ser::Serialize for LinkPermission {
7331 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7332 use serde::ser::SerializeStruct;
7334 let mut s = serializer.serialize_struct("LinkPermission", 3)?;
7335 self.internal_serialize::<S>(&mut s)?;
7336 s.end()
7337 }
7338}
7339
7340#[derive(Debug, Clone, PartialEq, Eq)]
7341#[non_exhaustive] pub struct LinkPermissions {
7343 pub can_revoke: bool,
7345 pub visibility_policies: Vec<VisibilityPolicy>,
7347 pub can_set_expiry: bool,
7350 pub can_remove_expiry: bool,
7352 pub allow_download: bool,
7354 pub can_allow_download: bool,
7357 pub can_disallow_download: bool,
7360 pub allow_comments: bool,
7363 pub team_restricts_comments: bool,
7365 pub resolved_visibility: Option<ResolvedVisibility>,
7371 pub requested_visibility: Option<RequestedVisibility>,
7376 pub revoke_failure_reason: Option<SharedLinkAccessFailureReason>,
7379 pub effective_audience: Option<LinkAudience>,
7382 pub link_access_level: Option<LinkAccessLevel>,
7389 pub audience_options: Option<Vec<LinkAudienceOption>>,
7391 pub can_set_password: Option<bool>,
7393 pub can_remove_password: Option<bool>,
7395 pub require_password: Option<bool>,
7397 pub can_use_extended_sharing_controls: Option<bool>,
7399}
7400
7401impl LinkPermissions {
7402 pub fn new(
7403 can_revoke: bool,
7404 visibility_policies: Vec<VisibilityPolicy>,
7405 can_set_expiry: bool,
7406 can_remove_expiry: bool,
7407 allow_download: bool,
7408 can_allow_download: bool,
7409 can_disallow_download: bool,
7410 allow_comments: bool,
7411 team_restricts_comments: bool,
7412 ) -> Self {
7413 LinkPermissions {
7414 can_revoke,
7415 visibility_policies,
7416 can_set_expiry,
7417 can_remove_expiry,
7418 allow_download,
7419 can_allow_download,
7420 can_disallow_download,
7421 allow_comments,
7422 team_restricts_comments,
7423 resolved_visibility: None,
7424 requested_visibility: None,
7425 revoke_failure_reason: None,
7426 effective_audience: None,
7427 link_access_level: None,
7428 audience_options: None,
7429 can_set_password: None,
7430 can_remove_password: None,
7431 require_password: None,
7432 can_use_extended_sharing_controls: None,
7433 }
7434 }
7435
7436 pub fn with_resolved_visibility(mut self, value: ResolvedVisibility) -> Self {
7437 self.resolved_visibility = Some(value);
7438 self
7439 }
7440
7441 pub fn with_requested_visibility(mut self, value: RequestedVisibility) -> Self {
7442 self.requested_visibility = Some(value);
7443 self
7444 }
7445
7446 pub fn with_revoke_failure_reason(mut self, value: SharedLinkAccessFailureReason) -> Self {
7447 self.revoke_failure_reason = Some(value);
7448 self
7449 }
7450
7451 pub fn with_effective_audience(mut self, value: LinkAudience) -> Self {
7452 self.effective_audience = Some(value);
7453 self
7454 }
7455
7456 pub fn with_link_access_level(mut self, value: LinkAccessLevel) -> Self {
7457 self.link_access_level = Some(value);
7458 self
7459 }
7460
7461 pub fn with_audience_options(mut self, value: Vec<LinkAudienceOption>) -> Self {
7462 self.audience_options = Some(value);
7463 self
7464 }
7465
7466 pub fn with_can_set_password(mut self, value: bool) -> Self {
7467 self.can_set_password = Some(value);
7468 self
7469 }
7470
7471 pub fn with_can_remove_password(mut self, value: bool) -> Self {
7472 self.can_remove_password = Some(value);
7473 self
7474 }
7475
7476 pub fn with_require_password(mut self, value: bool) -> Self {
7477 self.require_password = Some(value);
7478 self
7479 }
7480
7481 pub fn with_can_use_extended_sharing_controls(mut self, value: bool) -> Self {
7482 self.can_use_extended_sharing_controls = Some(value);
7483 self
7484 }
7485}
7486
7487const LINK_PERMISSIONS_FIELDS: &[&str] = &["can_revoke",
7488 "visibility_policies",
7489 "can_set_expiry",
7490 "can_remove_expiry",
7491 "allow_download",
7492 "can_allow_download",
7493 "can_disallow_download",
7494 "allow_comments",
7495 "team_restricts_comments",
7496 "resolved_visibility",
7497 "requested_visibility",
7498 "revoke_failure_reason",
7499 "effective_audience",
7500 "link_access_level",
7501 "audience_options",
7502 "can_set_password",
7503 "can_remove_password",
7504 "require_password",
7505 "can_use_extended_sharing_controls"];
7506impl LinkPermissions {
7507 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
7508 map: V,
7509 ) -> Result<LinkPermissions, V::Error> {
7510 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
7511 }
7512
7513 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
7514 mut map: V,
7515 optional: bool,
7516 ) -> Result<Option<LinkPermissions>, V::Error> {
7517 let mut field_can_revoke = None;
7518 let mut field_visibility_policies = None;
7519 let mut field_can_set_expiry = None;
7520 let mut field_can_remove_expiry = None;
7521 let mut field_allow_download = None;
7522 let mut field_can_allow_download = None;
7523 let mut field_can_disallow_download = None;
7524 let mut field_allow_comments = None;
7525 let mut field_team_restricts_comments = None;
7526 let mut field_resolved_visibility = None;
7527 let mut field_requested_visibility = None;
7528 let mut field_revoke_failure_reason = None;
7529 let mut field_effective_audience = None;
7530 let mut field_link_access_level = None;
7531 let mut field_audience_options = None;
7532 let mut field_can_set_password = None;
7533 let mut field_can_remove_password = None;
7534 let mut field_require_password = None;
7535 let mut field_can_use_extended_sharing_controls = None;
7536 let mut nothing = true;
7537 while let Some(key) = map.next_key::<&str>()? {
7538 nothing = false;
7539 match key {
7540 "can_revoke" => {
7541 if field_can_revoke.is_some() {
7542 return Err(::serde::de::Error::duplicate_field("can_revoke"));
7543 }
7544 field_can_revoke = Some(map.next_value()?);
7545 }
7546 "visibility_policies" => {
7547 if field_visibility_policies.is_some() {
7548 return Err(::serde::de::Error::duplicate_field("visibility_policies"));
7549 }
7550 field_visibility_policies = Some(map.next_value()?);
7551 }
7552 "can_set_expiry" => {
7553 if field_can_set_expiry.is_some() {
7554 return Err(::serde::de::Error::duplicate_field("can_set_expiry"));
7555 }
7556 field_can_set_expiry = Some(map.next_value()?);
7557 }
7558 "can_remove_expiry" => {
7559 if field_can_remove_expiry.is_some() {
7560 return Err(::serde::de::Error::duplicate_field("can_remove_expiry"));
7561 }
7562 field_can_remove_expiry = Some(map.next_value()?);
7563 }
7564 "allow_download" => {
7565 if field_allow_download.is_some() {
7566 return Err(::serde::de::Error::duplicate_field("allow_download"));
7567 }
7568 field_allow_download = Some(map.next_value()?);
7569 }
7570 "can_allow_download" => {
7571 if field_can_allow_download.is_some() {
7572 return Err(::serde::de::Error::duplicate_field("can_allow_download"));
7573 }
7574 field_can_allow_download = Some(map.next_value()?);
7575 }
7576 "can_disallow_download" => {
7577 if field_can_disallow_download.is_some() {
7578 return Err(::serde::de::Error::duplicate_field("can_disallow_download"));
7579 }
7580 field_can_disallow_download = Some(map.next_value()?);
7581 }
7582 "allow_comments" => {
7583 if field_allow_comments.is_some() {
7584 return Err(::serde::de::Error::duplicate_field("allow_comments"));
7585 }
7586 field_allow_comments = Some(map.next_value()?);
7587 }
7588 "team_restricts_comments" => {
7589 if field_team_restricts_comments.is_some() {
7590 return Err(::serde::de::Error::duplicate_field("team_restricts_comments"));
7591 }
7592 field_team_restricts_comments = Some(map.next_value()?);
7593 }
7594 "resolved_visibility" => {
7595 if field_resolved_visibility.is_some() {
7596 return Err(::serde::de::Error::duplicate_field("resolved_visibility"));
7597 }
7598 field_resolved_visibility = Some(map.next_value()?);
7599 }
7600 "requested_visibility" => {
7601 if field_requested_visibility.is_some() {
7602 return Err(::serde::de::Error::duplicate_field("requested_visibility"));
7603 }
7604 field_requested_visibility = Some(map.next_value()?);
7605 }
7606 "revoke_failure_reason" => {
7607 if field_revoke_failure_reason.is_some() {
7608 return Err(::serde::de::Error::duplicate_field("revoke_failure_reason"));
7609 }
7610 field_revoke_failure_reason = Some(map.next_value()?);
7611 }
7612 "effective_audience" => {
7613 if field_effective_audience.is_some() {
7614 return Err(::serde::de::Error::duplicate_field("effective_audience"));
7615 }
7616 field_effective_audience = Some(map.next_value()?);
7617 }
7618 "link_access_level" => {
7619 if field_link_access_level.is_some() {
7620 return Err(::serde::de::Error::duplicate_field("link_access_level"));
7621 }
7622 field_link_access_level = Some(map.next_value()?);
7623 }
7624 "audience_options" => {
7625 if field_audience_options.is_some() {
7626 return Err(::serde::de::Error::duplicate_field("audience_options"));
7627 }
7628 field_audience_options = Some(map.next_value()?);
7629 }
7630 "can_set_password" => {
7631 if field_can_set_password.is_some() {
7632 return Err(::serde::de::Error::duplicate_field("can_set_password"));
7633 }
7634 field_can_set_password = Some(map.next_value()?);
7635 }
7636 "can_remove_password" => {
7637 if field_can_remove_password.is_some() {
7638 return Err(::serde::de::Error::duplicate_field("can_remove_password"));
7639 }
7640 field_can_remove_password = Some(map.next_value()?);
7641 }
7642 "require_password" => {
7643 if field_require_password.is_some() {
7644 return Err(::serde::de::Error::duplicate_field("require_password"));
7645 }
7646 field_require_password = Some(map.next_value()?);
7647 }
7648 "can_use_extended_sharing_controls" => {
7649 if field_can_use_extended_sharing_controls.is_some() {
7650 return Err(::serde::de::Error::duplicate_field("can_use_extended_sharing_controls"));
7651 }
7652 field_can_use_extended_sharing_controls = Some(map.next_value()?);
7653 }
7654 _ => {
7655 map.next_value::<::serde_json::Value>()?;
7657 }
7658 }
7659 }
7660 if optional && nothing {
7661 return Ok(None);
7662 }
7663 let result = LinkPermissions {
7664 can_revoke: field_can_revoke.ok_or_else(|| ::serde::de::Error::missing_field("can_revoke"))?,
7665 visibility_policies: field_visibility_policies.ok_or_else(|| ::serde::de::Error::missing_field("visibility_policies"))?,
7666 can_set_expiry: field_can_set_expiry.ok_or_else(|| ::serde::de::Error::missing_field("can_set_expiry"))?,
7667 can_remove_expiry: field_can_remove_expiry.ok_or_else(|| ::serde::de::Error::missing_field("can_remove_expiry"))?,
7668 allow_download: field_allow_download.ok_or_else(|| ::serde::de::Error::missing_field("allow_download"))?,
7669 can_allow_download: field_can_allow_download.ok_or_else(|| ::serde::de::Error::missing_field("can_allow_download"))?,
7670 can_disallow_download: field_can_disallow_download.ok_or_else(|| ::serde::de::Error::missing_field("can_disallow_download"))?,
7671 allow_comments: field_allow_comments.ok_or_else(|| ::serde::de::Error::missing_field("allow_comments"))?,
7672 team_restricts_comments: field_team_restricts_comments.ok_or_else(|| ::serde::de::Error::missing_field("team_restricts_comments"))?,
7673 resolved_visibility: field_resolved_visibility.and_then(Option::flatten),
7674 requested_visibility: field_requested_visibility.and_then(Option::flatten),
7675 revoke_failure_reason: field_revoke_failure_reason.and_then(Option::flatten),
7676 effective_audience: field_effective_audience.and_then(Option::flatten),
7677 link_access_level: field_link_access_level.and_then(Option::flatten),
7678 audience_options: field_audience_options.and_then(Option::flatten),
7679 can_set_password: field_can_set_password.and_then(Option::flatten),
7680 can_remove_password: field_can_remove_password.and_then(Option::flatten),
7681 require_password: field_require_password.and_then(Option::flatten),
7682 can_use_extended_sharing_controls: field_can_use_extended_sharing_controls.and_then(Option::flatten),
7683 };
7684 Ok(Some(result))
7685 }
7686
7687 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
7688 &self,
7689 s: &mut S::SerializeStruct,
7690 ) -> Result<(), S::Error> {
7691 use serde::ser::SerializeStruct;
7692 s.serialize_field("can_revoke", &self.can_revoke)?;
7693 s.serialize_field("visibility_policies", &self.visibility_policies)?;
7694 s.serialize_field("can_set_expiry", &self.can_set_expiry)?;
7695 s.serialize_field("can_remove_expiry", &self.can_remove_expiry)?;
7696 s.serialize_field("allow_download", &self.allow_download)?;
7697 s.serialize_field("can_allow_download", &self.can_allow_download)?;
7698 s.serialize_field("can_disallow_download", &self.can_disallow_download)?;
7699 s.serialize_field("allow_comments", &self.allow_comments)?;
7700 s.serialize_field("team_restricts_comments", &self.team_restricts_comments)?;
7701 if let Some(val) = &self.resolved_visibility {
7702 s.serialize_field("resolved_visibility", val)?;
7703 }
7704 if let Some(val) = &self.requested_visibility {
7705 s.serialize_field("requested_visibility", val)?;
7706 }
7707 if let Some(val) = &self.revoke_failure_reason {
7708 s.serialize_field("revoke_failure_reason", val)?;
7709 }
7710 if let Some(val) = &self.effective_audience {
7711 s.serialize_field("effective_audience", val)?;
7712 }
7713 if let Some(val) = &self.link_access_level {
7714 s.serialize_field("link_access_level", val)?;
7715 }
7716 if let Some(val) = &self.audience_options {
7717 s.serialize_field("audience_options", val)?;
7718 }
7719 if let Some(val) = &self.can_set_password {
7720 s.serialize_field("can_set_password", val)?;
7721 }
7722 if let Some(val) = &self.can_remove_password {
7723 s.serialize_field("can_remove_password", val)?;
7724 }
7725 if let Some(val) = &self.require_password {
7726 s.serialize_field("require_password", val)?;
7727 }
7728 if let Some(val) = &self.can_use_extended_sharing_controls {
7729 s.serialize_field("can_use_extended_sharing_controls", val)?;
7730 }
7731 Ok(())
7732 }
7733}
7734
7735impl<'de> ::serde::de::Deserialize<'de> for LinkPermissions {
7736 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7737 use serde::de::{MapAccess, Visitor};
7739 struct StructVisitor;
7740 impl<'de> Visitor<'de> for StructVisitor {
7741 type Value = LinkPermissions;
7742 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7743 f.write_str("a LinkPermissions struct")
7744 }
7745 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
7746 LinkPermissions::internal_deserialize(map)
7747 }
7748 }
7749 deserializer.deserialize_struct("LinkPermissions", LINK_PERMISSIONS_FIELDS, StructVisitor)
7750 }
7751}
7752
7753impl ::serde::ser::Serialize for LinkPermissions {
7754 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7755 use serde::ser::SerializeStruct;
7757 let mut s = serializer.serialize_struct("LinkPermissions", 19)?;
7758 self.internal_serialize::<S>(&mut s)?;
7759 s.end()
7760 }
7761}
7762
7763#[derive(Debug, Clone, PartialEq, Eq, Default)]
7765#[non_exhaustive] pub struct LinkSettings {
7767 pub access_level: Option<AccessLevel>,
7770 pub audience: Option<LinkAudience>,
7772 pub expiry: Option<LinkExpiry>,
7774 pub password: Option<LinkPassword>,
7776}
7777
7778impl LinkSettings {
7779 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
7780 self.access_level = Some(value);
7781 self
7782 }
7783
7784 pub fn with_audience(mut self, value: LinkAudience) -> Self {
7785 self.audience = Some(value);
7786 self
7787 }
7788
7789 pub fn with_expiry(mut self, value: LinkExpiry) -> Self {
7790 self.expiry = Some(value);
7791 self
7792 }
7793
7794 pub fn with_password(mut self, value: LinkPassword) -> Self {
7795 self.password = Some(value);
7796 self
7797 }
7798}
7799
7800const LINK_SETTINGS_FIELDS: &[&str] = &["access_level",
7801 "audience",
7802 "expiry",
7803 "password"];
7804impl LinkSettings {
7805 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
7807 mut map: V,
7808 ) -> Result<LinkSettings, V::Error> {
7809 let mut field_access_level = None;
7810 let mut field_audience = None;
7811 let mut field_expiry = None;
7812 let mut field_password = None;
7813 while let Some(key) = map.next_key::<&str>()? {
7814 match key {
7815 "access_level" => {
7816 if field_access_level.is_some() {
7817 return Err(::serde::de::Error::duplicate_field("access_level"));
7818 }
7819 field_access_level = Some(map.next_value()?);
7820 }
7821 "audience" => {
7822 if field_audience.is_some() {
7823 return Err(::serde::de::Error::duplicate_field("audience"));
7824 }
7825 field_audience = Some(map.next_value()?);
7826 }
7827 "expiry" => {
7828 if field_expiry.is_some() {
7829 return Err(::serde::de::Error::duplicate_field("expiry"));
7830 }
7831 field_expiry = Some(map.next_value()?);
7832 }
7833 "password" => {
7834 if field_password.is_some() {
7835 return Err(::serde::de::Error::duplicate_field("password"));
7836 }
7837 field_password = Some(map.next_value()?);
7838 }
7839 _ => {
7840 map.next_value::<::serde_json::Value>()?;
7842 }
7843 }
7844 }
7845 let result = LinkSettings {
7846 access_level: field_access_level.and_then(Option::flatten),
7847 audience: field_audience.and_then(Option::flatten),
7848 expiry: field_expiry.and_then(Option::flatten),
7849 password: field_password.and_then(Option::flatten),
7850 };
7851 Ok(result)
7852 }
7853
7854 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
7855 &self,
7856 s: &mut S::SerializeStruct,
7857 ) -> Result<(), S::Error> {
7858 use serde::ser::SerializeStruct;
7859 if let Some(val) = &self.access_level {
7860 s.serialize_field("access_level", val)?;
7861 }
7862 if let Some(val) = &self.audience {
7863 s.serialize_field("audience", val)?;
7864 }
7865 if let Some(val) = &self.expiry {
7866 s.serialize_field("expiry", val)?;
7867 }
7868 if let Some(val) = &self.password {
7869 s.serialize_field("password", val)?;
7870 }
7871 Ok(())
7872 }
7873}
7874
7875impl<'de> ::serde::de::Deserialize<'de> for LinkSettings {
7876 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7877 use serde::de::{MapAccess, Visitor};
7879 struct StructVisitor;
7880 impl<'de> Visitor<'de> for StructVisitor {
7881 type Value = LinkSettings;
7882 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7883 f.write_str("a LinkSettings struct")
7884 }
7885 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
7886 LinkSettings::internal_deserialize(map)
7887 }
7888 }
7889 deserializer.deserialize_struct("LinkSettings", LINK_SETTINGS_FIELDS, StructVisitor)
7890 }
7891}
7892
7893impl ::serde::ser::Serialize for LinkSettings {
7894 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7895 use serde::ser::SerializeStruct;
7897 let mut s = serializer.serialize_struct("LinkSettings", 4)?;
7898 self.internal_serialize::<S>(&mut s)?;
7899 s.end()
7900 }
7901}
7902
7903#[derive(Debug, Clone, PartialEq, Eq)]
7905#[non_exhaustive] pub struct ListFileMembersArg {
7907 pub file: PathOrId,
7909 pub actions: Option<Vec<MemberAction>>,
7911 pub include_inherited: bool,
7913 pub limit: u32,
7915}
7916
7917impl ListFileMembersArg {
7918 pub fn new(file: PathOrId) -> Self {
7919 ListFileMembersArg {
7920 file,
7921 actions: None,
7922 include_inherited: true,
7923 limit: 100,
7924 }
7925 }
7926
7927 pub fn with_actions(mut self, value: Vec<MemberAction>) -> Self {
7928 self.actions = Some(value);
7929 self
7930 }
7931
7932 pub fn with_include_inherited(mut self, value: bool) -> Self {
7933 self.include_inherited = value;
7934 self
7935 }
7936
7937 pub fn with_limit(mut self, value: u32) -> Self {
7938 self.limit = value;
7939 self
7940 }
7941}
7942
7943const LIST_FILE_MEMBERS_ARG_FIELDS: &[&str] = &["file",
7944 "actions",
7945 "include_inherited",
7946 "limit"];
7947impl ListFileMembersArg {
7948 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
7949 map: V,
7950 ) -> Result<ListFileMembersArg, V::Error> {
7951 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
7952 }
7953
7954 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
7955 mut map: V,
7956 optional: bool,
7957 ) -> Result<Option<ListFileMembersArg>, V::Error> {
7958 let mut field_file = None;
7959 let mut field_actions = None;
7960 let mut field_include_inherited = None;
7961 let mut field_limit = None;
7962 let mut nothing = true;
7963 while let Some(key) = map.next_key::<&str>()? {
7964 nothing = false;
7965 match key {
7966 "file" => {
7967 if field_file.is_some() {
7968 return Err(::serde::de::Error::duplicate_field("file"));
7969 }
7970 field_file = Some(map.next_value()?);
7971 }
7972 "actions" => {
7973 if field_actions.is_some() {
7974 return Err(::serde::de::Error::duplicate_field("actions"));
7975 }
7976 field_actions = Some(map.next_value()?);
7977 }
7978 "include_inherited" => {
7979 if field_include_inherited.is_some() {
7980 return Err(::serde::de::Error::duplicate_field("include_inherited"));
7981 }
7982 field_include_inherited = Some(map.next_value()?);
7983 }
7984 "limit" => {
7985 if field_limit.is_some() {
7986 return Err(::serde::de::Error::duplicate_field("limit"));
7987 }
7988 field_limit = Some(map.next_value()?);
7989 }
7990 _ => {
7991 map.next_value::<::serde_json::Value>()?;
7993 }
7994 }
7995 }
7996 if optional && nothing {
7997 return Ok(None);
7998 }
7999 let result = ListFileMembersArg {
8000 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
8001 actions: field_actions.and_then(Option::flatten),
8002 include_inherited: field_include_inherited.unwrap_or(true),
8003 limit: field_limit.unwrap_or(100),
8004 };
8005 Ok(Some(result))
8006 }
8007
8008 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8009 &self,
8010 s: &mut S::SerializeStruct,
8011 ) -> Result<(), S::Error> {
8012 use serde::ser::SerializeStruct;
8013 s.serialize_field("file", &self.file)?;
8014 if let Some(val) = &self.actions {
8015 s.serialize_field("actions", val)?;
8016 }
8017 if !self.include_inherited {
8018 s.serialize_field("include_inherited", &self.include_inherited)?;
8019 }
8020 if self.limit != 100 {
8021 s.serialize_field("limit", &self.limit)?;
8022 }
8023 Ok(())
8024 }
8025}
8026
8027impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersArg {
8028 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8029 use serde::de::{MapAccess, Visitor};
8031 struct StructVisitor;
8032 impl<'de> Visitor<'de> for StructVisitor {
8033 type Value = ListFileMembersArg;
8034 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8035 f.write_str("a ListFileMembersArg struct")
8036 }
8037 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8038 ListFileMembersArg::internal_deserialize(map)
8039 }
8040 }
8041 deserializer.deserialize_struct("ListFileMembersArg", LIST_FILE_MEMBERS_ARG_FIELDS, StructVisitor)
8042 }
8043}
8044
8045impl ::serde::ser::Serialize for ListFileMembersArg {
8046 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8047 use serde::ser::SerializeStruct;
8049 let mut s = serializer.serialize_struct("ListFileMembersArg", 4)?;
8050 self.internal_serialize::<S>(&mut s)?;
8051 s.end()
8052 }
8053}
8054
8055#[derive(Debug, Clone, PartialEq, Eq)]
8057#[non_exhaustive] pub struct ListFileMembersBatchArg {
8059 pub files: Vec<PathOrId>,
8061 pub limit: u32,
8063}
8064
8065impl ListFileMembersBatchArg {
8066 pub fn new(files: Vec<PathOrId>) -> Self {
8067 ListFileMembersBatchArg {
8068 files,
8069 limit: 10,
8070 }
8071 }
8072
8073 pub fn with_limit(mut self, value: u32) -> Self {
8074 self.limit = value;
8075 self
8076 }
8077}
8078
8079const LIST_FILE_MEMBERS_BATCH_ARG_FIELDS: &[&str] = &["files",
8080 "limit"];
8081impl ListFileMembersBatchArg {
8082 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8083 map: V,
8084 ) -> Result<ListFileMembersBatchArg, V::Error> {
8085 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8086 }
8087
8088 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8089 mut map: V,
8090 optional: bool,
8091 ) -> Result<Option<ListFileMembersBatchArg>, V::Error> {
8092 let mut field_files = None;
8093 let mut field_limit = None;
8094 let mut nothing = true;
8095 while let Some(key) = map.next_key::<&str>()? {
8096 nothing = false;
8097 match key {
8098 "files" => {
8099 if field_files.is_some() {
8100 return Err(::serde::de::Error::duplicate_field("files"));
8101 }
8102 field_files = Some(map.next_value()?);
8103 }
8104 "limit" => {
8105 if field_limit.is_some() {
8106 return Err(::serde::de::Error::duplicate_field("limit"));
8107 }
8108 field_limit = Some(map.next_value()?);
8109 }
8110 _ => {
8111 map.next_value::<::serde_json::Value>()?;
8113 }
8114 }
8115 }
8116 if optional && nothing {
8117 return Ok(None);
8118 }
8119 let result = ListFileMembersBatchArg {
8120 files: field_files.ok_or_else(|| ::serde::de::Error::missing_field("files"))?,
8121 limit: field_limit.unwrap_or(10),
8122 };
8123 Ok(Some(result))
8124 }
8125
8126 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8127 &self,
8128 s: &mut S::SerializeStruct,
8129 ) -> Result<(), S::Error> {
8130 use serde::ser::SerializeStruct;
8131 s.serialize_field("files", &self.files)?;
8132 if self.limit != 10 {
8133 s.serialize_field("limit", &self.limit)?;
8134 }
8135 Ok(())
8136 }
8137}
8138
8139impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersBatchArg {
8140 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8141 use serde::de::{MapAccess, Visitor};
8143 struct StructVisitor;
8144 impl<'de> Visitor<'de> for StructVisitor {
8145 type Value = ListFileMembersBatchArg;
8146 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8147 f.write_str("a ListFileMembersBatchArg struct")
8148 }
8149 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8150 ListFileMembersBatchArg::internal_deserialize(map)
8151 }
8152 }
8153 deserializer.deserialize_struct("ListFileMembersBatchArg", LIST_FILE_MEMBERS_BATCH_ARG_FIELDS, StructVisitor)
8154 }
8155}
8156
8157impl ::serde::ser::Serialize for ListFileMembersBatchArg {
8158 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8159 use serde::ser::SerializeStruct;
8161 let mut s = serializer.serialize_struct("ListFileMembersBatchArg", 2)?;
8162 self.internal_serialize::<S>(&mut s)?;
8163 s.end()
8164 }
8165}
8166
8167#[derive(Debug, Clone, PartialEq, Eq)]
8169#[non_exhaustive] pub struct ListFileMembersBatchResult {
8171 pub file: PathOrId,
8173 pub result: ListFileMembersIndividualResult,
8175}
8176
8177impl ListFileMembersBatchResult {
8178 pub fn new(file: PathOrId, result: ListFileMembersIndividualResult) -> Self {
8179 ListFileMembersBatchResult {
8180 file,
8181 result,
8182 }
8183 }
8184}
8185
8186const LIST_FILE_MEMBERS_BATCH_RESULT_FIELDS: &[&str] = &["file",
8187 "result"];
8188impl ListFileMembersBatchResult {
8189 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8190 map: V,
8191 ) -> Result<ListFileMembersBatchResult, V::Error> {
8192 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8193 }
8194
8195 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8196 mut map: V,
8197 optional: bool,
8198 ) -> Result<Option<ListFileMembersBatchResult>, V::Error> {
8199 let mut field_file = None;
8200 let mut field_result = None;
8201 let mut nothing = true;
8202 while let Some(key) = map.next_key::<&str>()? {
8203 nothing = false;
8204 match key {
8205 "file" => {
8206 if field_file.is_some() {
8207 return Err(::serde::de::Error::duplicate_field("file"));
8208 }
8209 field_file = Some(map.next_value()?);
8210 }
8211 "result" => {
8212 if field_result.is_some() {
8213 return Err(::serde::de::Error::duplicate_field("result"));
8214 }
8215 field_result = Some(map.next_value()?);
8216 }
8217 _ => {
8218 map.next_value::<::serde_json::Value>()?;
8220 }
8221 }
8222 }
8223 if optional && nothing {
8224 return Ok(None);
8225 }
8226 let result = ListFileMembersBatchResult {
8227 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
8228 result: field_result.ok_or_else(|| ::serde::de::Error::missing_field("result"))?,
8229 };
8230 Ok(Some(result))
8231 }
8232
8233 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8234 &self,
8235 s: &mut S::SerializeStruct,
8236 ) -> Result<(), S::Error> {
8237 use serde::ser::SerializeStruct;
8238 s.serialize_field("file", &self.file)?;
8239 s.serialize_field("result", &self.result)?;
8240 Ok(())
8241 }
8242}
8243
8244impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersBatchResult {
8245 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8246 use serde::de::{MapAccess, Visitor};
8248 struct StructVisitor;
8249 impl<'de> Visitor<'de> for StructVisitor {
8250 type Value = ListFileMembersBatchResult;
8251 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8252 f.write_str("a ListFileMembersBatchResult struct")
8253 }
8254 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8255 ListFileMembersBatchResult::internal_deserialize(map)
8256 }
8257 }
8258 deserializer.deserialize_struct("ListFileMembersBatchResult", LIST_FILE_MEMBERS_BATCH_RESULT_FIELDS, StructVisitor)
8259 }
8260}
8261
8262impl ::serde::ser::Serialize for ListFileMembersBatchResult {
8263 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8264 use serde::ser::SerializeStruct;
8266 let mut s = serializer.serialize_struct("ListFileMembersBatchResult", 2)?;
8267 self.internal_serialize::<S>(&mut s)?;
8268 s.end()
8269 }
8270}
8271
8272#[derive(Debug, Clone, PartialEq, Eq)]
8274#[non_exhaustive] pub struct ListFileMembersContinueArg {
8276 pub cursor: String,
8281}
8282
8283impl ListFileMembersContinueArg {
8284 pub fn new(cursor: String) -> Self {
8285 ListFileMembersContinueArg {
8286 cursor,
8287 }
8288 }
8289}
8290
8291const LIST_FILE_MEMBERS_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
8292impl ListFileMembersContinueArg {
8293 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8294 map: V,
8295 ) -> Result<ListFileMembersContinueArg, V::Error> {
8296 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8297 }
8298
8299 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8300 mut map: V,
8301 optional: bool,
8302 ) -> Result<Option<ListFileMembersContinueArg>, V::Error> {
8303 let mut field_cursor = None;
8304 let mut nothing = true;
8305 while let Some(key) = map.next_key::<&str>()? {
8306 nothing = false;
8307 match key {
8308 "cursor" => {
8309 if field_cursor.is_some() {
8310 return Err(::serde::de::Error::duplicate_field("cursor"));
8311 }
8312 field_cursor = Some(map.next_value()?);
8313 }
8314 _ => {
8315 map.next_value::<::serde_json::Value>()?;
8317 }
8318 }
8319 }
8320 if optional && nothing {
8321 return Ok(None);
8322 }
8323 let result = ListFileMembersContinueArg {
8324 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
8325 };
8326 Ok(Some(result))
8327 }
8328
8329 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8330 &self,
8331 s: &mut S::SerializeStruct,
8332 ) -> Result<(), S::Error> {
8333 use serde::ser::SerializeStruct;
8334 s.serialize_field("cursor", &self.cursor)?;
8335 Ok(())
8336 }
8337}
8338
8339impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersContinueArg {
8340 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8341 use serde::de::{MapAccess, Visitor};
8343 struct StructVisitor;
8344 impl<'de> Visitor<'de> for StructVisitor {
8345 type Value = ListFileMembersContinueArg;
8346 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8347 f.write_str("a ListFileMembersContinueArg struct")
8348 }
8349 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8350 ListFileMembersContinueArg::internal_deserialize(map)
8351 }
8352 }
8353 deserializer.deserialize_struct("ListFileMembersContinueArg", LIST_FILE_MEMBERS_CONTINUE_ARG_FIELDS, StructVisitor)
8354 }
8355}
8356
8357impl ::serde::ser::Serialize for ListFileMembersContinueArg {
8358 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8359 use serde::ser::SerializeStruct;
8361 let mut s = serializer.serialize_struct("ListFileMembersContinueArg", 1)?;
8362 self.internal_serialize::<S>(&mut s)?;
8363 s.end()
8364 }
8365}
8366
8367#[derive(Debug, Clone, PartialEq, Eq)]
8369#[non_exhaustive] pub enum ListFileMembersContinueError {
8371 UserError(SharingUserError),
8372 AccessError(SharingFileAccessError),
8373 InvalidCursor,
8375 Other,
8378}
8379
8380impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersContinueError {
8381 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8382 use serde::de::{self, MapAccess, Visitor};
8384 struct EnumVisitor;
8385 impl<'de> Visitor<'de> for EnumVisitor {
8386 type Value = ListFileMembersContinueError;
8387 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8388 f.write_str("a ListFileMembersContinueError structure")
8389 }
8390 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
8391 let tag: &str = match map.next_key()? {
8392 Some(".tag") => map.next_value()?,
8393 _ => return Err(de::Error::missing_field(".tag"))
8394 };
8395 let value = match tag {
8396 "user_error" => {
8397 match map.next_key()? {
8398 Some("user_error") => ListFileMembersContinueError::UserError(map.next_value()?),
8399 None => return Err(de::Error::missing_field("user_error")),
8400 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8401 }
8402 }
8403 "access_error" => {
8404 match map.next_key()? {
8405 Some("access_error") => ListFileMembersContinueError::AccessError(map.next_value()?),
8406 None => return Err(de::Error::missing_field("access_error")),
8407 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8408 }
8409 }
8410 "invalid_cursor" => ListFileMembersContinueError::InvalidCursor,
8411 _ => ListFileMembersContinueError::Other,
8412 };
8413 crate::eat_json_fields(&mut map)?;
8414 Ok(value)
8415 }
8416 }
8417 const VARIANTS: &[&str] = &["user_error",
8418 "access_error",
8419 "invalid_cursor",
8420 "other"];
8421 deserializer.deserialize_struct("ListFileMembersContinueError", VARIANTS, EnumVisitor)
8422 }
8423}
8424
8425impl ::serde::ser::Serialize for ListFileMembersContinueError {
8426 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8427 use serde::ser::SerializeStruct;
8429 match self {
8430 ListFileMembersContinueError::UserError(x) => {
8431 let mut s = serializer.serialize_struct("ListFileMembersContinueError", 2)?;
8433 s.serialize_field(".tag", "user_error")?;
8434 s.serialize_field("user_error", x)?;
8435 s.end()
8436 }
8437 ListFileMembersContinueError::AccessError(x) => {
8438 let mut s = serializer.serialize_struct("ListFileMembersContinueError", 2)?;
8440 s.serialize_field(".tag", "access_error")?;
8441 s.serialize_field("access_error", x)?;
8442 s.end()
8443 }
8444 ListFileMembersContinueError::InvalidCursor => {
8445 let mut s = serializer.serialize_struct("ListFileMembersContinueError", 1)?;
8447 s.serialize_field(".tag", "invalid_cursor")?;
8448 s.end()
8449 }
8450 ListFileMembersContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
8451 }
8452 }
8453}
8454
8455impl ::std::error::Error for ListFileMembersContinueError {
8456 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
8457 match self {
8458 ListFileMembersContinueError::UserError(inner) => Some(inner),
8459 ListFileMembersContinueError::AccessError(inner) => Some(inner),
8460 _ => None,
8461 }
8462 }
8463}
8464
8465impl ::std::fmt::Display for ListFileMembersContinueError {
8466 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8467 match self {
8468 ListFileMembersContinueError::UserError(inner) => write!(f, "ListFileMembersContinueError: {}", inner),
8469 ListFileMembersContinueError::AccessError(inner) => write!(f, "ListFileMembersContinueError: {}", inner),
8470 _ => write!(f, "{:?}", *self),
8471 }
8472 }
8473}
8474
8475#[derive(Debug, Clone, PartialEq, Eq)]
8476#[non_exhaustive] pub struct ListFileMembersCountResult {
8478 pub members: SharedFileMembers,
8480 pub member_count: u32,
8482}
8483
8484impl ListFileMembersCountResult {
8485 pub fn new(members: SharedFileMembers, member_count: u32) -> Self {
8486 ListFileMembersCountResult {
8487 members,
8488 member_count,
8489 }
8490 }
8491}
8492
8493const LIST_FILE_MEMBERS_COUNT_RESULT_FIELDS: &[&str] = &["members",
8494 "member_count"];
8495impl ListFileMembersCountResult {
8496 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8497 map: V,
8498 ) -> Result<ListFileMembersCountResult, V::Error> {
8499 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8500 }
8501
8502 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8503 mut map: V,
8504 optional: bool,
8505 ) -> Result<Option<ListFileMembersCountResult>, V::Error> {
8506 let mut field_members = None;
8507 let mut field_member_count = None;
8508 let mut nothing = true;
8509 while let Some(key) = map.next_key::<&str>()? {
8510 nothing = false;
8511 match key {
8512 "members" => {
8513 if field_members.is_some() {
8514 return Err(::serde::de::Error::duplicate_field("members"));
8515 }
8516 field_members = Some(map.next_value()?);
8517 }
8518 "member_count" => {
8519 if field_member_count.is_some() {
8520 return Err(::serde::de::Error::duplicate_field("member_count"));
8521 }
8522 field_member_count = Some(map.next_value()?);
8523 }
8524 _ => {
8525 map.next_value::<::serde_json::Value>()?;
8527 }
8528 }
8529 }
8530 if optional && nothing {
8531 return Ok(None);
8532 }
8533 let result = ListFileMembersCountResult {
8534 members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?,
8535 member_count: field_member_count.ok_or_else(|| ::serde::de::Error::missing_field("member_count"))?,
8536 };
8537 Ok(Some(result))
8538 }
8539
8540 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8541 &self,
8542 s: &mut S::SerializeStruct,
8543 ) -> Result<(), S::Error> {
8544 use serde::ser::SerializeStruct;
8545 s.serialize_field("members", &self.members)?;
8546 s.serialize_field("member_count", &self.member_count)?;
8547 Ok(())
8548 }
8549}
8550
8551impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersCountResult {
8552 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8553 use serde::de::{MapAccess, Visitor};
8555 struct StructVisitor;
8556 impl<'de> Visitor<'de> for StructVisitor {
8557 type Value = ListFileMembersCountResult;
8558 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8559 f.write_str("a ListFileMembersCountResult struct")
8560 }
8561 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8562 ListFileMembersCountResult::internal_deserialize(map)
8563 }
8564 }
8565 deserializer.deserialize_struct("ListFileMembersCountResult", LIST_FILE_MEMBERS_COUNT_RESULT_FIELDS, StructVisitor)
8566 }
8567}
8568
8569impl ::serde::ser::Serialize for ListFileMembersCountResult {
8570 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8571 use serde::ser::SerializeStruct;
8573 let mut s = serializer.serialize_struct("ListFileMembersCountResult", 2)?;
8574 self.internal_serialize::<S>(&mut s)?;
8575 s.end()
8576 }
8577}
8578
8579#[derive(Debug, Clone, PartialEq, Eq)]
8581#[non_exhaustive] pub enum ListFileMembersError {
8583 UserError(SharingUserError),
8584 AccessError(SharingFileAccessError),
8585 Other,
8588}
8589
8590impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersError {
8591 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8592 use serde::de::{self, MapAccess, Visitor};
8594 struct EnumVisitor;
8595 impl<'de> Visitor<'de> for EnumVisitor {
8596 type Value = ListFileMembersError;
8597 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8598 f.write_str("a ListFileMembersError structure")
8599 }
8600 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
8601 let tag: &str = match map.next_key()? {
8602 Some(".tag") => map.next_value()?,
8603 _ => return Err(de::Error::missing_field(".tag"))
8604 };
8605 let value = match tag {
8606 "user_error" => {
8607 match map.next_key()? {
8608 Some("user_error") => ListFileMembersError::UserError(map.next_value()?),
8609 None => return Err(de::Error::missing_field("user_error")),
8610 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8611 }
8612 }
8613 "access_error" => {
8614 match map.next_key()? {
8615 Some("access_error") => ListFileMembersError::AccessError(map.next_value()?),
8616 None => return Err(de::Error::missing_field("access_error")),
8617 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8618 }
8619 }
8620 _ => ListFileMembersError::Other,
8621 };
8622 crate::eat_json_fields(&mut map)?;
8623 Ok(value)
8624 }
8625 }
8626 const VARIANTS: &[&str] = &["user_error",
8627 "access_error",
8628 "other"];
8629 deserializer.deserialize_struct("ListFileMembersError", VARIANTS, EnumVisitor)
8630 }
8631}
8632
8633impl ::serde::ser::Serialize for ListFileMembersError {
8634 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8635 use serde::ser::SerializeStruct;
8637 match self {
8638 ListFileMembersError::UserError(x) => {
8639 let mut s = serializer.serialize_struct("ListFileMembersError", 2)?;
8641 s.serialize_field(".tag", "user_error")?;
8642 s.serialize_field("user_error", x)?;
8643 s.end()
8644 }
8645 ListFileMembersError::AccessError(x) => {
8646 let mut s = serializer.serialize_struct("ListFileMembersError", 2)?;
8648 s.serialize_field(".tag", "access_error")?;
8649 s.serialize_field("access_error", x)?;
8650 s.end()
8651 }
8652 ListFileMembersError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
8653 }
8654 }
8655}
8656
8657impl ::std::error::Error for ListFileMembersError {
8658 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
8659 match self {
8660 ListFileMembersError::UserError(inner) => Some(inner),
8661 ListFileMembersError::AccessError(inner) => Some(inner),
8662 _ => None,
8663 }
8664 }
8665}
8666
8667impl ::std::fmt::Display for ListFileMembersError {
8668 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8669 match self {
8670 ListFileMembersError::UserError(inner) => write!(f, "ListFileMembersError: {}", inner),
8671 ListFileMembersError::AccessError(inner) => write!(f, "ListFileMembersError: {}", inner),
8672 _ => write!(f, "{:?}", *self),
8673 }
8674 }
8675}
8676
8677#[derive(Debug, Clone, PartialEq, Eq)]
8678#[non_exhaustive] pub enum ListFileMembersIndividualResult {
8680 Result(ListFileMembersCountResult),
8682 AccessError(SharingFileAccessError),
8684 Other,
8687}
8688
8689impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersIndividualResult {
8690 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8691 use serde::de::{self, MapAccess, Visitor};
8693 struct EnumVisitor;
8694 impl<'de> Visitor<'de> for EnumVisitor {
8695 type Value = ListFileMembersIndividualResult;
8696 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8697 f.write_str("a ListFileMembersIndividualResult structure")
8698 }
8699 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
8700 let tag: &str = match map.next_key()? {
8701 Some(".tag") => map.next_value()?,
8702 _ => return Err(de::Error::missing_field(".tag"))
8703 };
8704 let value = match tag {
8705 "result" => ListFileMembersIndividualResult::Result(ListFileMembersCountResult::internal_deserialize(&mut map)?),
8706 "access_error" => {
8707 match map.next_key()? {
8708 Some("access_error") => ListFileMembersIndividualResult::AccessError(map.next_value()?),
8709 None => return Err(de::Error::missing_field("access_error")),
8710 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8711 }
8712 }
8713 _ => ListFileMembersIndividualResult::Other,
8714 };
8715 crate::eat_json_fields(&mut map)?;
8716 Ok(value)
8717 }
8718 }
8719 const VARIANTS: &[&str] = &["result",
8720 "access_error",
8721 "other"];
8722 deserializer.deserialize_struct("ListFileMembersIndividualResult", VARIANTS, EnumVisitor)
8723 }
8724}
8725
8726impl ::serde::ser::Serialize for ListFileMembersIndividualResult {
8727 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8728 use serde::ser::SerializeStruct;
8730 match self {
8731 ListFileMembersIndividualResult::Result(x) => {
8732 let mut s = serializer.serialize_struct("ListFileMembersIndividualResult", 3)?;
8734 s.serialize_field(".tag", "result")?;
8735 x.internal_serialize::<S>(&mut s)?;
8736 s.end()
8737 }
8738 ListFileMembersIndividualResult::AccessError(x) => {
8739 let mut s = serializer.serialize_struct("ListFileMembersIndividualResult", 2)?;
8741 s.serialize_field(".tag", "access_error")?;
8742 s.serialize_field("access_error", x)?;
8743 s.end()
8744 }
8745 ListFileMembersIndividualResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
8746 }
8747 }
8748}
8749
8750#[derive(Debug, Clone, PartialEq, Eq)]
8752#[non_exhaustive] pub struct ListFilesArg {
8754 pub limit: u32,
8756 pub actions: Option<Vec<FileAction>>,
8760}
8761
8762impl Default for ListFilesArg {
8763 fn default() -> Self {
8764 ListFilesArg {
8765 limit: 100,
8766 actions: None,
8767 }
8768 }
8769}
8770
8771impl ListFilesArg {
8772 pub fn with_limit(mut self, value: u32) -> Self {
8773 self.limit = value;
8774 self
8775 }
8776
8777 pub fn with_actions(mut self, value: Vec<FileAction>) -> Self {
8778 self.actions = Some(value);
8779 self
8780 }
8781}
8782
8783const LIST_FILES_ARG_FIELDS: &[&str] = &["limit",
8784 "actions"];
8785impl ListFilesArg {
8786 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8788 mut map: V,
8789 ) -> Result<ListFilesArg, V::Error> {
8790 let mut field_limit = None;
8791 let mut field_actions = None;
8792 while let Some(key) = map.next_key::<&str>()? {
8793 match key {
8794 "limit" => {
8795 if field_limit.is_some() {
8796 return Err(::serde::de::Error::duplicate_field("limit"));
8797 }
8798 field_limit = Some(map.next_value()?);
8799 }
8800 "actions" => {
8801 if field_actions.is_some() {
8802 return Err(::serde::de::Error::duplicate_field("actions"));
8803 }
8804 field_actions = Some(map.next_value()?);
8805 }
8806 _ => {
8807 map.next_value::<::serde_json::Value>()?;
8809 }
8810 }
8811 }
8812 let result = ListFilesArg {
8813 limit: field_limit.unwrap_or(100),
8814 actions: field_actions.and_then(Option::flatten),
8815 };
8816 Ok(result)
8817 }
8818
8819 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8820 &self,
8821 s: &mut S::SerializeStruct,
8822 ) -> Result<(), S::Error> {
8823 use serde::ser::SerializeStruct;
8824 if self.limit != 100 {
8825 s.serialize_field("limit", &self.limit)?;
8826 }
8827 if let Some(val) = &self.actions {
8828 s.serialize_field("actions", val)?;
8829 }
8830 Ok(())
8831 }
8832}
8833
8834impl<'de> ::serde::de::Deserialize<'de> for ListFilesArg {
8835 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8836 use serde::de::{MapAccess, Visitor};
8838 struct StructVisitor;
8839 impl<'de> Visitor<'de> for StructVisitor {
8840 type Value = ListFilesArg;
8841 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8842 f.write_str("a ListFilesArg struct")
8843 }
8844 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8845 ListFilesArg::internal_deserialize(map)
8846 }
8847 }
8848 deserializer.deserialize_struct("ListFilesArg", LIST_FILES_ARG_FIELDS, StructVisitor)
8849 }
8850}
8851
8852impl ::serde::ser::Serialize for ListFilesArg {
8853 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8854 use serde::ser::SerializeStruct;
8856 let mut s = serializer.serialize_struct("ListFilesArg", 2)?;
8857 self.internal_serialize::<S>(&mut s)?;
8858 s.end()
8859 }
8860}
8861
8862#[derive(Debug, Clone, PartialEq, Eq)]
8864#[non_exhaustive] pub struct ListFilesContinueArg {
8866 pub cursor: String,
8868}
8869
8870impl ListFilesContinueArg {
8871 pub fn new(cursor: String) -> Self {
8872 ListFilesContinueArg {
8873 cursor,
8874 }
8875 }
8876}
8877
8878const LIST_FILES_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
8879impl ListFilesContinueArg {
8880 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8881 map: V,
8882 ) -> Result<ListFilesContinueArg, V::Error> {
8883 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8884 }
8885
8886 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8887 mut map: V,
8888 optional: bool,
8889 ) -> Result<Option<ListFilesContinueArg>, V::Error> {
8890 let mut field_cursor = None;
8891 let mut nothing = true;
8892 while let Some(key) = map.next_key::<&str>()? {
8893 nothing = false;
8894 match key {
8895 "cursor" => {
8896 if field_cursor.is_some() {
8897 return Err(::serde::de::Error::duplicate_field("cursor"));
8898 }
8899 field_cursor = Some(map.next_value()?);
8900 }
8901 _ => {
8902 map.next_value::<::serde_json::Value>()?;
8904 }
8905 }
8906 }
8907 if optional && nothing {
8908 return Ok(None);
8909 }
8910 let result = ListFilesContinueArg {
8911 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
8912 };
8913 Ok(Some(result))
8914 }
8915
8916 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8917 &self,
8918 s: &mut S::SerializeStruct,
8919 ) -> Result<(), S::Error> {
8920 use serde::ser::SerializeStruct;
8921 s.serialize_field("cursor", &self.cursor)?;
8922 Ok(())
8923 }
8924}
8925
8926impl<'de> ::serde::de::Deserialize<'de> for ListFilesContinueArg {
8927 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8928 use serde::de::{MapAccess, Visitor};
8930 struct StructVisitor;
8931 impl<'de> Visitor<'de> for StructVisitor {
8932 type Value = ListFilesContinueArg;
8933 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8934 f.write_str("a ListFilesContinueArg struct")
8935 }
8936 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8937 ListFilesContinueArg::internal_deserialize(map)
8938 }
8939 }
8940 deserializer.deserialize_struct("ListFilesContinueArg", LIST_FILES_CONTINUE_ARG_FIELDS, StructVisitor)
8941 }
8942}
8943
8944impl ::serde::ser::Serialize for ListFilesContinueArg {
8945 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8946 use serde::ser::SerializeStruct;
8948 let mut s = serializer.serialize_struct("ListFilesContinueArg", 1)?;
8949 self.internal_serialize::<S>(&mut s)?;
8950 s.end()
8951 }
8952}
8953
8954#[derive(Debug, Clone, PartialEq, Eq)]
8957#[non_exhaustive] pub enum ListFilesContinueError {
8959 UserError(SharingUserError),
8961 InvalidCursor,
8963 Other,
8966}
8967
8968impl<'de> ::serde::de::Deserialize<'de> for ListFilesContinueError {
8969 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8970 use serde::de::{self, MapAccess, Visitor};
8972 struct EnumVisitor;
8973 impl<'de> Visitor<'de> for EnumVisitor {
8974 type Value = ListFilesContinueError;
8975 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8976 f.write_str("a ListFilesContinueError structure")
8977 }
8978 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
8979 let tag: &str = match map.next_key()? {
8980 Some(".tag") => map.next_value()?,
8981 _ => return Err(de::Error::missing_field(".tag"))
8982 };
8983 let value = match tag {
8984 "user_error" => {
8985 match map.next_key()? {
8986 Some("user_error") => ListFilesContinueError::UserError(map.next_value()?),
8987 None => return Err(de::Error::missing_field("user_error")),
8988 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8989 }
8990 }
8991 "invalid_cursor" => ListFilesContinueError::InvalidCursor,
8992 _ => ListFilesContinueError::Other,
8993 };
8994 crate::eat_json_fields(&mut map)?;
8995 Ok(value)
8996 }
8997 }
8998 const VARIANTS: &[&str] = &["user_error",
8999 "invalid_cursor",
9000 "other"];
9001 deserializer.deserialize_struct("ListFilesContinueError", VARIANTS, EnumVisitor)
9002 }
9003}
9004
9005impl ::serde::ser::Serialize for ListFilesContinueError {
9006 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9007 use serde::ser::SerializeStruct;
9009 match self {
9010 ListFilesContinueError::UserError(x) => {
9011 let mut s = serializer.serialize_struct("ListFilesContinueError", 2)?;
9013 s.serialize_field(".tag", "user_error")?;
9014 s.serialize_field("user_error", x)?;
9015 s.end()
9016 }
9017 ListFilesContinueError::InvalidCursor => {
9018 let mut s = serializer.serialize_struct("ListFilesContinueError", 1)?;
9020 s.serialize_field(".tag", "invalid_cursor")?;
9021 s.end()
9022 }
9023 ListFilesContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
9024 }
9025 }
9026}
9027
9028impl ::std::error::Error for ListFilesContinueError {
9029 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
9030 match self {
9031 ListFilesContinueError::UserError(inner) => Some(inner),
9032 _ => None,
9033 }
9034 }
9035}
9036
9037impl ::std::fmt::Display for ListFilesContinueError {
9038 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9039 match self {
9040 ListFilesContinueError::UserError(inner) => write!(f, "User account had a problem: {}", inner),
9041 _ => write!(f, "{:?}", *self),
9042 }
9043 }
9044}
9045
9046#[derive(Debug, Clone, PartialEq, Eq)]
9048#[non_exhaustive] pub struct ListFilesResult {
9050 pub entries: Vec<SharedFileMetadata>,
9052 pub cursor: Option<String>,
9054}
9055
9056impl ListFilesResult {
9057 pub fn new(entries: Vec<SharedFileMetadata>) -> Self {
9058 ListFilesResult {
9059 entries,
9060 cursor: None,
9061 }
9062 }
9063
9064 pub fn with_cursor(mut self, value: String) -> Self {
9065 self.cursor = Some(value);
9066 self
9067 }
9068}
9069
9070const LIST_FILES_RESULT_FIELDS: &[&str] = &["entries",
9071 "cursor"];
9072impl ListFilesResult {
9073 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9074 map: V,
9075 ) -> Result<ListFilesResult, V::Error> {
9076 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9077 }
9078
9079 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9080 mut map: V,
9081 optional: bool,
9082 ) -> Result<Option<ListFilesResult>, V::Error> {
9083 let mut field_entries = None;
9084 let mut field_cursor = None;
9085 let mut nothing = true;
9086 while let Some(key) = map.next_key::<&str>()? {
9087 nothing = false;
9088 match key {
9089 "entries" => {
9090 if field_entries.is_some() {
9091 return Err(::serde::de::Error::duplicate_field("entries"));
9092 }
9093 field_entries = Some(map.next_value()?);
9094 }
9095 "cursor" => {
9096 if field_cursor.is_some() {
9097 return Err(::serde::de::Error::duplicate_field("cursor"));
9098 }
9099 field_cursor = Some(map.next_value()?);
9100 }
9101 _ => {
9102 map.next_value::<::serde_json::Value>()?;
9104 }
9105 }
9106 }
9107 if optional && nothing {
9108 return Ok(None);
9109 }
9110 let result = ListFilesResult {
9111 entries: field_entries.ok_or_else(|| ::serde::de::Error::missing_field("entries"))?,
9112 cursor: field_cursor.and_then(Option::flatten),
9113 };
9114 Ok(Some(result))
9115 }
9116
9117 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9118 &self,
9119 s: &mut S::SerializeStruct,
9120 ) -> Result<(), S::Error> {
9121 use serde::ser::SerializeStruct;
9122 s.serialize_field("entries", &self.entries)?;
9123 if let Some(val) = &self.cursor {
9124 s.serialize_field("cursor", val)?;
9125 }
9126 Ok(())
9127 }
9128}
9129
9130impl<'de> ::serde::de::Deserialize<'de> for ListFilesResult {
9131 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9132 use serde::de::{MapAccess, Visitor};
9134 struct StructVisitor;
9135 impl<'de> Visitor<'de> for StructVisitor {
9136 type Value = ListFilesResult;
9137 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9138 f.write_str("a ListFilesResult struct")
9139 }
9140 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9141 ListFilesResult::internal_deserialize(map)
9142 }
9143 }
9144 deserializer.deserialize_struct("ListFilesResult", LIST_FILES_RESULT_FIELDS, StructVisitor)
9145 }
9146}
9147
9148impl ::serde::ser::Serialize for ListFilesResult {
9149 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9150 use serde::ser::SerializeStruct;
9152 let mut s = serializer.serialize_struct("ListFilesResult", 2)?;
9153 self.internal_serialize::<S>(&mut s)?;
9154 s.end()
9155 }
9156}
9157
9158#[derive(Debug, Clone, PartialEq, Eq)]
9159#[non_exhaustive] pub struct ListFolderMembersArgs {
9161 pub shared_folder_id: crate::types::common::SharedFolderId,
9163 pub actions: Option<Vec<MemberAction>>,
9167 pub limit: u32,
9170}
9171
9172impl ListFolderMembersArgs {
9173 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
9174 ListFolderMembersArgs {
9175 shared_folder_id,
9176 actions: None,
9177 limit: 1000,
9178 }
9179 }
9180
9181 pub fn with_actions(mut self, value: Vec<MemberAction>) -> Self {
9182 self.actions = Some(value);
9183 self
9184 }
9185
9186 pub fn with_limit(mut self, value: u32) -> Self {
9187 self.limit = value;
9188 self
9189 }
9190}
9191
9192const LIST_FOLDER_MEMBERS_ARGS_FIELDS: &[&str] = &["shared_folder_id",
9193 "actions",
9194 "limit"];
9195impl ListFolderMembersArgs {
9196 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9197 map: V,
9198 ) -> Result<ListFolderMembersArgs, V::Error> {
9199 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9200 }
9201
9202 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9203 mut map: V,
9204 optional: bool,
9205 ) -> Result<Option<ListFolderMembersArgs>, V::Error> {
9206 let mut field_shared_folder_id = None;
9207 let mut field_actions = None;
9208 let mut field_limit = None;
9209 let mut nothing = true;
9210 while let Some(key) = map.next_key::<&str>()? {
9211 nothing = false;
9212 match key {
9213 "shared_folder_id" => {
9214 if field_shared_folder_id.is_some() {
9215 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
9216 }
9217 field_shared_folder_id = Some(map.next_value()?);
9218 }
9219 "actions" => {
9220 if field_actions.is_some() {
9221 return Err(::serde::de::Error::duplicate_field("actions"));
9222 }
9223 field_actions = Some(map.next_value()?);
9224 }
9225 "limit" => {
9226 if field_limit.is_some() {
9227 return Err(::serde::de::Error::duplicate_field("limit"));
9228 }
9229 field_limit = Some(map.next_value()?);
9230 }
9231 _ => {
9232 map.next_value::<::serde_json::Value>()?;
9234 }
9235 }
9236 }
9237 if optional && nothing {
9238 return Ok(None);
9239 }
9240 let result = ListFolderMembersArgs {
9241 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
9242 actions: field_actions.and_then(Option::flatten),
9243 limit: field_limit.unwrap_or(1000),
9244 };
9245 Ok(Some(result))
9246 }
9247
9248 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9249 &self,
9250 s: &mut S::SerializeStruct,
9251 ) -> Result<(), S::Error> {
9252 use serde::ser::SerializeStruct;
9253 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
9254 if let Some(val) = &self.actions {
9255 s.serialize_field("actions", val)?;
9256 }
9257 if self.limit != 1000 {
9258 s.serialize_field("limit", &self.limit)?;
9259 }
9260 Ok(())
9261 }
9262}
9263
9264impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersArgs {
9265 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9266 use serde::de::{MapAccess, Visitor};
9268 struct StructVisitor;
9269 impl<'de> Visitor<'de> for StructVisitor {
9270 type Value = ListFolderMembersArgs;
9271 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9272 f.write_str("a ListFolderMembersArgs struct")
9273 }
9274 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9275 ListFolderMembersArgs::internal_deserialize(map)
9276 }
9277 }
9278 deserializer.deserialize_struct("ListFolderMembersArgs", LIST_FOLDER_MEMBERS_ARGS_FIELDS, StructVisitor)
9279 }
9280}
9281
9282impl ::serde::ser::Serialize for ListFolderMembersArgs {
9283 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9284 use serde::ser::SerializeStruct;
9286 let mut s = serializer.serialize_struct("ListFolderMembersArgs", 3)?;
9287 self.internal_serialize::<S>(&mut s)?;
9288 s.end()
9289 }
9290}
9291
9292impl From<ListFolderMembersArgs> for ListFolderMembersCursorArg {
9294 fn from(subtype: ListFolderMembersArgs) -> Self {
9295 Self {
9296 actions: subtype.actions,
9297 limit: subtype.limit,
9298 }
9299 }
9300}
9301#[derive(Debug, Clone, PartialEq, Eq)]
9302#[non_exhaustive] pub struct ListFolderMembersContinueArg {
9304 pub cursor: String,
9308}
9309
9310impl ListFolderMembersContinueArg {
9311 pub fn new(cursor: String) -> Self {
9312 ListFolderMembersContinueArg {
9313 cursor,
9314 }
9315 }
9316}
9317
9318const LIST_FOLDER_MEMBERS_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
9319impl ListFolderMembersContinueArg {
9320 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9321 map: V,
9322 ) -> Result<ListFolderMembersContinueArg, V::Error> {
9323 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9324 }
9325
9326 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9327 mut map: V,
9328 optional: bool,
9329 ) -> Result<Option<ListFolderMembersContinueArg>, V::Error> {
9330 let mut field_cursor = None;
9331 let mut nothing = true;
9332 while let Some(key) = map.next_key::<&str>()? {
9333 nothing = false;
9334 match key {
9335 "cursor" => {
9336 if field_cursor.is_some() {
9337 return Err(::serde::de::Error::duplicate_field("cursor"));
9338 }
9339 field_cursor = Some(map.next_value()?);
9340 }
9341 _ => {
9342 map.next_value::<::serde_json::Value>()?;
9344 }
9345 }
9346 }
9347 if optional && nothing {
9348 return Ok(None);
9349 }
9350 let result = ListFolderMembersContinueArg {
9351 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
9352 };
9353 Ok(Some(result))
9354 }
9355
9356 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9357 &self,
9358 s: &mut S::SerializeStruct,
9359 ) -> Result<(), S::Error> {
9360 use serde::ser::SerializeStruct;
9361 s.serialize_field("cursor", &self.cursor)?;
9362 Ok(())
9363 }
9364}
9365
9366impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersContinueArg {
9367 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9368 use serde::de::{MapAccess, Visitor};
9370 struct StructVisitor;
9371 impl<'de> Visitor<'de> for StructVisitor {
9372 type Value = ListFolderMembersContinueArg;
9373 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9374 f.write_str("a ListFolderMembersContinueArg struct")
9375 }
9376 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9377 ListFolderMembersContinueArg::internal_deserialize(map)
9378 }
9379 }
9380 deserializer.deserialize_struct("ListFolderMembersContinueArg", LIST_FOLDER_MEMBERS_CONTINUE_ARG_FIELDS, StructVisitor)
9381 }
9382}
9383
9384impl ::serde::ser::Serialize for ListFolderMembersContinueArg {
9385 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9386 use serde::ser::SerializeStruct;
9388 let mut s = serializer.serialize_struct("ListFolderMembersContinueArg", 1)?;
9389 self.internal_serialize::<S>(&mut s)?;
9390 s.end()
9391 }
9392}
9393
9394#[derive(Debug, Clone, PartialEq, Eq)]
9395#[non_exhaustive] pub enum ListFolderMembersContinueError {
9397 AccessError(SharedFolderAccessError),
9398 InvalidCursor,
9400 Other,
9403}
9404
9405impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersContinueError {
9406 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9407 use serde::de::{self, MapAccess, Visitor};
9409 struct EnumVisitor;
9410 impl<'de> Visitor<'de> for EnumVisitor {
9411 type Value = ListFolderMembersContinueError;
9412 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9413 f.write_str("a ListFolderMembersContinueError structure")
9414 }
9415 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
9416 let tag: &str = match map.next_key()? {
9417 Some(".tag") => map.next_value()?,
9418 _ => return Err(de::Error::missing_field(".tag"))
9419 };
9420 let value = match tag {
9421 "access_error" => {
9422 match map.next_key()? {
9423 Some("access_error") => ListFolderMembersContinueError::AccessError(map.next_value()?),
9424 None => return Err(de::Error::missing_field("access_error")),
9425 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
9426 }
9427 }
9428 "invalid_cursor" => ListFolderMembersContinueError::InvalidCursor,
9429 _ => ListFolderMembersContinueError::Other,
9430 };
9431 crate::eat_json_fields(&mut map)?;
9432 Ok(value)
9433 }
9434 }
9435 const VARIANTS: &[&str] = &["access_error",
9436 "invalid_cursor",
9437 "other"];
9438 deserializer.deserialize_struct("ListFolderMembersContinueError", VARIANTS, EnumVisitor)
9439 }
9440}
9441
9442impl ::serde::ser::Serialize for ListFolderMembersContinueError {
9443 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9444 use serde::ser::SerializeStruct;
9446 match self {
9447 ListFolderMembersContinueError::AccessError(x) => {
9448 let mut s = serializer.serialize_struct("ListFolderMembersContinueError", 2)?;
9450 s.serialize_field(".tag", "access_error")?;
9451 s.serialize_field("access_error", x)?;
9452 s.end()
9453 }
9454 ListFolderMembersContinueError::InvalidCursor => {
9455 let mut s = serializer.serialize_struct("ListFolderMembersContinueError", 1)?;
9457 s.serialize_field(".tag", "invalid_cursor")?;
9458 s.end()
9459 }
9460 ListFolderMembersContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
9461 }
9462 }
9463}
9464
9465impl ::std::error::Error for ListFolderMembersContinueError {
9466 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
9467 match self {
9468 ListFolderMembersContinueError::AccessError(inner) => Some(inner),
9469 _ => None,
9470 }
9471 }
9472}
9473
9474impl ::std::fmt::Display for ListFolderMembersContinueError {
9475 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9476 match self {
9477 ListFolderMembersContinueError::AccessError(inner) => write!(f, "ListFolderMembersContinueError: {}", inner),
9478 _ => write!(f, "{:?}", *self),
9479 }
9480 }
9481}
9482
9483#[derive(Debug, Clone, PartialEq, Eq)]
9484#[non_exhaustive] pub struct ListFolderMembersCursorArg {
9486 pub actions: Option<Vec<MemberAction>>,
9490 pub limit: u32,
9493}
9494
9495impl Default for ListFolderMembersCursorArg {
9496 fn default() -> Self {
9497 ListFolderMembersCursorArg {
9498 actions: None,
9499 limit: 1000,
9500 }
9501 }
9502}
9503
9504impl ListFolderMembersCursorArg {
9505 pub fn with_actions(mut self, value: Vec<MemberAction>) -> Self {
9506 self.actions = Some(value);
9507 self
9508 }
9509
9510 pub fn with_limit(mut self, value: u32) -> Self {
9511 self.limit = value;
9512 self
9513 }
9514}
9515
9516const LIST_FOLDER_MEMBERS_CURSOR_ARG_FIELDS: &[&str] = &["actions",
9517 "limit"];
9518impl ListFolderMembersCursorArg {
9519 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9521 mut map: V,
9522 ) -> Result<ListFolderMembersCursorArg, V::Error> {
9523 let mut field_actions = None;
9524 let mut field_limit = None;
9525 while let Some(key) = map.next_key::<&str>()? {
9526 match key {
9527 "actions" => {
9528 if field_actions.is_some() {
9529 return Err(::serde::de::Error::duplicate_field("actions"));
9530 }
9531 field_actions = Some(map.next_value()?);
9532 }
9533 "limit" => {
9534 if field_limit.is_some() {
9535 return Err(::serde::de::Error::duplicate_field("limit"));
9536 }
9537 field_limit = Some(map.next_value()?);
9538 }
9539 _ => {
9540 map.next_value::<::serde_json::Value>()?;
9542 }
9543 }
9544 }
9545 let result = ListFolderMembersCursorArg {
9546 actions: field_actions.and_then(Option::flatten),
9547 limit: field_limit.unwrap_or(1000),
9548 };
9549 Ok(result)
9550 }
9551
9552 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9553 &self,
9554 s: &mut S::SerializeStruct,
9555 ) -> Result<(), S::Error> {
9556 use serde::ser::SerializeStruct;
9557 if let Some(val) = &self.actions {
9558 s.serialize_field("actions", val)?;
9559 }
9560 if self.limit != 1000 {
9561 s.serialize_field("limit", &self.limit)?;
9562 }
9563 Ok(())
9564 }
9565}
9566
9567impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersCursorArg {
9568 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9569 use serde::de::{MapAccess, Visitor};
9571 struct StructVisitor;
9572 impl<'de> Visitor<'de> for StructVisitor {
9573 type Value = ListFolderMembersCursorArg;
9574 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9575 f.write_str("a ListFolderMembersCursorArg struct")
9576 }
9577 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9578 ListFolderMembersCursorArg::internal_deserialize(map)
9579 }
9580 }
9581 deserializer.deserialize_struct("ListFolderMembersCursorArg", LIST_FOLDER_MEMBERS_CURSOR_ARG_FIELDS, StructVisitor)
9582 }
9583}
9584
9585impl ::serde::ser::Serialize for ListFolderMembersCursorArg {
9586 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9587 use serde::ser::SerializeStruct;
9589 let mut s = serializer.serialize_struct("ListFolderMembersCursorArg", 2)?;
9590 self.internal_serialize::<S>(&mut s)?;
9591 s.end()
9592 }
9593}
9594
9595#[derive(Debug, Clone, PartialEq, Eq)]
9596#[non_exhaustive] pub struct ListFoldersArgs {
9598 pub limit: u32,
9600 pub actions: Option<Vec<FolderAction>>,
9604}
9605
9606impl Default for ListFoldersArgs {
9607 fn default() -> Self {
9608 ListFoldersArgs {
9609 limit: 1000,
9610 actions: None,
9611 }
9612 }
9613}
9614
9615impl ListFoldersArgs {
9616 pub fn with_limit(mut self, value: u32) -> Self {
9617 self.limit = value;
9618 self
9619 }
9620
9621 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
9622 self.actions = Some(value);
9623 self
9624 }
9625}
9626
9627const LIST_FOLDERS_ARGS_FIELDS: &[&str] = &["limit",
9628 "actions"];
9629impl ListFoldersArgs {
9630 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9632 mut map: V,
9633 ) -> Result<ListFoldersArgs, V::Error> {
9634 let mut field_limit = None;
9635 let mut field_actions = None;
9636 while let Some(key) = map.next_key::<&str>()? {
9637 match key {
9638 "limit" => {
9639 if field_limit.is_some() {
9640 return Err(::serde::de::Error::duplicate_field("limit"));
9641 }
9642 field_limit = Some(map.next_value()?);
9643 }
9644 "actions" => {
9645 if field_actions.is_some() {
9646 return Err(::serde::de::Error::duplicate_field("actions"));
9647 }
9648 field_actions = Some(map.next_value()?);
9649 }
9650 _ => {
9651 map.next_value::<::serde_json::Value>()?;
9653 }
9654 }
9655 }
9656 let result = ListFoldersArgs {
9657 limit: field_limit.unwrap_or(1000),
9658 actions: field_actions.and_then(Option::flatten),
9659 };
9660 Ok(result)
9661 }
9662
9663 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9664 &self,
9665 s: &mut S::SerializeStruct,
9666 ) -> Result<(), S::Error> {
9667 use serde::ser::SerializeStruct;
9668 if self.limit != 1000 {
9669 s.serialize_field("limit", &self.limit)?;
9670 }
9671 if let Some(val) = &self.actions {
9672 s.serialize_field("actions", val)?;
9673 }
9674 Ok(())
9675 }
9676}
9677
9678impl<'de> ::serde::de::Deserialize<'de> for ListFoldersArgs {
9679 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9680 use serde::de::{MapAccess, Visitor};
9682 struct StructVisitor;
9683 impl<'de> Visitor<'de> for StructVisitor {
9684 type Value = ListFoldersArgs;
9685 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9686 f.write_str("a ListFoldersArgs struct")
9687 }
9688 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9689 ListFoldersArgs::internal_deserialize(map)
9690 }
9691 }
9692 deserializer.deserialize_struct("ListFoldersArgs", LIST_FOLDERS_ARGS_FIELDS, StructVisitor)
9693 }
9694}
9695
9696impl ::serde::ser::Serialize for ListFoldersArgs {
9697 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9698 use serde::ser::SerializeStruct;
9700 let mut s = serializer.serialize_struct("ListFoldersArgs", 2)?;
9701 self.internal_serialize::<S>(&mut s)?;
9702 s.end()
9703 }
9704}
9705
9706#[derive(Debug, Clone, PartialEq, Eq)]
9707#[non_exhaustive] pub struct ListFoldersContinueArg {
9709 pub cursor: String,
9711}
9712
9713impl ListFoldersContinueArg {
9714 pub fn new(cursor: String) -> Self {
9715 ListFoldersContinueArg {
9716 cursor,
9717 }
9718 }
9719}
9720
9721const LIST_FOLDERS_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
9722impl ListFoldersContinueArg {
9723 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9724 map: V,
9725 ) -> Result<ListFoldersContinueArg, V::Error> {
9726 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9727 }
9728
9729 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9730 mut map: V,
9731 optional: bool,
9732 ) -> Result<Option<ListFoldersContinueArg>, V::Error> {
9733 let mut field_cursor = None;
9734 let mut nothing = true;
9735 while let Some(key) = map.next_key::<&str>()? {
9736 nothing = false;
9737 match key {
9738 "cursor" => {
9739 if field_cursor.is_some() {
9740 return Err(::serde::de::Error::duplicate_field("cursor"));
9741 }
9742 field_cursor = Some(map.next_value()?);
9743 }
9744 _ => {
9745 map.next_value::<::serde_json::Value>()?;
9747 }
9748 }
9749 }
9750 if optional && nothing {
9751 return Ok(None);
9752 }
9753 let result = ListFoldersContinueArg {
9754 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
9755 };
9756 Ok(Some(result))
9757 }
9758
9759 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9760 &self,
9761 s: &mut S::SerializeStruct,
9762 ) -> Result<(), S::Error> {
9763 use serde::ser::SerializeStruct;
9764 s.serialize_field("cursor", &self.cursor)?;
9765 Ok(())
9766 }
9767}
9768
9769impl<'de> ::serde::de::Deserialize<'de> for ListFoldersContinueArg {
9770 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9771 use serde::de::{MapAccess, Visitor};
9773 struct StructVisitor;
9774 impl<'de> Visitor<'de> for StructVisitor {
9775 type Value = ListFoldersContinueArg;
9776 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9777 f.write_str("a ListFoldersContinueArg struct")
9778 }
9779 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9780 ListFoldersContinueArg::internal_deserialize(map)
9781 }
9782 }
9783 deserializer.deserialize_struct("ListFoldersContinueArg", LIST_FOLDERS_CONTINUE_ARG_FIELDS, StructVisitor)
9784 }
9785}
9786
9787impl ::serde::ser::Serialize for ListFoldersContinueArg {
9788 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9789 use serde::ser::SerializeStruct;
9791 let mut s = serializer.serialize_struct("ListFoldersContinueArg", 1)?;
9792 self.internal_serialize::<S>(&mut s)?;
9793 s.end()
9794 }
9795}
9796
9797#[derive(Debug, Clone, PartialEq, Eq)]
9798#[non_exhaustive] pub enum ListFoldersContinueError {
9800 InvalidCursor,
9802 Other,
9805}
9806
9807impl<'de> ::serde::de::Deserialize<'de> for ListFoldersContinueError {
9808 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9809 use serde::de::{self, MapAccess, Visitor};
9811 struct EnumVisitor;
9812 impl<'de> Visitor<'de> for EnumVisitor {
9813 type Value = ListFoldersContinueError;
9814 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9815 f.write_str("a ListFoldersContinueError structure")
9816 }
9817 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
9818 let tag: &str = match map.next_key()? {
9819 Some(".tag") => map.next_value()?,
9820 _ => return Err(de::Error::missing_field(".tag"))
9821 };
9822 let value = match tag {
9823 "invalid_cursor" => ListFoldersContinueError::InvalidCursor,
9824 _ => ListFoldersContinueError::Other,
9825 };
9826 crate::eat_json_fields(&mut map)?;
9827 Ok(value)
9828 }
9829 }
9830 const VARIANTS: &[&str] = &["invalid_cursor",
9831 "other"];
9832 deserializer.deserialize_struct("ListFoldersContinueError", VARIANTS, EnumVisitor)
9833 }
9834}
9835
9836impl ::serde::ser::Serialize for ListFoldersContinueError {
9837 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9838 use serde::ser::SerializeStruct;
9840 match self {
9841 ListFoldersContinueError::InvalidCursor => {
9842 let mut s = serializer.serialize_struct("ListFoldersContinueError", 1)?;
9844 s.serialize_field(".tag", "invalid_cursor")?;
9845 s.end()
9846 }
9847 ListFoldersContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
9848 }
9849 }
9850}
9851
9852impl ::std::error::Error for ListFoldersContinueError {
9853}
9854
9855impl ::std::fmt::Display for ListFoldersContinueError {
9856 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9857 write!(f, "{:?}", *self)
9858 }
9859}
9860
9861#[derive(Debug, Clone, PartialEq, Eq)]
9866#[non_exhaustive] pub struct ListFoldersResult {
9868 pub entries: Vec<SharedFolderMetadata>,
9870 pub cursor: Option<String>,
9876}
9877
9878impl ListFoldersResult {
9879 pub fn new(entries: Vec<SharedFolderMetadata>) -> Self {
9880 ListFoldersResult {
9881 entries,
9882 cursor: None,
9883 }
9884 }
9885
9886 pub fn with_cursor(mut self, value: String) -> Self {
9887 self.cursor = Some(value);
9888 self
9889 }
9890}
9891
9892const LIST_FOLDERS_RESULT_FIELDS: &[&str] = &["entries",
9893 "cursor"];
9894impl ListFoldersResult {
9895 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9896 map: V,
9897 ) -> Result<ListFoldersResult, V::Error> {
9898 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9899 }
9900
9901 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9902 mut map: V,
9903 optional: bool,
9904 ) -> Result<Option<ListFoldersResult>, V::Error> {
9905 let mut field_entries = None;
9906 let mut field_cursor = None;
9907 let mut nothing = true;
9908 while let Some(key) = map.next_key::<&str>()? {
9909 nothing = false;
9910 match key {
9911 "entries" => {
9912 if field_entries.is_some() {
9913 return Err(::serde::de::Error::duplicate_field("entries"));
9914 }
9915 field_entries = Some(map.next_value()?);
9916 }
9917 "cursor" => {
9918 if field_cursor.is_some() {
9919 return Err(::serde::de::Error::duplicate_field("cursor"));
9920 }
9921 field_cursor = Some(map.next_value()?);
9922 }
9923 _ => {
9924 map.next_value::<::serde_json::Value>()?;
9926 }
9927 }
9928 }
9929 if optional && nothing {
9930 return Ok(None);
9931 }
9932 let result = ListFoldersResult {
9933 entries: field_entries.ok_or_else(|| ::serde::de::Error::missing_field("entries"))?,
9934 cursor: field_cursor.and_then(Option::flatten),
9935 };
9936 Ok(Some(result))
9937 }
9938
9939 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9940 &self,
9941 s: &mut S::SerializeStruct,
9942 ) -> Result<(), S::Error> {
9943 use serde::ser::SerializeStruct;
9944 s.serialize_field("entries", &self.entries)?;
9945 if let Some(val) = &self.cursor {
9946 s.serialize_field("cursor", val)?;
9947 }
9948 Ok(())
9949 }
9950}
9951
9952impl<'de> ::serde::de::Deserialize<'de> for ListFoldersResult {
9953 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9954 use serde::de::{MapAccess, Visitor};
9956 struct StructVisitor;
9957 impl<'de> Visitor<'de> for StructVisitor {
9958 type Value = ListFoldersResult;
9959 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9960 f.write_str("a ListFoldersResult struct")
9961 }
9962 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9963 ListFoldersResult::internal_deserialize(map)
9964 }
9965 }
9966 deserializer.deserialize_struct("ListFoldersResult", LIST_FOLDERS_RESULT_FIELDS, StructVisitor)
9967 }
9968}
9969
9970impl ::serde::ser::Serialize for ListFoldersResult {
9971 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9972 use serde::ser::SerializeStruct;
9974 let mut s = serializer.serialize_struct("ListFoldersResult", 2)?;
9975 self.internal_serialize::<S>(&mut s)?;
9976 s.end()
9977 }
9978}
9979
9980#[derive(Debug, Clone, PartialEq, Eq, Default)]
9981#[non_exhaustive] pub struct ListSharedLinksArg {
9983 pub path: Option<ReadPath>,
9985 pub cursor: Option<String>,
9988 pub direct_only: Option<bool>,
9990}
9991
9992impl ListSharedLinksArg {
9993 pub fn with_path(mut self, value: ReadPath) -> Self {
9994 self.path = Some(value);
9995 self
9996 }
9997
9998 pub fn with_cursor(mut self, value: String) -> Self {
9999 self.cursor = Some(value);
10000 self
10001 }
10002
10003 pub fn with_direct_only(mut self, value: bool) -> Self {
10004 self.direct_only = Some(value);
10005 self
10006 }
10007}
10008
10009const LIST_SHARED_LINKS_ARG_FIELDS: &[&str] = &["path",
10010 "cursor",
10011 "direct_only"];
10012impl ListSharedLinksArg {
10013 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10015 mut map: V,
10016 ) -> Result<ListSharedLinksArg, V::Error> {
10017 let mut field_path = None;
10018 let mut field_cursor = None;
10019 let mut field_direct_only = None;
10020 while let Some(key) = map.next_key::<&str>()? {
10021 match key {
10022 "path" => {
10023 if field_path.is_some() {
10024 return Err(::serde::de::Error::duplicate_field("path"));
10025 }
10026 field_path = Some(map.next_value()?);
10027 }
10028 "cursor" => {
10029 if field_cursor.is_some() {
10030 return Err(::serde::de::Error::duplicate_field("cursor"));
10031 }
10032 field_cursor = Some(map.next_value()?);
10033 }
10034 "direct_only" => {
10035 if field_direct_only.is_some() {
10036 return Err(::serde::de::Error::duplicate_field("direct_only"));
10037 }
10038 field_direct_only = Some(map.next_value()?);
10039 }
10040 _ => {
10041 map.next_value::<::serde_json::Value>()?;
10043 }
10044 }
10045 }
10046 let result = ListSharedLinksArg {
10047 path: field_path.and_then(Option::flatten),
10048 cursor: field_cursor.and_then(Option::flatten),
10049 direct_only: field_direct_only.and_then(Option::flatten),
10050 };
10051 Ok(result)
10052 }
10053
10054 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10055 &self,
10056 s: &mut S::SerializeStruct,
10057 ) -> Result<(), S::Error> {
10058 use serde::ser::SerializeStruct;
10059 if let Some(val) = &self.path {
10060 s.serialize_field("path", val)?;
10061 }
10062 if let Some(val) = &self.cursor {
10063 s.serialize_field("cursor", val)?;
10064 }
10065 if let Some(val) = &self.direct_only {
10066 s.serialize_field("direct_only", val)?;
10067 }
10068 Ok(())
10069 }
10070}
10071
10072impl<'de> ::serde::de::Deserialize<'de> for ListSharedLinksArg {
10073 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10074 use serde::de::{MapAccess, Visitor};
10076 struct StructVisitor;
10077 impl<'de> Visitor<'de> for StructVisitor {
10078 type Value = ListSharedLinksArg;
10079 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10080 f.write_str("a ListSharedLinksArg struct")
10081 }
10082 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10083 ListSharedLinksArg::internal_deserialize(map)
10084 }
10085 }
10086 deserializer.deserialize_struct("ListSharedLinksArg", LIST_SHARED_LINKS_ARG_FIELDS, StructVisitor)
10087 }
10088}
10089
10090impl ::serde::ser::Serialize for ListSharedLinksArg {
10091 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10092 use serde::ser::SerializeStruct;
10094 let mut s = serializer.serialize_struct("ListSharedLinksArg", 3)?;
10095 self.internal_serialize::<S>(&mut s)?;
10096 s.end()
10097 }
10098}
10099
10100#[derive(Debug, Clone, PartialEq, Eq)]
10101#[non_exhaustive] pub enum ListSharedLinksError {
10103 Path(crate::types::files::LookupError),
10104 Reset,
10107 Other,
10110}
10111
10112impl<'de> ::serde::de::Deserialize<'de> for ListSharedLinksError {
10113 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10114 use serde::de::{self, MapAccess, Visitor};
10116 struct EnumVisitor;
10117 impl<'de> Visitor<'de> for EnumVisitor {
10118 type Value = ListSharedLinksError;
10119 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10120 f.write_str("a ListSharedLinksError structure")
10121 }
10122 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
10123 let tag: &str = match map.next_key()? {
10124 Some(".tag") => map.next_value()?,
10125 _ => return Err(de::Error::missing_field(".tag"))
10126 };
10127 let value = match tag {
10128 "path" => {
10129 match map.next_key()? {
10130 Some("path") => ListSharedLinksError::Path(map.next_value()?),
10131 None => return Err(de::Error::missing_field("path")),
10132 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
10133 }
10134 }
10135 "reset" => ListSharedLinksError::Reset,
10136 _ => ListSharedLinksError::Other,
10137 };
10138 crate::eat_json_fields(&mut map)?;
10139 Ok(value)
10140 }
10141 }
10142 const VARIANTS: &[&str] = &["path",
10143 "reset",
10144 "other"];
10145 deserializer.deserialize_struct("ListSharedLinksError", VARIANTS, EnumVisitor)
10146 }
10147}
10148
10149impl ::serde::ser::Serialize for ListSharedLinksError {
10150 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10151 use serde::ser::SerializeStruct;
10153 match self {
10154 ListSharedLinksError::Path(x) => {
10155 let mut s = serializer.serialize_struct("ListSharedLinksError", 2)?;
10157 s.serialize_field(".tag", "path")?;
10158 s.serialize_field("path", x)?;
10159 s.end()
10160 }
10161 ListSharedLinksError::Reset => {
10162 let mut s = serializer.serialize_struct("ListSharedLinksError", 1)?;
10164 s.serialize_field(".tag", "reset")?;
10165 s.end()
10166 }
10167 ListSharedLinksError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
10168 }
10169 }
10170}
10171
10172impl ::std::error::Error for ListSharedLinksError {
10173 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
10174 match self {
10175 ListSharedLinksError::Path(inner) => Some(inner),
10176 _ => None,
10177 }
10178 }
10179}
10180
10181impl ::std::fmt::Display for ListSharedLinksError {
10182 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10183 match self {
10184 ListSharedLinksError::Path(inner) => write!(f, "ListSharedLinksError: {}", inner),
10185 _ => write!(f, "{:?}", *self),
10186 }
10187 }
10188}
10189
10190#[derive(Debug, Clone, PartialEq, Eq)]
10191#[non_exhaustive] pub struct ListSharedLinksResult {
10193 pub links: Vec<SharedLinkMetadata>,
10195 pub has_more: bool,
10198 pub cursor: Option<String>,
10201}
10202
10203impl ListSharedLinksResult {
10204 pub fn new(links: Vec<SharedLinkMetadata>, has_more: bool) -> Self {
10205 ListSharedLinksResult {
10206 links,
10207 has_more,
10208 cursor: None,
10209 }
10210 }
10211
10212 pub fn with_cursor(mut self, value: String) -> Self {
10213 self.cursor = Some(value);
10214 self
10215 }
10216}
10217
10218const LIST_SHARED_LINKS_RESULT_FIELDS: &[&str] = &["links",
10219 "has_more",
10220 "cursor"];
10221impl ListSharedLinksResult {
10222 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10223 map: V,
10224 ) -> Result<ListSharedLinksResult, V::Error> {
10225 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
10226 }
10227
10228 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
10229 mut map: V,
10230 optional: bool,
10231 ) -> Result<Option<ListSharedLinksResult>, V::Error> {
10232 let mut field_links = None;
10233 let mut field_has_more = None;
10234 let mut field_cursor = None;
10235 let mut nothing = true;
10236 while let Some(key) = map.next_key::<&str>()? {
10237 nothing = false;
10238 match key {
10239 "links" => {
10240 if field_links.is_some() {
10241 return Err(::serde::de::Error::duplicate_field("links"));
10242 }
10243 field_links = Some(map.next_value()?);
10244 }
10245 "has_more" => {
10246 if field_has_more.is_some() {
10247 return Err(::serde::de::Error::duplicate_field("has_more"));
10248 }
10249 field_has_more = Some(map.next_value()?);
10250 }
10251 "cursor" => {
10252 if field_cursor.is_some() {
10253 return Err(::serde::de::Error::duplicate_field("cursor"));
10254 }
10255 field_cursor = Some(map.next_value()?);
10256 }
10257 _ => {
10258 map.next_value::<::serde_json::Value>()?;
10260 }
10261 }
10262 }
10263 if optional && nothing {
10264 return Ok(None);
10265 }
10266 let result = ListSharedLinksResult {
10267 links: field_links.ok_or_else(|| ::serde::de::Error::missing_field("links"))?,
10268 has_more: field_has_more.ok_or_else(|| ::serde::de::Error::missing_field("has_more"))?,
10269 cursor: field_cursor.and_then(Option::flatten),
10270 };
10271 Ok(Some(result))
10272 }
10273
10274 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10275 &self,
10276 s: &mut S::SerializeStruct,
10277 ) -> Result<(), S::Error> {
10278 use serde::ser::SerializeStruct;
10279 s.serialize_field("links", &self.links)?;
10280 s.serialize_field("has_more", &self.has_more)?;
10281 if let Some(val) = &self.cursor {
10282 s.serialize_field("cursor", val)?;
10283 }
10284 Ok(())
10285 }
10286}
10287
10288impl<'de> ::serde::de::Deserialize<'de> for ListSharedLinksResult {
10289 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10290 use serde::de::{MapAccess, Visitor};
10292 struct StructVisitor;
10293 impl<'de> Visitor<'de> for StructVisitor {
10294 type Value = ListSharedLinksResult;
10295 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10296 f.write_str("a ListSharedLinksResult struct")
10297 }
10298 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10299 ListSharedLinksResult::internal_deserialize(map)
10300 }
10301 }
10302 deserializer.deserialize_struct("ListSharedLinksResult", LIST_SHARED_LINKS_RESULT_FIELDS, StructVisitor)
10303 }
10304}
10305
10306impl ::serde::ser::Serialize for ListSharedLinksResult {
10307 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10308 use serde::ser::SerializeStruct;
10310 let mut s = serializer.serialize_struct("ListSharedLinksResult", 3)?;
10311 self.internal_serialize::<S>(&mut s)?;
10312 s.end()
10313 }
10314}
10315
10316#[derive(Debug, Clone, PartialEq, Eq, Default)]
10318#[non_exhaustive] pub struct MemberAccessLevelResult {
10320 pub access_level: Option<AccessLevel>,
10322 pub warning: Option<String>,
10325 pub access_details: Option<Vec<ParentFolderAccessInfo>>,
10328}
10329
10330impl MemberAccessLevelResult {
10331 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
10332 self.access_level = Some(value);
10333 self
10334 }
10335
10336 pub fn with_warning(mut self, value: String) -> Self {
10337 self.warning = Some(value);
10338 self
10339 }
10340
10341 pub fn with_access_details(mut self, value: Vec<ParentFolderAccessInfo>) -> Self {
10342 self.access_details = Some(value);
10343 self
10344 }
10345}
10346
10347const MEMBER_ACCESS_LEVEL_RESULT_FIELDS: &[&str] = &["access_level",
10348 "warning",
10349 "access_details"];
10350impl MemberAccessLevelResult {
10351 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10353 mut map: V,
10354 ) -> Result<MemberAccessLevelResult, V::Error> {
10355 let mut field_access_level = None;
10356 let mut field_warning = None;
10357 let mut field_access_details = None;
10358 while let Some(key) = map.next_key::<&str>()? {
10359 match key {
10360 "access_level" => {
10361 if field_access_level.is_some() {
10362 return Err(::serde::de::Error::duplicate_field("access_level"));
10363 }
10364 field_access_level = Some(map.next_value()?);
10365 }
10366 "warning" => {
10367 if field_warning.is_some() {
10368 return Err(::serde::de::Error::duplicate_field("warning"));
10369 }
10370 field_warning = Some(map.next_value()?);
10371 }
10372 "access_details" => {
10373 if field_access_details.is_some() {
10374 return Err(::serde::de::Error::duplicate_field("access_details"));
10375 }
10376 field_access_details = Some(map.next_value()?);
10377 }
10378 _ => {
10379 map.next_value::<::serde_json::Value>()?;
10381 }
10382 }
10383 }
10384 let result = MemberAccessLevelResult {
10385 access_level: field_access_level.and_then(Option::flatten),
10386 warning: field_warning.and_then(Option::flatten),
10387 access_details: field_access_details.and_then(Option::flatten),
10388 };
10389 Ok(result)
10390 }
10391
10392 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10393 &self,
10394 s: &mut S::SerializeStruct,
10395 ) -> Result<(), S::Error> {
10396 use serde::ser::SerializeStruct;
10397 if let Some(val) = &self.access_level {
10398 s.serialize_field("access_level", val)?;
10399 }
10400 if let Some(val) = &self.warning {
10401 s.serialize_field("warning", val)?;
10402 }
10403 if let Some(val) = &self.access_details {
10404 s.serialize_field("access_details", val)?;
10405 }
10406 Ok(())
10407 }
10408}
10409
10410impl<'de> ::serde::de::Deserialize<'de> for MemberAccessLevelResult {
10411 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10412 use serde::de::{MapAccess, Visitor};
10414 struct StructVisitor;
10415 impl<'de> Visitor<'de> for StructVisitor {
10416 type Value = MemberAccessLevelResult;
10417 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10418 f.write_str("a MemberAccessLevelResult struct")
10419 }
10420 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10421 MemberAccessLevelResult::internal_deserialize(map)
10422 }
10423 }
10424 deserializer.deserialize_struct("MemberAccessLevelResult", MEMBER_ACCESS_LEVEL_RESULT_FIELDS, StructVisitor)
10425 }
10426}
10427
10428impl ::serde::ser::Serialize for MemberAccessLevelResult {
10429 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10430 use serde::ser::SerializeStruct;
10432 let mut s = serializer.serialize_struct("MemberAccessLevelResult", 3)?;
10433 self.internal_serialize::<S>(&mut s)?;
10434 s.end()
10435 }
10436}
10437
10438#[derive(Debug, Clone, PartialEq, Eq)]
10440#[non_exhaustive] pub enum MemberAction {
10442 LeaveACopy,
10444 MakeEditor,
10446 MakeOwner,
10448 MakeViewer,
10450 MakeViewerNoComment,
10452 Remove,
10454 Other,
10457}
10458
10459impl<'de> ::serde::de::Deserialize<'de> for MemberAction {
10460 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10461 use serde::de::{self, MapAccess, Visitor};
10463 struct EnumVisitor;
10464 impl<'de> Visitor<'de> for EnumVisitor {
10465 type Value = MemberAction;
10466 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10467 f.write_str("a MemberAction structure")
10468 }
10469 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
10470 let tag: &str = match map.next_key()? {
10471 Some(".tag") => map.next_value()?,
10472 _ => return Err(de::Error::missing_field(".tag"))
10473 };
10474 let value = match tag {
10475 "leave_a_copy" => MemberAction::LeaveACopy,
10476 "make_editor" => MemberAction::MakeEditor,
10477 "make_owner" => MemberAction::MakeOwner,
10478 "make_viewer" => MemberAction::MakeViewer,
10479 "make_viewer_no_comment" => MemberAction::MakeViewerNoComment,
10480 "remove" => MemberAction::Remove,
10481 _ => MemberAction::Other,
10482 };
10483 crate::eat_json_fields(&mut map)?;
10484 Ok(value)
10485 }
10486 }
10487 const VARIANTS: &[&str] = &["leave_a_copy",
10488 "make_editor",
10489 "make_owner",
10490 "make_viewer",
10491 "make_viewer_no_comment",
10492 "remove",
10493 "other"];
10494 deserializer.deserialize_struct("MemberAction", VARIANTS, EnumVisitor)
10495 }
10496}
10497
10498impl ::serde::ser::Serialize for MemberAction {
10499 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10500 use serde::ser::SerializeStruct;
10502 match self {
10503 MemberAction::LeaveACopy => {
10504 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10506 s.serialize_field(".tag", "leave_a_copy")?;
10507 s.end()
10508 }
10509 MemberAction::MakeEditor => {
10510 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10512 s.serialize_field(".tag", "make_editor")?;
10513 s.end()
10514 }
10515 MemberAction::MakeOwner => {
10516 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10518 s.serialize_field(".tag", "make_owner")?;
10519 s.end()
10520 }
10521 MemberAction::MakeViewer => {
10522 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10524 s.serialize_field(".tag", "make_viewer")?;
10525 s.end()
10526 }
10527 MemberAction::MakeViewerNoComment => {
10528 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10530 s.serialize_field(".tag", "make_viewer_no_comment")?;
10531 s.end()
10532 }
10533 MemberAction::Remove => {
10534 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10536 s.serialize_field(".tag", "remove")?;
10537 s.end()
10538 }
10539 MemberAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
10540 }
10541 }
10542}
10543
10544#[derive(Debug, Clone, PartialEq, Eq)]
10546#[non_exhaustive] pub struct MemberPermission {
10548 pub action: MemberAction,
10550 pub allow: bool,
10552 pub reason: Option<PermissionDeniedReason>,
10554}
10555
10556impl MemberPermission {
10557 pub fn new(action: MemberAction, allow: bool) -> Self {
10558 MemberPermission {
10559 action,
10560 allow,
10561 reason: None,
10562 }
10563 }
10564
10565 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
10566 self.reason = Some(value);
10567 self
10568 }
10569}
10570
10571const MEMBER_PERMISSION_FIELDS: &[&str] = &["action",
10572 "allow",
10573 "reason"];
10574impl MemberPermission {
10575 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10576 map: V,
10577 ) -> Result<MemberPermission, V::Error> {
10578 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
10579 }
10580
10581 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
10582 mut map: V,
10583 optional: bool,
10584 ) -> Result<Option<MemberPermission>, V::Error> {
10585 let mut field_action = None;
10586 let mut field_allow = None;
10587 let mut field_reason = None;
10588 let mut nothing = true;
10589 while let Some(key) = map.next_key::<&str>()? {
10590 nothing = false;
10591 match key {
10592 "action" => {
10593 if field_action.is_some() {
10594 return Err(::serde::de::Error::duplicate_field("action"));
10595 }
10596 field_action = Some(map.next_value()?);
10597 }
10598 "allow" => {
10599 if field_allow.is_some() {
10600 return Err(::serde::de::Error::duplicate_field("allow"));
10601 }
10602 field_allow = Some(map.next_value()?);
10603 }
10604 "reason" => {
10605 if field_reason.is_some() {
10606 return Err(::serde::de::Error::duplicate_field("reason"));
10607 }
10608 field_reason = Some(map.next_value()?);
10609 }
10610 _ => {
10611 map.next_value::<::serde_json::Value>()?;
10613 }
10614 }
10615 }
10616 if optional && nothing {
10617 return Ok(None);
10618 }
10619 let result = MemberPermission {
10620 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
10621 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
10622 reason: field_reason.and_then(Option::flatten),
10623 };
10624 Ok(Some(result))
10625 }
10626
10627 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10628 &self,
10629 s: &mut S::SerializeStruct,
10630 ) -> Result<(), S::Error> {
10631 use serde::ser::SerializeStruct;
10632 s.serialize_field("action", &self.action)?;
10633 s.serialize_field("allow", &self.allow)?;
10634 if let Some(val) = &self.reason {
10635 s.serialize_field("reason", val)?;
10636 }
10637 Ok(())
10638 }
10639}
10640
10641impl<'de> ::serde::de::Deserialize<'de> for MemberPermission {
10642 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10643 use serde::de::{MapAccess, Visitor};
10645 struct StructVisitor;
10646 impl<'de> Visitor<'de> for StructVisitor {
10647 type Value = MemberPermission;
10648 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10649 f.write_str("a MemberPermission struct")
10650 }
10651 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10652 MemberPermission::internal_deserialize(map)
10653 }
10654 }
10655 deserializer.deserialize_struct("MemberPermission", MEMBER_PERMISSION_FIELDS, StructVisitor)
10656 }
10657}
10658
10659impl ::serde::ser::Serialize for MemberPermission {
10660 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10661 use serde::ser::SerializeStruct;
10663 let mut s = serializer.serialize_struct("MemberPermission", 3)?;
10664 self.internal_serialize::<S>(&mut s)?;
10665 s.end()
10666 }
10667}
10668
10669#[derive(Debug, Clone, PartialEq, Eq)]
10672#[non_exhaustive] pub enum MemberPolicy {
10674 Team,
10676 Anyone,
10678 Other,
10681}
10682
10683impl<'de> ::serde::de::Deserialize<'de> for MemberPolicy {
10684 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10685 use serde::de::{self, MapAccess, Visitor};
10687 struct EnumVisitor;
10688 impl<'de> Visitor<'de> for EnumVisitor {
10689 type Value = MemberPolicy;
10690 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10691 f.write_str("a MemberPolicy structure")
10692 }
10693 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
10694 let tag: &str = match map.next_key()? {
10695 Some(".tag") => map.next_value()?,
10696 _ => return Err(de::Error::missing_field(".tag"))
10697 };
10698 let value = match tag {
10699 "team" => MemberPolicy::Team,
10700 "anyone" => MemberPolicy::Anyone,
10701 _ => MemberPolicy::Other,
10702 };
10703 crate::eat_json_fields(&mut map)?;
10704 Ok(value)
10705 }
10706 }
10707 const VARIANTS: &[&str] = &["team",
10708 "anyone",
10709 "other"];
10710 deserializer.deserialize_struct("MemberPolicy", VARIANTS, EnumVisitor)
10711 }
10712}
10713
10714impl ::serde::ser::Serialize for MemberPolicy {
10715 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10716 use serde::ser::SerializeStruct;
10718 match self {
10719 MemberPolicy::Team => {
10720 let mut s = serializer.serialize_struct("MemberPolicy", 1)?;
10722 s.serialize_field(".tag", "team")?;
10723 s.end()
10724 }
10725 MemberPolicy::Anyone => {
10726 let mut s = serializer.serialize_struct("MemberPolicy", 1)?;
10728 s.serialize_field(".tag", "anyone")?;
10729 s.end()
10730 }
10731 MemberPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
10732 }
10733 }
10734}
10735
10736#[derive(Debug, Clone, PartialEq, Eq)]
10738#[non_exhaustive] pub enum MemberSelector {
10740 DropboxId(DropboxId),
10742 Email(crate::types::common::EmailAddress),
10744 Other,
10747}
10748
10749impl<'de> ::serde::de::Deserialize<'de> for MemberSelector {
10750 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10751 use serde::de::{self, MapAccess, Visitor};
10753 struct EnumVisitor;
10754 impl<'de> Visitor<'de> for EnumVisitor {
10755 type Value = MemberSelector;
10756 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10757 f.write_str("a MemberSelector structure")
10758 }
10759 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
10760 let tag: &str = match map.next_key()? {
10761 Some(".tag") => map.next_value()?,
10762 _ => return Err(de::Error::missing_field(".tag"))
10763 };
10764 let value = match tag {
10765 "dropbox_id" => {
10766 match map.next_key()? {
10767 Some("dropbox_id") => MemberSelector::DropboxId(map.next_value()?),
10768 None => return Err(de::Error::missing_field("dropbox_id")),
10769 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
10770 }
10771 }
10772 "email" => {
10773 match map.next_key()? {
10774 Some("email") => MemberSelector::Email(map.next_value()?),
10775 None => return Err(de::Error::missing_field("email")),
10776 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
10777 }
10778 }
10779 _ => MemberSelector::Other,
10780 };
10781 crate::eat_json_fields(&mut map)?;
10782 Ok(value)
10783 }
10784 }
10785 const VARIANTS: &[&str] = &["dropbox_id",
10786 "email",
10787 "other"];
10788 deserializer.deserialize_struct("MemberSelector", VARIANTS, EnumVisitor)
10789 }
10790}
10791
10792impl ::serde::ser::Serialize for MemberSelector {
10793 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10794 use serde::ser::SerializeStruct;
10796 match self {
10797 MemberSelector::DropboxId(x) => {
10798 let mut s = serializer.serialize_struct("MemberSelector", 2)?;
10800 s.serialize_field(".tag", "dropbox_id")?;
10801 s.serialize_field("dropbox_id", x)?;
10802 s.end()
10803 }
10804 MemberSelector::Email(x) => {
10805 let mut s = serializer.serialize_struct("MemberSelector", 2)?;
10807 s.serialize_field(".tag", "email")?;
10808 s.serialize_field("email", x)?;
10809 s.end()
10810 }
10811 MemberSelector::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
10812 }
10813 }
10814}
10815
10816#[derive(Debug, Clone, PartialEq, Eq)]
10818#[non_exhaustive] pub struct MembershipInfo {
10820 pub access_type: AccessLevel,
10823 pub permissions: Option<Vec<MemberPermission>>,
10826 pub initials: Option<String>,
10828 pub is_inherited: bool,
10830}
10831
10832impl MembershipInfo {
10833 pub fn new(access_type: AccessLevel) -> Self {
10834 MembershipInfo {
10835 access_type,
10836 permissions: None,
10837 initials: None,
10838 is_inherited: false,
10839 }
10840 }
10841
10842 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
10843 self.permissions = Some(value);
10844 self
10845 }
10846
10847 pub fn with_initials(mut self, value: String) -> Self {
10848 self.initials = Some(value);
10849 self
10850 }
10851
10852 pub fn with_is_inherited(mut self, value: bool) -> Self {
10853 self.is_inherited = value;
10854 self
10855 }
10856}
10857
10858const MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
10859 "permissions",
10860 "initials",
10861 "is_inherited"];
10862impl MembershipInfo {
10863 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10864 map: V,
10865 ) -> Result<MembershipInfo, V::Error> {
10866 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
10867 }
10868
10869 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
10870 mut map: V,
10871 optional: bool,
10872 ) -> Result<Option<MembershipInfo>, V::Error> {
10873 let mut field_access_type = None;
10874 let mut field_permissions = None;
10875 let mut field_initials = None;
10876 let mut field_is_inherited = None;
10877 let mut nothing = true;
10878 while let Some(key) = map.next_key::<&str>()? {
10879 nothing = false;
10880 match key {
10881 "access_type" => {
10882 if field_access_type.is_some() {
10883 return Err(::serde::de::Error::duplicate_field("access_type"));
10884 }
10885 field_access_type = Some(map.next_value()?);
10886 }
10887 "permissions" => {
10888 if field_permissions.is_some() {
10889 return Err(::serde::de::Error::duplicate_field("permissions"));
10890 }
10891 field_permissions = Some(map.next_value()?);
10892 }
10893 "initials" => {
10894 if field_initials.is_some() {
10895 return Err(::serde::de::Error::duplicate_field("initials"));
10896 }
10897 field_initials = Some(map.next_value()?);
10898 }
10899 "is_inherited" => {
10900 if field_is_inherited.is_some() {
10901 return Err(::serde::de::Error::duplicate_field("is_inherited"));
10902 }
10903 field_is_inherited = Some(map.next_value()?);
10904 }
10905 _ => {
10906 map.next_value::<::serde_json::Value>()?;
10908 }
10909 }
10910 }
10911 if optional && nothing {
10912 return Ok(None);
10913 }
10914 let result = MembershipInfo {
10915 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
10916 permissions: field_permissions.and_then(Option::flatten),
10917 initials: field_initials.and_then(Option::flatten),
10918 is_inherited: field_is_inherited.unwrap_or(false),
10919 };
10920 Ok(Some(result))
10921 }
10922
10923 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10924 &self,
10925 s: &mut S::SerializeStruct,
10926 ) -> Result<(), S::Error> {
10927 use serde::ser::SerializeStruct;
10928 s.serialize_field("access_type", &self.access_type)?;
10929 if let Some(val) = &self.permissions {
10930 s.serialize_field("permissions", val)?;
10931 }
10932 if let Some(val) = &self.initials {
10933 s.serialize_field("initials", val)?;
10934 }
10935 if self.is_inherited {
10936 s.serialize_field("is_inherited", &self.is_inherited)?;
10937 }
10938 Ok(())
10939 }
10940}
10941
10942impl<'de> ::serde::de::Deserialize<'de> for MembershipInfo {
10943 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10944 use serde::de::{MapAccess, Visitor};
10946 struct StructVisitor;
10947 impl<'de> Visitor<'de> for StructVisitor {
10948 type Value = MembershipInfo;
10949 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10950 f.write_str("a MembershipInfo struct")
10951 }
10952 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10953 MembershipInfo::internal_deserialize(map)
10954 }
10955 }
10956 deserializer.deserialize_struct("MembershipInfo", MEMBERSHIP_INFO_FIELDS, StructVisitor)
10957 }
10958}
10959
10960impl ::serde::ser::Serialize for MembershipInfo {
10961 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10962 use serde::ser::SerializeStruct;
10964 let mut s = serializer.serialize_struct("MembershipInfo", 4)?;
10965 self.internal_serialize::<S>(&mut s)?;
10966 s.end()
10967 }
10968}
10969
10970#[derive(Debug, Clone, PartialEq, Eq)]
10971#[non_exhaustive] pub struct ModifySharedLinkSettingsArgs {
10973 pub url: String,
10975 pub settings: SharedLinkSettings,
10977 pub remove_expiration: bool,
10979}
10980
10981impl ModifySharedLinkSettingsArgs {
10982 pub fn new(url: String, settings: SharedLinkSettings) -> Self {
10983 ModifySharedLinkSettingsArgs {
10984 url,
10985 settings,
10986 remove_expiration: false,
10987 }
10988 }
10989
10990 pub fn with_remove_expiration(mut self, value: bool) -> Self {
10991 self.remove_expiration = value;
10992 self
10993 }
10994}
10995
10996const MODIFY_SHARED_LINK_SETTINGS_ARGS_FIELDS: &[&str] = &["url",
10997 "settings",
10998 "remove_expiration"];
10999impl ModifySharedLinkSettingsArgs {
11000 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11001 map: V,
11002 ) -> Result<ModifySharedLinkSettingsArgs, V::Error> {
11003 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11004 }
11005
11006 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11007 mut map: V,
11008 optional: bool,
11009 ) -> Result<Option<ModifySharedLinkSettingsArgs>, V::Error> {
11010 let mut field_url = None;
11011 let mut field_settings = None;
11012 let mut field_remove_expiration = None;
11013 let mut nothing = true;
11014 while let Some(key) = map.next_key::<&str>()? {
11015 nothing = false;
11016 match key {
11017 "url" => {
11018 if field_url.is_some() {
11019 return Err(::serde::de::Error::duplicate_field("url"));
11020 }
11021 field_url = Some(map.next_value()?);
11022 }
11023 "settings" => {
11024 if field_settings.is_some() {
11025 return Err(::serde::de::Error::duplicate_field("settings"));
11026 }
11027 field_settings = Some(map.next_value()?);
11028 }
11029 "remove_expiration" => {
11030 if field_remove_expiration.is_some() {
11031 return Err(::serde::de::Error::duplicate_field("remove_expiration"));
11032 }
11033 field_remove_expiration = Some(map.next_value()?);
11034 }
11035 _ => {
11036 map.next_value::<::serde_json::Value>()?;
11038 }
11039 }
11040 }
11041 if optional && nothing {
11042 return Ok(None);
11043 }
11044 let result = ModifySharedLinkSettingsArgs {
11045 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
11046 settings: field_settings.ok_or_else(|| ::serde::de::Error::missing_field("settings"))?,
11047 remove_expiration: field_remove_expiration.unwrap_or(false),
11048 };
11049 Ok(Some(result))
11050 }
11051
11052 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11053 &self,
11054 s: &mut S::SerializeStruct,
11055 ) -> Result<(), S::Error> {
11056 use serde::ser::SerializeStruct;
11057 s.serialize_field("url", &self.url)?;
11058 s.serialize_field("settings", &self.settings)?;
11059 if self.remove_expiration {
11060 s.serialize_field("remove_expiration", &self.remove_expiration)?;
11061 }
11062 Ok(())
11063 }
11064}
11065
11066impl<'de> ::serde::de::Deserialize<'de> for ModifySharedLinkSettingsArgs {
11067 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11068 use serde::de::{MapAccess, Visitor};
11070 struct StructVisitor;
11071 impl<'de> Visitor<'de> for StructVisitor {
11072 type Value = ModifySharedLinkSettingsArgs;
11073 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11074 f.write_str("a ModifySharedLinkSettingsArgs struct")
11075 }
11076 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11077 ModifySharedLinkSettingsArgs::internal_deserialize(map)
11078 }
11079 }
11080 deserializer.deserialize_struct("ModifySharedLinkSettingsArgs", MODIFY_SHARED_LINK_SETTINGS_ARGS_FIELDS, StructVisitor)
11081 }
11082}
11083
11084impl ::serde::ser::Serialize for ModifySharedLinkSettingsArgs {
11085 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11086 use serde::ser::SerializeStruct;
11088 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsArgs", 3)?;
11089 self.internal_serialize::<S>(&mut s)?;
11090 s.end()
11091 }
11092}
11093
11094#[derive(Debug, Clone, PartialEq, Eq)]
11095#[non_exhaustive] pub enum ModifySharedLinkSettingsError {
11097 SharedLinkNotFound,
11099 SharedLinkAccessDenied,
11101 UnsupportedLinkType,
11103 SettingsError(SharedLinkSettingsError),
11105 EmailNotVerified,
11109 Other,
11112}
11113
11114impl<'de> ::serde::de::Deserialize<'de> for ModifySharedLinkSettingsError {
11115 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11116 use serde::de::{self, MapAccess, Visitor};
11118 struct EnumVisitor;
11119 impl<'de> Visitor<'de> for EnumVisitor {
11120 type Value = ModifySharedLinkSettingsError;
11121 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11122 f.write_str("a ModifySharedLinkSettingsError structure")
11123 }
11124 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11125 let tag: &str = match map.next_key()? {
11126 Some(".tag") => map.next_value()?,
11127 _ => return Err(de::Error::missing_field(".tag"))
11128 };
11129 let value = match tag {
11130 "shared_link_not_found" => ModifySharedLinkSettingsError::SharedLinkNotFound,
11131 "shared_link_access_denied" => ModifySharedLinkSettingsError::SharedLinkAccessDenied,
11132 "unsupported_link_type" => ModifySharedLinkSettingsError::UnsupportedLinkType,
11133 "settings_error" => {
11134 match map.next_key()? {
11135 Some("settings_error") => ModifySharedLinkSettingsError::SettingsError(map.next_value()?),
11136 None => return Err(de::Error::missing_field("settings_error")),
11137 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
11138 }
11139 }
11140 "email_not_verified" => ModifySharedLinkSettingsError::EmailNotVerified,
11141 _ => ModifySharedLinkSettingsError::Other,
11142 };
11143 crate::eat_json_fields(&mut map)?;
11144 Ok(value)
11145 }
11146 }
11147 const VARIANTS: &[&str] = &["shared_link_not_found",
11148 "shared_link_access_denied",
11149 "unsupported_link_type",
11150 "other",
11151 "settings_error",
11152 "email_not_verified"];
11153 deserializer.deserialize_struct("ModifySharedLinkSettingsError", VARIANTS, EnumVisitor)
11154 }
11155}
11156
11157impl ::serde::ser::Serialize for ModifySharedLinkSettingsError {
11158 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11159 use serde::ser::SerializeStruct;
11161 match self {
11162 ModifySharedLinkSettingsError::SharedLinkNotFound => {
11163 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11165 s.serialize_field(".tag", "shared_link_not_found")?;
11166 s.end()
11167 }
11168 ModifySharedLinkSettingsError::SharedLinkAccessDenied => {
11169 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11171 s.serialize_field(".tag", "shared_link_access_denied")?;
11172 s.end()
11173 }
11174 ModifySharedLinkSettingsError::UnsupportedLinkType => {
11175 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11177 s.serialize_field(".tag", "unsupported_link_type")?;
11178 s.end()
11179 }
11180 ModifySharedLinkSettingsError::SettingsError(x) => {
11181 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 2)?;
11183 s.serialize_field(".tag", "settings_error")?;
11184 s.serialize_field("settings_error", x)?;
11185 s.end()
11186 }
11187 ModifySharedLinkSettingsError::EmailNotVerified => {
11188 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11190 s.serialize_field(".tag", "email_not_verified")?;
11191 s.end()
11192 }
11193 ModifySharedLinkSettingsError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
11194 }
11195 }
11196}
11197
11198impl ::std::error::Error for ModifySharedLinkSettingsError {
11199 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
11200 match self {
11201 ModifySharedLinkSettingsError::SettingsError(inner) => Some(inner),
11202 _ => None,
11203 }
11204 }
11205}
11206
11207impl ::std::fmt::Display for ModifySharedLinkSettingsError {
11208 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11209 match self {
11210 ModifySharedLinkSettingsError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
11211 ModifySharedLinkSettingsError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
11212 ModifySharedLinkSettingsError::SettingsError(inner) => write!(f, "There is an error with the given settings: {}", inner),
11213 _ => write!(f, "{:?}", *self),
11214 }
11215 }
11216}
11217
11218impl From<SharedLinkError> for ModifySharedLinkSettingsError {
11220 fn from(parent: SharedLinkError) -> Self {
11221 match parent {
11222 SharedLinkError::SharedLinkNotFound => ModifySharedLinkSettingsError::SharedLinkNotFound,
11223 SharedLinkError::SharedLinkAccessDenied => ModifySharedLinkSettingsError::SharedLinkAccessDenied,
11224 SharedLinkError::UnsupportedLinkType => ModifySharedLinkSettingsError::UnsupportedLinkType,
11225 SharedLinkError::Other => ModifySharedLinkSettingsError::Other,
11226 }
11227 }
11228}
11229#[derive(Debug, Clone, PartialEq, Eq)]
11230#[non_exhaustive] pub struct MountFolderArg {
11232 pub shared_folder_id: crate::types::common::SharedFolderId,
11234}
11235
11236impl MountFolderArg {
11237 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
11238 MountFolderArg {
11239 shared_folder_id,
11240 }
11241 }
11242}
11243
11244const MOUNT_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id"];
11245impl MountFolderArg {
11246 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11247 map: V,
11248 ) -> Result<MountFolderArg, V::Error> {
11249 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11250 }
11251
11252 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11253 mut map: V,
11254 optional: bool,
11255 ) -> Result<Option<MountFolderArg>, V::Error> {
11256 let mut field_shared_folder_id = None;
11257 let mut nothing = true;
11258 while let Some(key) = map.next_key::<&str>()? {
11259 nothing = false;
11260 match key {
11261 "shared_folder_id" => {
11262 if field_shared_folder_id.is_some() {
11263 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
11264 }
11265 field_shared_folder_id = Some(map.next_value()?);
11266 }
11267 _ => {
11268 map.next_value::<::serde_json::Value>()?;
11270 }
11271 }
11272 }
11273 if optional && nothing {
11274 return Ok(None);
11275 }
11276 let result = MountFolderArg {
11277 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
11278 };
11279 Ok(Some(result))
11280 }
11281
11282 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11283 &self,
11284 s: &mut S::SerializeStruct,
11285 ) -> Result<(), S::Error> {
11286 use serde::ser::SerializeStruct;
11287 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
11288 Ok(())
11289 }
11290}
11291
11292impl<'de> ::serde::de::Deserialize<'de> for MountFolderArg {
11293 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11294 use serde::de::{MapAccess, Visitor};
11296 struct StructVisitor;
11297 impl<'de> Visitor<'de> for StructVisitor {
11298 type Value = MountFolderArg;
11299 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11300 f.write_str("a MountFolderArg struct")
11301 }
11302 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11303 MountFolderArg::internal_deserialize(map)
11304 }
11305 }
11306 deserializer.deserialize_struct("MountFolderArg", MOUNT_FOLDER_ARG_FIELDS, StructVisitor)
11307 }
11308}
11309
11310impl ::serde::ser::Serialize for MountFolderArg {
11311 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11312 use serde::ser::SerializeStruct;
11314 let mut s = serializer.serialize_struct("MountFolderArg", 1)?;
11315 self.internal_serialize::<S>(&mut s)?;
11316 s.end()
11317 }
11318}
11319
11320#[derive(Debug, Clone, PartialEq, Eq)]
11321#[non_exhaustive] pub enum MountFolderError {
11323 AccessError(SharedFolderAccessError),
11324 InsideSharedFolder,
11326 InsufficientQuota(InsufficientQuotaAmounts),
11328 AlreadyMounted,
11330 NoPermission,
11332 NotMountable,
11335 Other,
11338}
11339
11340impl<'de> ::serde::de::Deserialize<'de> for MountFolderError {
11341 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11342 use serde::de::{self, MapAccess, Visitor};
11344 struct EnumVisitor;
11345 impl<'de> Visitor<'de> for EnumVisitor {
11346 type Value = MountFolderError;
11347 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11348 f.write_str("a MountFolderError structure")
11349 }
11350 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11351 let tag: &str = match map.next_key()? {
11352 Some(".tag") => map.next_value()?,
11353 _ => return Err(de::Error::missing_field(".tag"))
11354 };
11355 let value = match tag {
11356 "access_error" => {
11357 match map.next_key()? {
11358 Some("access_error") => MountFolderError::AccessError(map.next_value()?),
11359 None => return Err(de::Error::missing_field("access_error")),
11360 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
11361 }
11362 }
11363 "inside_shared_folder" => MountFolderError::InsideSharedFolder,
11364 "insufficient_quota" => MountFolderError::InsufficientQuota(InsufficientQuotaAmounts::internal_deserialize(&mut map)?),
11365 "already_mounted" => MountFolderError::AlreadyMounted,
11366 "no_permission" => MountFolderError::NoPermission,
11367 "not_mountable" => MountFolderError::NotMountable,
11368 _ => MountFolderError::Other,
11369 };
11370 crate::eat_json_fields(&mut map)?;
11371 Ok(value)
11372 }
11373 }
11374 const VARIANTS: &[&str] = &["access_error",
11375 "inside_shared_folder",
11376 "insufficient_quota",
11377 "already_mounted",
11378 "no_permission",
11379 "not_mountable",
11380 "other"];
11381 deserializer.deserialize_struct("MountFolderError", VARIANTS, EnumVisitor)
11382 }
11383}
11384
11385impl ::serde::ser::Serialize for MountFolderError {
11386 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11387 use serde::ser::SerializeStruct;
11389 match self {
11390 MountFolderError::AccessError(x) => {
11391 let mut s = serializer.serialize_struct("MountFolderError", 2)?;
11393 s.serialize_field(".tag", "access_error")?;
11394 s.serialize_field("access_error", x)?;
11395 s.end()
11396 }
11397 MountFolderError::InsideSharedFolder => {
11398 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11400 s.serialize_field(".tag", "inside_shared_folder")?;
11401 s.end()
11402 }
11403 MountFolderError::InsufficientQuota(x) => {
11404 let mut s = serializer.serialize_struct("MountFolderError", 4)?;
11406 s.serialize_field(".tag", "insufficient_quota")?;
11407 x.internal_serialize::<S>(&mut s)?;
11408 s.end()
11409 }
11410 MountFolderError::AlreadyMounted => {
11411 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11413 s.serialize_field(".tag", "already_mounted")?;
11414 s.end()
11415 }
11416 MountFolderError::NoPermission => {
11417 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11419 s.serialize_field(".tag", "no_permission")?;
11420 s.end()
11421 }
11422 MountFolderError::NotMountable => {
11423 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11425 s.serialize_field(".tag", "not_mountable")?;
11426 s.end()
11427 }
11428 MountFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
11429 }
11430 }
11431}
11432
11433impl ::std::error::Error for MountFolderError {
11434 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
11435 match self {
11436 MountFolderError::AccessError(inner) => Some(inner),
11437 _ => None,
11438 }
11439 }
11440}
11441
11442impl ::std::fmt::Display for MountFolderError {
11443 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11444 match self {
11445 MountFolderError::AccessError(inner) => write!(f, "MountFolderError: {}", inner),
11446 MountFolderError::InsideSharedFolder => f.write_str("Mounting would cause a shared folder to be inside another, which is disallowed."),
11447 MountFolderError::InsufficientQuota(inner) => write!(f, "The current user does not have enough space to mount the shared folder: {:?}", inner),
11448 MountFolderError::AlreadyMounted => f.write_str("The shared folder is already mounted."),
11449 MountFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
11450 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."),
11451 _ => write!(f, "{:?}", *self),
11452 }
11453 }
11454}
11455
11456#[derive(Debug, Clone, PartialEq, Eq)]
11458#[non_exhaustive] pub struct ParentFolderAccessInfo {
11460 pub folder_name: String,
11462 pub shared_folder_id: crate::types::common::SharedFolderId,
11464 pub permissions: Vec<MemberPermission>,
11466 pub path: String,
11468}
11469
11470impl ParentFolderAccessInfo {
11471 pub fn new(
11472 folder_name: String,
11473 shared_folder_id: crate::types::common::SharedFolderId,
11474 permissions: Vec<MemberPermission>,
11475 path: String,
11476 ) -> Self {
11477 ParentFolderAccessInfo {
11478 folder_name,
11479 shared_folder_id,
11480 permissions,
11481 path,
11482 }
11483 }
11484}
11485
11486const PARENT_FOLDER_ACCESS_INFO_FIELDS: &[&str] = &["folder_name",
11487 "shared_folder_id",
11488 "permissions",
11489 "path"];
11490impl ParentFolderAccessInfo {
11491 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11492 map: V,
11493 ) -> Result<ParentFolderAccessInfo, V::Error> {
11494 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11495 }
11496
11497 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11498 mut map: V,
11499 optional: bool,
11500 ) -> Result<Option<ParentFolderAccessInfo>, V::Error> {
11501 let mut field_folder_name = None;
11502 let mut field_shared_folder_id = None;
11503 let mut field_permissions = None;
11504 let mut field_path = None;
11505 let mut nothing = true;
11506 while let Some(key) = map.next_key::<&str>()? {
11507 nothing = false;
11508 match key {
11509 "folder_name" => {
11510 if field_folder_name.is_some() {
11511 return Err(::serde::de::Error::duplicate_field("folder_name"));
11512 }
11513 field_folder_name = Some(map.next_value()?);
11514 }
11515 "shared_folder_id" => {
11516 if field_shared_folder_id.is_some() {
11517 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
11518 }
11519 field_shared_folder_id = Some(map.next_value()?);
11520 }
11521 "permissions" => {
11522 if field_permissions.is_some() {
11523 return Err(::serde::de::Error::duplicate_field("permissions"));
11524 }
11525 field_permissions = Some(map.next_value()?);
11526 }
11527 "path" => {
11528 if field_path.is_some() {
11529 return Err(::serde::de::Error::duplicate_field("path"));
11530 }
11531 field_path = Some(map.next_value()?);
11532 }
11533 _ => {
11534 map.next_value::<::serde_json::Value>()?;
11536 }
11537 }
11538 }
11539 if optional && nothing {
11540 return Ok(None);
11541 }
11542 let result = ParentFolderAccessInfo {
11543 folder_name: field_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("folder_name"))?,
11544 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
11545 permissions: field_permissions.ok_or_else(|| ::serde::de::Error::missing_field("permissions"))?,
11546 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
11547 };
11548 Ok(Some(result))
11549 }
11550
11551 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11552 &self,
11553 s: &mut S::SerializeStruct,
11554 ) -> Result<(), S::Error> {
11555 use serde::ser::SerializeStruct;
11556 s.serialize_field("folder_name", &self.folder_name)?;
11557 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
11558 s.serialize_field("permissions", &self.permissions)?;
11559 s.serialize_field("path", &self.path)?;
11560 Ok(())
11561 }
11562}
11563
11564impl<'de> ::serde::de::Deserialize<'de> for ParentFolderAccessInfo {
11565 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11566 use serde::de::{MapAccess, Visitor};
11568 struct StructVisitor;
11569 impl<'de> Visitor<'de> for StructVisitor {
11570 type Value = ParentFolderAccessInfo;
11571 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11572 f.write_str("a ParentFolderAccessInfo struct")
11573 }
11574 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11575 ParentFolderAccessInfo::internal_deserialize(map)
11576 }
11577 }
11578 deserializer.deserialize_struct("ParentFolderAccessInfo", PARENT_FOLDER_ACCESS_INFO_FIELDS, StructVisitor)
11579 }
11580}
11581
11582impl ::serde::ser::Serialize for ParentFolderAccessInfo {
11583 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11584 use serde::ser::SerializeStruct;
11586 let mut s = serializer.serialize_struct("ParentFolderAccessInfo", 4)?;
11587 self.internal_serialize::<S>(&mut s)?;
11588 s.end()
11589 }
11590}
11591
11592#[derive(Debug, Clone, PartialEq, Eq)]
11594#[non_exhaustive] pub struct PathLinkMetadata {
11596 pub url: String,
11598 pub visibility: Visibility,
11600 pub path: String,
11602 pub expires: Option<crate::types::common::DropboxTimestamp>,
11604}
11605
11606impl PathLinkMetadata {
11607 pub fn new(url: String, visibility: Visibility, path: String) -> Self {
11608 PathLinkMetadata {
11609 url,
11610 visibility,
11611 path,
11612 expires: None,
11613 }
11614 }
11615
11616 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
11617 self.expires = Some(value);
11618 self
11619 }
11620}
11621
11622const PATH_LINK_METADATA_FIELDS: &[&str] = &["url",
11623 "visibility",
11624 "path",
11625 "expires"];
11626impl PathLinkMetadata {
11627 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11628 map: V,
11629 ) -> Result<PathLinkMetadata, V::Error> {
11630 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11631 }
11632
11633 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11634 mut map: V,
11635 optional: bool,
11636 ) -> Result<Option<PathLinkMetadata>, V::Error> {
11637 let mut field_url = None;
11638 let mut field_visibility = None;
11639 let mut field_path = None;
11640 let mut field_expires = None;
11641 let mut nothing = true;
11642 while let Some(key) = map.next_key::<&str>()? {
11643 nothing = false;
11644 match key {
11645 "url" => {
11646 if field_url.is_some() {
11647 return Err(::serde::de::Error::duplicate_field("url"));
11648 }
11649 field_url = Some(map.next_value()?);
11650 }
11651 "visibility" => {
11652 if field_visibility.is_some() {
11653 return Err(::serde::de::Error::duplicate_field("visibility"));
11654 }
11655 field_visibility = Some(map.next_value()?);
11656 }
11657 "path" => {
11658 if field_path.is_some() {
11659 return Err(::serde::de::Error::duplicate_field("path"));
11660 }
11661 field_path = Some(map.next_value()?);
11662 }
11663 "expires" => {
11664 if field_expires.is_some() {
11665 return Err(::serde::de::Error::duplicate_field("expires"));
11666 }
11667 field_expires = Some(map.next_value()?);
11668 }
11669 _ => {
11670 map.next_value::<::serde_json::Value>()?;
11672 }
11673 }
11674 }
11675 if optional && nothing {
11676 return Ok(None);
11677 }
11678 let result = PathLinkMetadata {
11679 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
11680 visibility: field_visibility.ok_or_else(|| ::serde::de::Error::missing_field("visibility"))?,
11681 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
11682 expires: field_expires.and_then(Option::flatten),
11683 };
11684 Ok(Some(result))
11685 }
11686
11687 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11688 &self,
11689 s: &mut S::SerializeStruct,
11690 ) -> Result<(), S::Error> {
11691 use serde::ser::SerializeStruct;
11692 s.serialize_field("url", &self.url)?;
11693 s.serialize_field("visibility", &self.visibility)?;
11694 s.serialize_field("path", &self.path)?;
11695 if let Some(val) = &self.expires {
11696 s.serialize_field("expires", val)?;
11697 }
11698 Ok(())
11699 }
11700}
11701
11702impl<'de> ::serde::de::Deserialize<'de> for PathLinkMetadata {
11703 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11704 use serde::de::{MapAccess, Visitor};
11706 struct StructVisitor;
11707 impl<'de> Visitor<'de> for StructVisitor {
11708 type Value = PathLinkMetadata;
11709 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11710 f.write_str("a PathLinkMetadata struct")
11711 }
11712 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11713 PathLinkMetadata::internal_deserialize(map)
11714 }
11715 }
11716 deserializer.deserialize_struct("PathLinkMetadata", PATH_LINK_METADATA_FIELDS, StructVisitor)
11717 }
11718}
11719
11720impl ::serde::ser::Serialize for PathLinkMetadata {
11721 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11722 use serde::ser::SerializeStruct;
11724 let mut s = serializer.serialize_struct("PathLinkMetadata", 4)?;
11725 self.internal_serialize::<S>(&mut s)?;
11726 s.end()
11727 }
11728}
11729
11730impl From<PathLinkMetadata> for LinkMetadata {
11732 fn from(subtype: PathLinkMetadata) -> Self {
11733 LinkMetadata::Path(subtype)
11734 }
11735}
11736#[derive(Debug, Clone, PartialEq, Eq)]
11738pub enum PendingUploadMode {
11739 File,
11741 Folder,
11743}
11744
11745impl<'de> ::serde::de::Deserialize<'de> for PendingUploadMode {
11746 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11747 use serde::de::{self, MapAccess, Visitor};
11749 struct EnumVisitor;
11750 impl<'de> Visitor<'de> for EnumVisitor {
11751 type Value = PendingUploadMode;
11752 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11753 f.write_str("a PendingUploadMode structure")
11754 }
11755 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11756 let tag: &str = match map.next_key()? {
11757 Some(".tag") => map.next_value()?,
11758 _ => return Err(de::Error::missing_field(".tag"))
11759 };
11760 let value = match tag {
11761 "file" => PendingUploadMode::File,
11762 "folder" => PendingUploadMode::Folder,
11763 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
11764 };
11765 crate::eat_json_fields(&mut map)?;
11766 Ok(value)
11767 }
11768 }
11769 const VARIANTS: &[&str] = &["file",
11770 "folder"];
11771 deserializer.deserialize_struct("PendingUploadMode", VARIANTS, EnumVisitor)
11772 }
11773}
11774
11775impl ::serde::ser::Serialize for PendingUploadMode {
11776 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11777 use serde::ser::SerializeStruct;
11779 match self {
11780 PendingUploadMode::File => {
11781 let mut s = serializer.serialize_struct("PendingUploadMode", 1)?;
11783 s.serialize_field(".tag", "file")?;
11784 s.end()
11785 }
11786 PendingUploadMode::Folder => {
11787 let mut s = serializer.serialize_struct("PendingUploadMode", 1)?;
11789 s.serialize_field(".tag", "folder")?;
11790 s.end()
11791 }
11792 }
11793 }
11794}
11795
11796#[derive(Debug, Clone, PartialEq, Eq)]
11798#[non_exhaustive] pub enum PermissionDeniedReason {
11800 UserNotSameTeamAsOwner,
11802 UserNotAllowedByOwner,
11804 TargetIsIndirectMember,
11806 TargetIsOwner,
11808 TargetIsSelf,
11810 TargetNotActive,
11812 FolderIsLimitedTeamFolder,
11814 OwnerNotOnTeam,
11816 PermissionDenied,
11818 RestrictedByTeam,
11820 UserAccountType,
11822 UserNotOnTeam,
11824 FolderIsInsideSharedFolder,
11826 RestrictedByParentFolder,
11828 InsufficientPlan(InsufficientPlan),
11829 Other,
11832}
11833
11834impl<'de> ::serde::de::Deserialize<'de> for PermissionDeniedReason {
11835 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11836 use serde::de::{self, MapAccess, Visitor};
11838 struct EnumVisitor;
11839 impl<'de> Visitor<'de> for EnumVisitor {
11840 type Value = PermissionDeniedReason;
11841 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11842 f.write_str("a PermissionDeniedReason structure")
11843 }
11844 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11845 let tag: &str = match map.next_key()? {
11846 Some(".tag") => map.next_value()?,
11847 _ => return Err(de::Error::missing_field(".tag"))
11848 };
11849 let value = match tag {
11850 "user_not_same_team_as_owner" => PermissionDeniedReason::UserNotSameTeamAsOwner,
11851 "user_not_allowed_by_owner" => PermissionDeniedReason::UserNotAllowedByOwner,
11852 "target_is_indirect_member" => PermissionDeniedReason::TargetIsIndirectMember,
11853 "target_is_owner" => PermissionDeniedReason::TargetIsOwner,
11854 "target_is_self" => PermissionDeniedReason::TargetIsSelf,
11855 "target_not_active" => PermissionDeniedReason::TargetNotActive,
11856 "folder_is_limited_team_folder" => PermissionDeniedReason::FolderIsLimitedTeamFolder,
11857 "owner_not_on_team" => PermissionDeniedReason::OwnerNotOnTeam,
11858 "permission_denied" => PermissionDeniedReason::PermissionDenied,
11859 "restricted_by_team" => PermissionDeniedReason::RestrictedByTeam,
11860 "user_account_type" => PermissionDeniedReason::UserAccountType,
11861 "user_not_on_team" => PermissionDeniedReason::UserNotOnTeam,
11862 "folder_is_inside_shared_folder" => PermissionDeniedReason::FolderIsInsideSharedFolder,
11863 "restricted_by_parent_folder" => PermissionDeniedReason::RestrictedByParentFolder,
11864 "insufficient_plan" => PermissionDeniedReason::InsufficientPlan(InsufficientPlan::internal_deserialize(&mut map)?),
11865 _ => PermissionDeniedReason::Other,
11866 };
11867 crate::eat_json_fields(&mut map)?;
11868 Ok(value)
11869 }
11870 }
11871 const VARIANTS: &[&str] = &["user_not_same_team_as_owner",
11872 "user_not_allowed_by_owner",
11873 "target_is_indirect_member",
11874 "target_is_owner",
11875 "target_is_self",
11876 "target_not_active",
11877 "folder_is_limited_team_folder",
11878 "owner_not_on_team",
11879 "permission_denied",
11880 "restricted_by_team",
11881 "user_account_type",
11882 "user_not_on_team",
11883 "folder_is_inside_shared_folder",
11884 "restricted_by_parent_folder",
11885 "insufficient_plan",
11886 "other"];
11887 deserializer.deserialize_struct("PermissionDeniedReason", VARIANTS, EnumVisitor)
11888 }
11889}
11890
11891impl ::serde::ser::Serialize for PermissionDeniedReason {
11892 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11893 use serde::ser::SerializeStruct;
11895 match self {
11896 PermissionDeniedReason::UserNotSameTeamAsOwner => {
11897 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11899 s.serialize_field(".tag", "user_not_same_team_as_owner")?;
11900 s.end()
11901 }
11902 PermissionDeniedReason::UserNotAllowedByOwner => {
11903 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11905 s.serialize_field(".tag", "user_not_allowed_by_owner")?;
11906 s.end()
11907 }
11908 PermissionDeniedReason::TargetIsIndirectMember => {
11909 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11911 s.serialize_field(".tag", "target_is_indirect_member")?;
11912 s.end()
11913 }
11914 PermissionDeniedReason::TargetIsOwner => {
11915 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11917 s.serialize_field(".tag", "target_is_owner")?;
11918 s.end()
11919 }
11920 PermissionDeniedReason::TargetIsSelf => {
11921 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11923 s.serialize_field(".tag", "target_is_self")?;
11924 s.end()
11925 }
11926 PermissionDeniedReason::TargetNotActive => {
11927 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11929 s.serialize_field(".tag", "target_not_active")?;
11930 s.end()
11931 }
11932 PermissionDeniedReason::FolderIsLimitedTeamFolder => {
11933 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11935 s.serialize_field(".tag", "folder_is_limited_team_folder")?;
11936 s.end()
11937 }
11938 PermissionDeniedReason::OwnerNotOnTeam => {
11939 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11941 s.serialize_field(".tag", "owner_not_on_team")?;
11942 s.end()
11943 }
11944 PermissionDeniedReason::PermissionDenied => {
11945 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11947 s.serialize_field(".tag", "permission_denied")?;
11948 s.end()
11949 }
11950 PermissionDeniedReason::RestrictedByTeam => {
11951 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11953 s.serialize_field(".tag", "restricted_by_team")?;
11954 s.end()
11955 }
11956 PermissionDeniedReason::UserAccountType => {
11957 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11959 s.serialize_field(".tag", "user_account_type")?;
11960 s.end()
11961 }
11962 PermissionDeniedReason::UserNotOnTeam => {
11963 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11965 s.serialize_field(".tag", "user_not_on_team")?;
11966 s.end()
11967 }
11968 PermissionDeniedReason::FolderIsInsideSharedFolder => {
11969 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11971 s.serialize_field(".tag", "folder_is_inside_shared_folder")?;
11972 s.end()
11973 }
11974 PermissionDeniedReason::RestrictedByParentFolder => {
11975 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
11977 s.serialize_field(".tag", "restricted_by_parent_folder")?;
11978 s.end()
11979 }
11980 PermissionDeniedReason::InsufficientPlan(x) => {
11981 let mut s = serializer.serialize_struct("PermissionDeniedReason", 3)?;
11983 s.serialize_field(".tag", "insufficient_plan")?;
11984 x.internal_serialize::<S>(&mut s)?;
11985 s.end()
11986 }
11987 PermissionDeniedReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
11988 }
11989 }
11990}
11991
11992#[derive(Debug, Clone, PartialEq, Eq)]
11993#[non_exhaustive] pub struct RelinquishFileMembershipArg {
11995 pub file: PathOrId,
11997}
11998
11999impl RelinquishFileMembershipArg {
12000 pub fn new(file: PathOrId) -> Self {
12001 RelinquishFileMembershipArg {
12002 file,
12003 }
12004 }
12005}
12006
12007const RELINQUISH_FILE_MEMBERSHIP_ARG_FIELDS: &[&str] = &["file"];
12008impl RelinquishFileMembershipArg {
12009 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12010 map: V,
12011 ) -> Result<RelinquishFileMembershipArg, V::Error> {
12012 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
12013 }
12014
12015 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
12016 mut map: V,
12017 optional: bool,
12018 ) -> Result<Option<RelinquishFileMembershipArg>, V::Error> {
12019 let mut field_file = None;
12020 let mut nothing = true;
12021 while let Some(key) = map.next_key::<&str>()? {
12022 nothing = false;
12023 match key {
12024 "file" => {
12025 if field_file.is_some() {
12026 return Err(::serde::de::Error::duplicate_field("file"));
12027 }
12028 field_file = Some(map.next_value()?);
12029 }
12030 _ => {
12031 map.next_value::<::serde_json::Value>()?;
12033 }
12034 }
12035 }
12036 if optional && nothing {
12037 return Ok(None);
12038 }
12039 let result = RelinquishFileMembershipArg {
12040 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
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("file", &self.file)?;
12051 Ok(())
12052 }
12053}
12054
12055impl<'de> ::serde::de::Deserialize<'de> for RelinquishFileMembershipArg {
12056 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12057 use serde::de::{MapAccess, Visitor};
12059 struct StructVisitor;
12060 impl<'de> Visitor<'de> for StructVisitor {
12061 type Value = RelinquishFileMembershipArg;
12062 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12063 f.write_str("a RelinquishFileMembershipArg struct")
12064 }
12065 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12066 RelinquishFileMembershipArg::internal_deserialize(map)
12067 }
12068 }
12069 deserializer.deserialize_struct("RelinquishFileMembershipArg", RELINQUISH_FILE_MEMBERSHIP_ARG_FIELDS, StructVisitor)
12070 }
12071}
12072
12073impl ::serde::ser::Serialize for RelinquishFileMembershipArg {
12074 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12075 use serde::ser::SerializeStruct;
12077 let mut s = serializer.serialize_struct("RelinquishFileMembershipArg", 1)?;
12078 self.internal_serialize::<S>(&mut s)?;
12079 s.end()
12080 }
12081}
12082
12083#[derive(Debug, Clone, PartialEq, Eq)]
12084#[non_exhaustive] pub enum RelinquishFileMembershipError {
12086 AccessError(SharingFileAccessError),
12087 GroupAccess,
12090 NoPermission,
12092 Other,
12095}
12096
12097impl<'de> ::serde::de::Deserialize<'de> for RelinquishFileMembershipError {
12098 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12099 use serde::de::{self, MapAccess, Visitor};
12101 struct EnumVisitor;
12102 impl<'de> Visitor<'de> for EnumVisitor {
12103 type Value = RelinquishFileMembershipError;
12104 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12105 f.write_str("a RelinquishFileMembershipError structure")
12106 }
12107 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12108 let tag: &str = match map.next_key()? {
12109 Some(".tag") => map.next_value()?,
12110 _ => return Err(de::Error::missing_field(".tag"))
12111 };
12112 let value = match tag {
12113 "access_error" => {
12114 match map.next_key()? {
12115 Some("access_error") => RelinquishFileMembershipError::AccessError(map.next_value()?),
12116 None => return Err(de::Error::missing_field("access_error")),
12117 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
12118 }
12119 }
12120 "group_access" => RelinquishFileMembershipError::GroupAccess,
12121 "no_permission" => RelinquishFileMembershipError::NoPermission,
12122 _ => RelinquishFileMembershipError::Other,
12123 };
12124 crate::eat_json_fields(&mut map)?;
12125 Ok(value)
12126 }
12127 }
12128 const VARIANTS: &[&str] = &["access_error",
12129 "group_access",
12130 "no_permission",
12131 "other"];
12132 deserializer.deserialize_struct("RelinquishFileMembershipError", VARIANTS, EnumVisitor)
12133 }
12134}
12135
12136impl ::serde::ser::Serialize for RelinquishFileMembershipError {
12137 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12138 use serde::ser::SerializeStruct;
12140 match self {
12141 RelinquishFileMembershipError::AccessError(x) => {
12142 let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 2)?;
12144 s.serialize_field(".tag", "access_error")?;
12145 s.serialize_field("access_error", x)?;
12146 s.end()
12147 }
12148 RelinquishFileMembershipError::GroupAccess => {
12149 let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 1)?;
12151 s.serialize_field(".tag", "group_access")?;
12152 s.end()
12153 }
12154 RelinquishFileMembershipError::NoPermission => {
12155 let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 1)?;
12157 s.serialize_field(".tag", "no_permission")?;
12158 s.end()
12159 }
12160 RelinquishFileMembershipError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
12161 }
12162 }
12163}
12164
12165impl ::std::error::Error for RelinquishFileMembershipError {
12166 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
12167 match self {
12168 RelinquishFileMembershipError::AccessError(inner) => Some(inner),
12169 _ => None,
12170 }
12171 }
12172}
12173
12174impl ::std::fmt::Display for RelinquishFileMembershipError {
12175 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12176 match self {
12177 RelinquishFileMembershipError::AccessError(inner) => write!(f, "RelinquishFileMembershipError: {}", inner),
12178 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."),
12179 RelinquishFileMembershipError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
12180 _ => write!(f, "{:?}", *self),
12181 }
12182 }
12183}
12184
12185#[derive(Debug, Clone, PartialEq, Eq)]
12186#[non_exhaustive] pub struct RelinquishFolderMembershipArg {
12188 pub shared_folder_id: crate::types::common::SharedFolderId,
12190 pub leave_a_copy: bool,
12193}
12194
12195impl RelinquishFolderMembershipArg {
12196 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
12197 RelinquishFolderMembershipArg {
12198 shared_folder_id,
12199 leave_a_copy: false,
12200 }
12201 }
12202
12203 pub fn with_leave_a_copy(mut self, value: bool) -> Self {
12204 self.leave_a_copy = value;
12205 self
12206 }
12207}
12208
12209const RELINQUISH_FOLDER_MEMBERSHIP_ARG_FIELDS: &[&str] = &["shared_folder_id",
12210 "leave_a_copy"];
12211impl RelinquishFolderMembershipArg {
12212 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12213 map: V,
12214 ) -> Result<RelinquishFolderMembershipArg, V::Error> {
12215 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
12216 }
12217
12218 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
12219 mut map: V,
12220 optional: bool,
12221 ) -> Result<Option<RelinquishFolderMembershipArg>, V::Error> {
12222 let mut field_shared_folder_id = None;
12223 let mut field_leave_a_copy = None;
12224 let mut nothing = true;
12225 while let Some(key) = map.next_key::<&str>()? {
12226 nothing = false;
12227 match key {
12228 "shared_folder_id" => {
12229 if field_shared_folder_id.is_some() {
12230 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
12231 }
12232 field_shared_folder_id = Some(map.next_value()?);
12233 }
12234 "leave_a_copy" => {
12235 if field_leave_a_copy.is_some() {
12236 return Err(::serde::de::Error::duplicate_field("leave_a_copy"));
12237 }
12238 field_leave_a_copy = Some(map.next_value()?);
12239 }
12240 _ => {
12241 map.next_value::<::serde_json::Value>()?;
12243 }
12244 }
12245 }
12246 if optional && nothing {
12247 return Ok(None);
12248 }
12249 let result = RelinquishFolderMembershipArg {
12250 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
12251 leave_a_copy: field_leave_a_copy.unwrap_or(false),
12252 };
12253 Ok(Some(result))
12254 }
12255
12256 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
12257 &self,
12258 s: &mut S::SerializeStruct,
12259 ) -> Result<(), S::Error> {
12260 use serde::ser::SerializeStruct;
12261 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
12262 if self.leave_a_copy {
12263 s.serialize_field("leave_a_copy", &self.leave_a_copy)?;
12264 }
12265 Ok(())
12266 }
12267}
12268
12269impl<'de> ::serde::de::Deserialize<'de> for RelinquishFolderMembershipArg {
12270 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12271 use serde::de::{MapAccess, Visitor};
12273 struct StructVisitor;
12274 impl<'de> Visitor<'de> for StructVisitor {
12275 type Value = RelinquishFolderMembershipArg;
12276 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12277 f.write_str("a RelinquishFolderMembershipArg struct")
12278 }
12279 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12280 RelinquishFolderMembershipArg::internal_deserialize(map)
12281 }
12282 }
12283 deserializer.deserialize_struct("RelinquishFolderMembershipArg", RELINQUISH_FOLDER_MEMBERSHIP_ARG_FIELDS, StructVisitor)
12284 }
12285}
12286
12287impl ::serde::ser::Serialize for RelinquishFolderMembershipArg {
12288 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12289 use serde::ser::SerializeStruct;
12291 let mut s = serializer.serialize_struct("RelinquishFolderMembershipArg", 2)?;
12292 self.internal_serialize::<S>(&mut s)?;
12293 s.end()
12294 }
12295}
12296
12297#[derive(Debug, Clone, PartialEq, Eq)]
12298#[non_exhaustive] pub enum RelinquishFolderMembershipError {
12300 AccessError(SharedFolderAccessError),
12301 FolderOwner,
12304 Mounted,
12307 GroupAccess,
12310 TeamFolder,
12312 NoPermission,
12314 NoExplicitAccess,
12317 Other,
12320}
12321
12322impl<'de> ::serde::de::Deserialize<'de> for RelinquishFolderMembershipError {
12323 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12324 use serde::de::{self, MapAccess, Visitor};
12326 struct EnumVisitor;
12327 impl<'de> Visitor<'de> for EnumVisitor {
12328 type Value = RelinquishFolderMembershipError;
12329 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12330 f.write_str("a RelinquishFolderMembershipError structure")
12331 }
12332 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12333 let tag: &str = match map.next_key()? {
12334 Some(".tag") => map.next_value()?,
12335 _ => return Err(de::Error::missing_field(".tag"))
12336 };
12337 let value = match tag {
12338 "access_error" => {
12339 match map.next_key()? {
12340 Some("access_error") => RelinquishFolderMembershipError::AccessError(map.next_value()?),
12341 None => return Err(de::Error::missing_field("access_error")),
12342 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
12343 }
12344 }
12345 "folder_owner" => RelinquishFolderMembershipError::FolderOwner,
12346 "mounted" => RelinquishFolderMembershipError::Mounted,
12347 "group_access" => RelinquishFolderMembershipError::GroupAccess,
12348 "team_folder" => RelinquishFolderMembershipError::TeamFolder,
12349 "no_permission" => RelinquishFolderMembershipError::NoPermission,
12350 "no_explicit_access" => RelinquishFolderMembershipError::NoExplicitAccess,
12351 _ => RelinquishFolderMembershipError::Other,
12352 };
12353 crate::eat_json_fields(&mut map)?;
12354 Ok(value)
12355 }
12356 }
12357 const VARIANTS: &[&str] = &["access_error",
12358 "folder_owner",
12359 "mounted",
12360 "group_access",
12361 "team_folder",
12362 "no_permission",
12363 "no_explicit_access",
12364 "other"];
12365 deserializer.deserialize_struct("RelinquishFolderMembershipError", VARIANTS, EnumVisitor)
12366 }
12367}
12368
12369impl ::serde::ser::Serialize for RelinquishFolderMembershipError {
12370 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12371 use serde::ser::SerializeStruct;
12373 match self {
12374 RelinquishFolderMembershipError::AccessError(x) => {
12375 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 2)?;
12377 s.serialize_field(".tag", "access_error")?;
12378 s.serialize_field("access_error", x)?;
12379 s.end()
12380 }
12381 RelinquishFolderMembershipError::FolderOwner => {
12382 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
12384 s.serialize_field(".tag", "folder_owner")?;
12385 s.end()
12386 }
12387 RelinquishFolderMembershipError::Mounted => {
12388 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
12390 s.serialize_field(".tag", "mounted")?;
12391 s.end()
12392 }
12393 RelinquishFolderMembershipError::GroupAccess => {
12394 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
12396 s.serialize_field(".tag", "group_access")?;
12397 s.end()
12398 }
12399 RelinquishFolderMembershipError::TeamFolder => {
12400 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
12402 s.serialize_field(".tag", "team_folder")?;
12403 s.end()
12404 }
12405 RelinquishFolderMembershipError::NoPermission => {
12406 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
12408 s.serialize_field(".tag", "no_permission")?;
12409 s.end()
12410 }
12411 RelinquishFolderMembershipError::NoExplicitAccess => {
12412 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
12414 s.serialize_field(".tag", "no_explicit_access")?;
12415 s.end()
12416 }
12417 RelinquishFolderMembershipError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
12418 }
12419 }
12420}
12421
12422impl ::std::error::Error for RelinquishFolderMembershipError {
12423 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
12424 match self {
12425 RelinquishFolderMembershipError::AccessError(inner) => Some(inner),
12426 _ => None,
12427 }
12428 }
12429}
12430
12431impl ::std::fmt::Display for RelinquishFolderMembershipError {
12432 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12433 match self {
12434 RelinquishFolderMembershipError::AccessError(inner) => write!(f, "RelinquishFolderMembershipError: {}", inner),
12435 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."),
12436 RelinquishFolderMembershipError::Mounted => f.write_str("The shared folder is currently mounted. Unmount the shared folder before relinquishing membership."),
12437 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."),
12438 RelinquishFolderMembershipError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
12439 RelinquishFolderMembershipError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
12440 RelinquishFolderMembershipError::NoExplicitAccess => f.write_str("The current user only has inherited access to the shared folder. You can't relinquish inherited membership to folders."),
12441 _ => write!(f, "{:?}", *self),
12442 }
12443 }
12444}
12445
12446#[derive(Debug, Clone, PartialEq, Eq)]
12448#[non_exhaustive] pub struct RemoveFileMemberArg {
12450 pub file: PathOrId,
12452 pub member: MemberSelector,
12456}
12457
12458impl RemoveFileMemberArg {
12459 pub fn new(file: PathOrId, member: MemberSelector) -> Self {
12460 RemoveFileMemberArg {
12461 file,
12462 member,
12463 }
12464 }
12465}
12466
12467const REMOVE_FILE_MEMBER_ARG_FIELDS: &[&str] = &["file",
12468 "member"];
12469impl RemoveFileMemberArg {
12470 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12471 map: V,
12472 ) -> Result<RemoveFileMemberArg, V::Error> {
12473 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
12474 }
12475
12476 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
12477 mut map: V,
12478 optional: bool,
12479 ) -> Result<Option<RemoveFileMemberArg>, V::Error> {
12480 let mut field_file = None;
12481 let mut field_member = None;
12482 let mut nothing = true;
12483 while let Some(key) = map.next_key::<&str>()? {
12484 nothing = false;
12485 match key {
12486 "file" => {
12487 if field_file.is_some() {
12488 return Err(::serde::de::Error::duplicate_field("file"));
12489 }
12490 field_file = Some(map.next_value()?);
12491 }
12492 "member" => {
12493 if field_member.is_some() {
12494 return Err(::serde::de::Error::duplicate_field("member"));
12495 }
12496 field_member = Some(map.next_value()?);
12497 }
12498 _ => {
12499 map.next_value::<::serde_json::Value>()?;
12501 }
12502 }
12503 }
12504 if optional && nothing {
12505 return Ok(None);
12506 }
12507 let result = RemoveFileMemberArg {
12508 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
12509 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
12510 };
12511 Ok(Some(result))
12512 }
12513
12514 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
12515 &self,
12516 s: &mut S::SerializeStruct,
12517 ) -> Result<(), S::Error> {
12518 use serde::ser::SerializeStruct;
12519 s.serialize_field("file", &self.file)?;
12520 s.serialize_field("member", &self.member)?;
12521 Ok(())
12522 }
12523}
12524
12525impl<'de> ::serde::de::Deserialize<'de> for RemoveFileMemberArg {
12526 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12527 use serde::de::{MapAccess, Visitor};
12529 struct StructVisitor;
12530 impl<'de> Visitor<'de> for StructVisitor {
12531 type Value = RemoveFileMemberArg;
12532 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12533 f.write_str("a RemoveFileMemberArg struct")
12534 }
12535 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12536 RemoveFileMemberArg::internal_deserialize(map)
12537 }
12538 }
12539 deserializer.deserialize_struct("RemoveFileMemberArg", REMOVE_FILE_MEMBER_ARG_FIELDS, StructVisitor)
12540 }
12541}
12542
12543impl ::serde::ser::Serialize for RemoveFileMemberArg {
12544 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12545 use serde::ser::SerializeStruct;
12547 let mut s = serializer.serialize_struct("RemoveFileMemberArg", 2)?;
12548 self.internal_serialize::<S>(&mut s)?;
12549 s.end()
12550 }
12551}
12552
12553#[derive(Debug, Clone, PartialEq, Eq)]
12555#[non_exhaustive] pub enum RemoveFileMemberError {
12557 UserError(SharingUserError),
12558 AccessError(SharingFileAccessError),
12559 NoExplicitAccess(MemberAccessLevelResult),
12562 Other,
12565}
12566
12567impl<'de> ::serde::de::Deserialize<'de> for RemoveFileMemberError {
12568 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12569 use serde::de::{self, MapAccess, Visitor};
12571 struct EnumVisitor;
12572 impl<'de> Visitor<'de> for EnumVisitor {
12573 type Value = RemoveFileMemberError;
12574 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12575 f.write_str("a RemoveFileMemberError structure")
12576 }
12577 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12578 let tag: &str = match map.next_key()? {
12579 Some(".tag") => map.next_value()?,
12580 _ => return Err(de::Error::missing_field(".tag"))
12581 };
12582 let value = match tag {
12583 "user_error" => {
12584 match map.next_key()? {
12585 Some("user_error") => RemoveFileMemberError::UserError(map.next_value()?),
12586 None => return Err(de::Error::missing_field("user_error")),
12587 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
12588 }
12589 }
12590 "access_error" => {
12591 match map.next_key()? {
12592 Some("access_error") => RemoveFileMemberError::AccessError(map.next_value()?),
12593 None => return Err(de::Error::missing_field("access_error")),
12594 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
12595 }
12596 }
12597 "no_explicit_access" => RemoveFileMemberError::NoExplicitAccess(MemberAccessLevelResult::internal_deserialize(&mut map)?),
12598 _ => RemoveFileMemberError::Other,
12599 };
12600 crate::eat_json_fields(&mut map)?;
12601 Ok(value)
12602 }
12603 }
12604 const VARIANTS: &[&str] = &["user_error",
12605 "access_error",
12606 "no_explicit_access",
12607 "other"];
12608 deserializer.deserialize_struct("RemoveFileMemberError", VARIANTS, EnumVisitor)
12609 }
12610}
12611
12612impl ::serde::ser::Serialize for RemoveFileMemberError {
12613 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12614 use serde::ser::SerializeStruct;
12616 match self {
12617 RemoveFileMemberError::UserError(x) => {
12618 let mut s = serializer.serialize_struct("RemoveFileMemberError", 2)?;
12620 s.serialize_field(".tag", "user_error")?;
12621 s.serialize_field("user_error", x)?;
12622 s.end()
12623 }
12624 RemoveFileMemberError::AccessError(x) => {
12625 let mut s = serializer.serialize_struct("RemoveFileMemberError", 2)?;
12627 s.serialize_field(".tag", "access_error")?;
12628 s.serialize_field("access_error", x)?;
12629 s.end()
12630 }
12631 RemoveFileMemberError::NoExplicitAccess(x) => {
12632 let mut s = serializer.serialize_struct("RemoveFileMemberError", 4)?;
12634 s.serialize_field(".tag", "no_explicit_access")?;
12635 x.internal_serialize::<S>(&mut s)?;
12636 s.end()
12637 }
12638 RemoveFileMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
12639 }
12640 }
12641}
12642
12643impl ::std::error::Error for RemoveFileMemberError {
12644 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
12645 match self {
12646 RemoveFileMemberError::UserError(inner) => Some(inner),
12647 RemoveFileMemberError::AccessError(inner) => Some(inner),
12648 _ => None,
12649 }
12650 }
12651}
12652
12653impl ::std::fmt::Display for RemoveFileMemberError {
12654 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12655 match self {
12656 RemoveFileMemberError::UserError(inner) => write!(f, "RemoveFileMemberError: {}", inner),
12657 RemoveFileMemberError::AccessError(inner) => write!(f, "RemoveFileMemberError: {}", inner),
12658 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),
12659 _ => write!(f, "{:?}", *self),
12660 }
12661 }
12662}
12663
12664#[derive(Debug, Clone, PartialEq, Eq)]
12665#[non_exhaustive] pub struct RemoveFolderMemberArg {
12667 pub shared_folder_id: crate::types::common::SharedFolderId,
12669 pub member: MemberSelector,
12671 pub leave_a_copy: bool,
12675}
12676
12677impl RemoveFolderMemberArg {
12678 pub fn new(
12679 shared_folder_id: crate::types::common::SharedFolderId,
12680 member: MemberSelector,
12681 leave_a_copy: bool,
12682 ) -> Self {
12683 RemoveFolderMemberArg {
12684 shared_folder_id,
12685 member,
12686 leave_a_copy,
12687 }
12688 }
12689}
12690
12691const REMOVE_FOLDER_MEMBER_ARG_FIELDS: &[&str] = &["shared_folder_id",
12692 "member",
12693 "leave_a_copy"];
12694impl RemoveFolderMemberArg {
12695 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12696 map: V,
12697 ) -> Result<RemoveFolderMemberArg, V::Error> {
12698 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
12699 }
12700
12701 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
12702 mut map: V,
12703 optional: bool,
12704 ) -> Result<Option<RemoveFolderMemberArg>, V::Error> {
12705 let mut field_shared_folder_id = None;
12706 let mut field_member = None;
12707 let mut field_leave_a_copy = None;
12708 let mut nothing = true;
12709 while let Some(key) = map.next_key::<&str>()? {
12710 nothing = false;
12711 match key {
12712 "shared_folder_id" => {
12713 if field_shared_folder_id.is_some() {
12714 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
12715 }
12716 field_shared_folder_id = Some(map.next_value()?);
12717 }
12718 "member" => {
12719 if field_member.is_some() {
12720 return Err(::serde::de::Error::duplicate_field("member"));
12721 }
12722 field_member = Some(map.next_value()?);
12723 }
12724 "leave_a_copy" => {
12725 if field_leave_a_copy.is_some() {
12726 return Err(::serde::de::Error::duplicate_field("leave_a_copy"));
12727 }
12728 field_leave_a_copy = Some(map.next_value()?);
12729 }
12730 _ => {
12731 map.next_value::<::serde_json::Value>()?;
12733 }
12734 }
12735 }
12736 if optional && nothing {
12737 return Ok(None);
12738 }
12739 let result = RemoveFolderMemberArg {
12740 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
12741 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
12742 leave_a_copy: field_leave_a_copy.ok_or_else(|| ::serde::de::Error::missing_field("leave_a_copy"))?,
12743 };
12744 Ok(Some(result))
12745 }
12746
12747 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
12748 &self,
12749 s: &mut S::SerializeStruct,
12750 ) -> Result<(), S::Error> {
12751 use serde::ser::SerializeStruct;
12752 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
12753 s.serialize_field("member", &self.member)?;
12754 s.serialize_field("leave_a_copy", &self.leave_a_copy)?;
12755 Ok(())
12756 }
12757}
12758
12759impl<'de> ::serde::de::Deserialize<'de> for RemoveFolderMemberArg {
12760 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12761 use serde::de::{MapAccess, Visitor};
12763 struct StructVisitor;
12764 impl<'de> Visitor<'de> for StructVisitor {
12765 type Value = RemoveFolderMemberArg;
12766 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12767 f.write_str("a RemoveFolderMemberArg struct")
12768 }
12769 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12770 RemoveFolderMemberArg::internal_deserialize(map)
12771 }
12772 }
12773 deserializer.deserialize_struct("RemoveFolderMemberArg", REMOVE_FOLDER_MEMBER_ARG_FIELDS, StructVisitor)
12774 }
12775}
12776
12777impl ::serde::ser::Serialize for RemoveFolderMemberArg {
12778 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12779 use serde::ser::SerializeStruct;
12781 let mut s = serializer.serialize_struct("RemoveFolderMemberArg", 3)?;
12782 self.internal_serialize::<S>(&mut s)?;
12783 s.end()
12784 }
12785}
12786
12787#[derive(Debug, Clone, PartialEq, Eq)]
12788#[non_exhaustive] pub enum RemoveFolderMemberError {
12790 AccessError(SharedFolderAccessError),
12791 MemberError(SharedFolderMemberError),
12792 FolderOwner,
12795 GroupAccess,
12797 TeamFolder,
12799 NoPermission,
12801 TooManyFiles,
12804 Other,
12807}
12808
12809impl<'de> ::serde::de::Deserialize<'de> for RemoveFolderMemberError {
12810 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12811 use serde::de::{self, MapAccess, Visitor};
12813 struct EnumVisitor;
12814 impl<'de> Visitor<'de> for EnumVisitor {
12815 type Value = RemoveFolderMemberError;
12816 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12817 f.write_str("a RemoveFolderMemberError structure")
12818 }
12819 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12820 let tag: &str = match map.next_key()? {
12821 Some(".tag") => map.next_value()?,
12822 _ => return Err(de::Error::missing_field(".tag"))
12823 };
12824 let value = match tag {
12825 "access_error" => {
12826 match map.next_key()? {
12827 Some("access_error") => RemoveFolderMemberError::AccessError(map.next_value()?),
12828 None => return Err(de::Error::missing_field("access_error")),
12829 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
12830 }
12831 }
12832 "member_error" => {
12833 match map.next_key()? {
12834 Some("member_error") => RemoveFolderMemberError::MemberError(map.next_value()?),
12835 None => return Err(de::Error::missing_field("member_error")),
12836 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
12837 }
12838 }
12839 "folder_owner" => RemoveFolderMemberError::FolderOwner,
12840 "group_access" => RemoveFolderMemberError::GroupAccess,
12841 "team_folder" => RemoveFolderMemberError::TeamFolder,
12842 "no_permission" => RemoveFolderMemberError::NoPermission,
12843 "too_many_files" => RemoveFolderMemberError::TooManyFiles,
12844 _ => RemoveFolderMemberError::Other,
12845 };
12846 crate::eat_json_fields(&mut map)?;
12847 Ok(value)
12848 }
12849 }
12850 const VARIANTS: &[&str] = &["access_error",
12851 "member_error",
12852 "folder_owner",
12853 "group_access",
12854 "team_folder",
12855 "no_permission",
12856 "too_many_files",
12857 "other"];
12858 deserializer.deserialize_struct("RemoveFolderMemberError", VARIANTS, EnumVisitor)
12859 }
12860}
12861
12862impl ::serde::ser::Serialize for RemoveFolderMemberError {
12863 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12864 use serde::ser::SerializeStruct;
12866 match self {
12867 RemoveFolderMemberError::AccessError(x) => {
12868 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 2)?;
12870 s.serialize_field(".tag", "access_error")?;
12871 s.serialize_field("access_error", x)?;
12872 s.end()
12873 }
12874 RemoveFolderMemberError::MemberError(x) => {
12875 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 2)?;
12877 s.serialize_field(".tag", "member_error")?;
12878 s.serialize_field("member_error", x)?;
12879 s.end()
12880 }
12881 RemoveFolderMemberError::FolderOwner => {
12882 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
12884 s.serialize_field(".tag", "folder_owner")?;
12885 s.end()
12886 }
12887 RemoveFolderMemberError::GroupAccess => {
12888 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
12890 s.serialize_field(".tag", "group_access")?;
12891 s.end()
12892 }
12893 RemoveFolderMemberError::TeamFolder => {
12894 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
12896 s.serialize_field(".tag", "team_folder")?;
12897 s.end()
12898 }
12899 RemoveFolderMemberError::NoPermission => {
12900 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
12902 s.serialize_field(".tag", "no_permission")?;
12903 s.end()
12904 }
12905 RemoveFolderMemberError::TooManyFiles => {
12906 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
12908 s.serialize_field(".tag", "too_many_files")?;
12909 s.end()
12910 }
12911 RemoveFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
12912 }
12913 }
12914}
12915
12916impl ::std::error::Error for RemoveFolderMemberError {
12917 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
12918 match self {
12919 RemoveFolderMemberError::AccessError(inner) => Some(inner),
12920 RemoveFolderMemberError::MemberError(inner) => Some(inner),
12921 _ => None,
12922 }
12923 }
12924}
12925
12926impl ::std::fmt::Display for RemoveFolderMemberError {
12927 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12928 match self {
12929 RemoveFolderMemberError::AccessError(inner) => write!(f, "RemoveFolderMemberError: {}", inner),
12930 RemoveFolderMemberError::MemberError(inner) => write!(f, "RemoveFolderMemberError: {}", inner),
12931 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."),
12932 RemoveFolderMemberError::GroupAccess => f.write_str("The target user has access to the shared folder via a group."),
12933 RemoveFolderMemberError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
12934 RemoveFolderMemberError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
12935 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."),
12936 _ => write!(f, "{:?}", *self),
12937 }
12938 }
12939}
12940
12941#[derive(Debug, Clone, PartialEq, Eq)]
12942pub enum RemoveMemberJobStatus {
12943 InProgress,
12945 Complete(MemberAccessLevelResult),
12948 Failed(RemoveFolderMemberError),
12949}
12950
12951impl<'de> ::serde::de::Deserialize<'de> for RemoveMemberJobStatus {
12952 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12953 use serde::de::{self, MapAccess, Visitor};
12955 struct EnumVisitor;
12956 impl<'de> Visitor<'de> for EnumVisitor {
12957 type Value = RemoveMemberJobStatus;
12958 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12959 f.write_str("a RemoveMemberJobStatus structure")
12960 }
12961 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12962 let tag: &str = match map.next_key()? {
12963 Some(".tag") => map.next_value()?,
12964 _ => return Err(de::Error::missing_field(".tag"))
12965 };
12966 let value = match tag {
12967 "in_progress" => RemoveMemberJobStatus::InProgress,
12968 "complete" => RemoveMemberJobStatus::Complete(MemberAccessLevelResult::internal_deserialize(&mut map)?),
12969 "failed" => {
12970 match map.next_key()? {
12971 Some("failed") => RemoveMemberJobStatus::Failed(map.next_value()?),
12972 None => return Err(de::Error::missing_field("failed")),
12973 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
12974 }
12975 }
12976 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
12977 };
12978 crate::eat_json_fields(&mut map)?;
12979 Ok(value)
12980 }
12981 }
12982 const VARIANTS: &[&str] = &["in_progress",
12983 "complete",
12984 "failed"];
12985 deserializer.deserialize_struct("RemoveMemberJobStatus", VARIANTS, EnumVisitor)
12986 }
12987}
12988
12989impl ::serde::ser::Serialize for RemoveMemberJobStatus {
12990 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12991 use serde::ser::SerializeStruct;
12993 match self {
12994 RemoveMemberJobStatus::InProgress => {
12995 let mut s = serializer.serialize_struct("RemoveMemberJobStatus", 1)?;
12997 s.serialize_field(".tag", "in_progress")?;
12998 s.end()
12999 }
13000 RemoveMemberJobStatus::Complete(x) => {
13001 let mut s = serializer.serialize_struct("RemoveMemberJobStatus", 4)?;
13003 s.serialize_field(".tag", "complete")?;
13004 x.internal_serialize::<S>(&mut s)?;
13005 s.end()
13006 }
13007 RemoveMemberJobStatus::Failed(x) => {
13008 let mut s = serializer.serialize_struct("RemoveMemberJobStatus", 2)?;
13010 s.serialize_field(".tag", "failed")?;
13011 s.serialize_field("failed", x)?;
13012 s.end()
13013 }
13014 }
13015 }
13016}
13017
13018impl From<crate::types::dbx_async::PollResultBase> for RemoveMemberJobStatus {
13020 fn from(parent: crate::types::dbx_async::PollResultBase) -> Self {
13021 match parent {
13022 crate::types::dbx_async::PollResultBase::InProgress => RemoveMemberJobStatus::InProgress,
13023 }
13024 }
13025}
13026#[derive(Debug, Clone, PartialEq, Eq)]
13027#[non_exhaustive] pub enum RequestedLinkAccessLevel {
13029 Viewer,
13031 Editor,
13034 Max,
13036 Default,
13038 Other,
13041}
13042
13043impl<'de> ::serde::de::Deserialize<'de> for RequestedLinkAccessLevel {
13044 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13045 use serde::de::{self, MapAccess, Visitor};
13047 struct EnumVisitor;
13048 impl<'de> Visitor<'de> for EnumVisitor {
13049 type Value = RequestedLinkAccessLevel;
13050 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13051 f.write_str("a RequestedLinkAccessLevel structure")
13052 }
13053 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13054 let tag: &str = match map.next_key()? {
13055 Some(".tag") => map.next_value()?,
13056 _ => return Err(de::Error::missing_field(".tag"))
13057 };
13058 let value = match tag {
13059 "viewer" => RequestedLinkAccessLevel::Viewer,
13060 "editor" => RequestedLinkAccessLevel::Editor,
13061 "max" => RequestedLinkAccessLevel::Max,
13062 "default" => RequestedLinkAccessLevel::Default,
13063 _ => RequestedLinkAccessLevel::Other,
13064 };
13065 crate::eat_json_fields(&mut map)?;
13066 Ok(value)
13067 }
13068 }
13069 const VARIANTS: &[&str] = &["viewer",
13070 "editor",
13071 "max",
13072 "default",
13073 "other"];
13074 deserializer.deserialize_struct("RequestedLinkAccessLevel", VARIANTS, EnumVisitor)
13075 }
13076}
13077
13078impl ::serde::ser::Serialize for RequestedLinkAccessLevel {
13079 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13080 use serde::ser::SerializeStruct;
13082 match self {
13083 RequestedLinkAccessLevel::Viewer => {
13084 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13086 s.serialize_field(".tag", "viewer")?;
13087 s.end()
13088 }
13089 RequestedLinkAccessLevel::Editor => {
13090 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13092 s.serialize_field(".tag", "editor")?;
13093 s.end()
13094 }
13095 RequestedLinkAccessLevel::Max => {
13096 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13098 s.serialize_field(".tag", "max")?;
13099 s.end()
13100 }
13101 RequestedLinkAccessLevel::Default => {
13102 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13104 s.serialize_field(".tag", "default")?;
13105 s.end()
13106 }
13107 RequestedLinkAccessLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13108 }
13109 }
13110}
13111
13112#[derive(Debug, Clone, PartialEq, Eq)]
13117pub enum RequestedVisibility {
13118 Public,
13120 TeamOnly,
13122 Password,
13124}
13125
13126impl<'de> ::serde::de::Deserialize<'de> for RequestedVisibility {
13127 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13128 use serde::de::{self, MapAccess, Visitor};
13130 struct EnumVisitor;
13131 impl<'de> Visitor<'de> for EnumVisitor {
13132 type Value = RequestedVisibility;
13133 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13134 f.write_str("a RequestedVisibility structure")
13135 }
13136 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13137 let tag: &str = match map.next_key()? {
13138 Some(".tag") => map.next_value()?,
13139 _ => return Err(de::Error::missing_field(".tag"))
13140 };
13141 let value = match tag {
13142 "public" => RequestedVisibility::Public,
13143 "team_only" => RequestedVisibility::TeamOnly,
13144 "password" => RequestedVisibility::Password,
13145 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
13146 };
13147 crate::eat_json_fields(&mut map)?;
13148 Ok(value)
13149 }
13150 }
13151 const VARIANTS: &[&str] = &["public",
13152 "team_only",
13153 "password"];
13154 deserializer.deserialize_struct("RequestedVisibility", VARIANTS, EnumVisitor)
13155 }
13156}
13157
13158impl ::serde::ser::Serialize for RequestedVisibility {
13159 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13160 use serde::ser::SerializeStruct;
13162 match self {
13163 RequestedVisibility::Public => {
13164 let mut s = serializer.serialize_struct("RequestedVisibility", 1)?;
13166 s.serialize_field(".tag", "public")?;
13167 s.end()
13168 }
13169 RequestedVisibility::TeamOnly => {
13170 let mut s = serializer.serialize_struct("RequestedVisibility", 1)?;
13172 s.serialize_field(".tag", "team_only")?;
13173 s.end()
13174 }
13175 RequestedVisibility::Password => {
13176 let mut s = serializer.serialize_struct("RequestedVisibility", 1)?;
13178 s.serialize_field(".tag", "password")?;
13179 s.end()
13180 }
13181 }
13182 }
13183}
13184
13185#[derive(Debug, Clone, PartialEq, Eq)]
13189#[non_exhaustive] pub enum ResolvedVisibility {
13191 Public,
13193 TeamOnly,
13195 Password,
13197 TeamAndPassword,
13200 SharedFolderOnly,
13203 NoOne,
13207 OnlyYou,
13209 Other,
13212}
13213
13214impl<'de> ::serde::de::Deserialize<'de> for ResolvedVisibility {
13215 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13216 use serde::de::{self, MapAccess, Visitor};
13218 struct EnumVisitor;
13219 impl<'de> Visitor<'de> for EnumVisitor {
13220 type Value = ResolvedVisibility;
13221 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13222 f.write_str("a ResolvedVisibility structure")
13223 }
13224 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13225 let tag: &str = match map.next_key()? {
13226 Some(".tag") => map.next_value()?,
13227 _ => return Err(de::Error::missing_field(".tag"))
13228 };
13229 let value = match tag {
13230 "public" => ResolvedVisibility::Public,
13231 "team_only" => ResolvedVisibility::TeamOnly,
13232 "password" => ResolvedVisibility::Password,
13233 "team_and_password" => ResolvedVisibility::TeamAndPassword,
13234 "shared_folder_only" => ResolvedVisibility::SharedFolderOnly,
13235 "no_one" => ResolvedVisibility::NoOne,
13236 "only_you" => ResolvedVisibility::OnlyYou,
13237 _ => ResolvedVisibility::Other,
13238 };
13239 crate::eat_json_fields(&mut map)?;
13240 Ok(value)
13241 }
13242 }
13243 const VARIANTS: &[&str] = &["public",
13244 "team_only",
13245 "password",
13246 "team_and_password",
13247 "shared_folder_only",
13248 "no_one",
13249 "only_you",
13250 "other"];
13251 deserializer.deserialize_struct("ResolvedVisibility", VARIANTS, EnumVisitor)
13252 }
13253}
13254
13255impl ::serde::ser::Serialize for ResolvedVisibility {
13256 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13257 use serde::ser::SerializeStruct;
13259 match self {
13260 ResolvedVisibility::Public => {
13261 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13263 s.serialize_field(".tag", "public")?;
13264 s.end()
13265 }
13266 ResolvedVisibility::TeamOnly => {
13267 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13269 s.serialize_field(".tag", "team_only")?;
13270 s.end()
13271 }
13272 ResolvedVisibility::Password => {
13273 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13275 s.serialize_field(".tag", "password")?;
13276 s.end()
13277 }
13278 ResolvedVisibility::TeamAndPassword => {
13279 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13281 s.serialize_field(".tag", "team_and_password")?;
13282 s.end()
13283 }
13284 ResolvedVisibility::SharedFolderOnly => {
13285 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13287 s.serialize_field(".tag", "shared_folder_only")?;
13288 s.end()
13289 }
13290 ResolvedVisibility::NoOne => {
13291 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13293 s.serialize_field(".tag", "no_one")?;
13294 s.end()
13295 }
13296 ResolvedVisibility::OnlyYou => {
13297 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13299 s.serialize_field(".tag", "only_you")?;
13300 s.end()
13301 }
13302 ResolvedVisibility::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13303 }
13304 }
13305}
13306
13307impl From<RequestedVisibility> for ResolvedVisibility {
13309 fn from(parent: RequestedVisibility) -> Self {
13310 match parent {
13311 RequestedVisibility::Public => ResolvedVisibility::Public,
13312 RequestedVisibility::TeamOnly => ResolvedVisibility::TeamOnly,
13313 RequestedVisibility::Password => ResolvedVisibility::Password,
13314 }
13315 }
13316}
13317#[derive(Debug, Clone, PartialEq, Eq)]
13318#[non_exhaustive] pub struct RevokeSharedLinkArg {
13320 pub url: String,
13322}
13323
13324impl RevokeSharedLinkArg {
13325 pub fn new(url: String) -> Self {
13326 RevokeSharedLinkArg {
13327 url,
13328 }
13329 }
13330}
13331
13332const REVOKE_SHARED_LINK_ARG_FIELDS: &[&str] = &["url"];
13333impl RevokeSharedLinkArg {
13334 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
13335 map: V,
13336 ) -> Result<RevokeSharedLinkArg, V::Error> {
13337 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
13338 }
13339
13340 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
13341 mut map: V,
13342 optional: bool,
13343 ) -> Result<Option<RevokeSharedLinkArg>, V::Error> {
13344 let mut field_url = None;
13345 let mut nothing = true;
13346 while let Some(key) = map.next_key::<&str>()? {
13347 nothing = false;
13348 match key {
13349 "url" => {
13350 if field_url.is_some() {
13351 return Err(::serde::de::Error::duplicate_field("url"));
13352 }
13353 field_url = Some(map.next_value()?);
13354 }
13355 _ => {
13356 map.next_value::<::serde_json::Value>()?;
13358 }
13359 }
13360 }
13361 if optional && nothing {
13362 return Ok(None);
13363 }
13364 let result = RevokeSharedLinkArg {
13365 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
13366 };
13367 Ok(Some(result))
13368 }
13369
13370 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
13371 &self,
13372 s: &mut S::SerializeStruct,
13373 ) -> Result<(), S::Error> {
13374 use serde::ser::SerializeStruct;
13375 s.serialize_field("url", &self.url)?;
13376 Ok(())
13377 }
13378}
13379
13380impl<'de> ::serde::de::Deserialize<'de> for RevokeSharedLinkArg {
13381 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13382 use serde::de::{MapAccess, Visitor};
13384 struct StructVisitor;
13385 impl<'de> Visitor<'de> for StructVisitor {
13386 type Value = RevokeSharedLinkArg;
13387 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13388 f.write_str("a RevokeSharedLinkArg struct")
13389 }
13390 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
13391 RevokeSharedLinkArg::internal_deserialize(map)
13392 }
13393 }
13394 deserializer.deserialize_struct("RevokeSharedLinkArg", REVOKE_SHARED_LINK_ARG_FIELDS, StructVisitor)
13395 }
13396}
13397
13398impl ::serde::ser::Serialize for RevokeSharedLinkArg {
13399 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13400 use serde::ser::SerializeStruct;
13402 let mut s = serializer.serialize_struct("RevokeSharedLinkArg", 1)?;
13403 self.internal_serialize::<S>(&mut s)?;
13404 s.end()
13405 }
13406}
13407
13408#[derive(Debug, Clone, PartialEq, Eq)]
13409#[non_exhaustive] pub enum RevokeSharedLinkError {
13411 SharedLinkNotFound,
13413 SharedLinkAccessDenied,
13415 UnsupportedLinkType,
13417 SharedLinkMalformed,
13419 Other,
13422}
13423
13424impl<'de> ::serde::de::Deserialize<'de> for RevokeSharedLinkError {
13425 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13426 use serde::de::{self, MapAccess, Visitor};
13428 struct EnumVisitor;
13429 impl<'de> Visitor<'de> for EnumVisitor {
13430 type Value = RevokeSharedLinkError;
13431 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13432 f.write_str("a RevokeSharedLinkError structure")
13433 }
13434 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13435 let tag: &str = match map.next_key()? {
13436 Some(".tag") => map.next_value()?,
13437 _ => return Err(de::Error::missing_field(".tag"))
13438 };
13439 let value = match tag {
13440 "shared_link_not_found" => RevokeSharedLinkError::SharedLinkNotFound,
13441 "shared_link_access_denied" => RevokeSharedLinkError::SharedLinkAccessDenied,
13442 "unsupported_link_type" => RevokeSharedLinkError::UnsupportedLinkType,
13443 "shared_link_malformed" => RevokeSharedLinkError::SharedLinkMalformed,
13444 _ => RevokeSharedLinkError::Other,
13445 };
13446 crate::eat_json_fields(&mut map)?;
13447 Ok(value)
13448 }
13449 }
13450 const VARIANTS: &[&str] = &["shared_link_not_found",
13451 "shared_link_access_denied",
13452 "unsupported_link_type",
13453 "other",
13454 "shared_link_malformed"];
13455 deserializer.deserialize_struct("RevokeSharedLinkError", VARIANTS, EnumVisitor)
13456 }
13457}
13458
13459impl ::serde::ser::Serialize for RevokeSharedLinkError {
13460 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13461 use serde::ser::SerializeStruct;
13463 match self {
13464 RevokeSharedLinkError::SharedLinkNotFound => {
13465 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
13467 s.serialize_field(".tag", "shared_link_not_found")?;
13468 s.end()
13469 }
13470 RevokeSharedLinkError::SharedLinkAccessDenied => {
13471 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
13473 s.serialize_field(".tag", "shared_link_access_denied")?;
13474 s.end()
13475 }
13476 RevokeSharedLinkError::UnsupportedLinkType => {
13477 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
13479 s.serialize_field(".tag", "unsupported_link_type")?;
13480 s.end()
13481 }
13482 RevokeSharedLinkError::SharedLinkMalformed => {
13483 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
13485 s.serialize_field(".tag", "shared_link_malformed")?;
13486 s.end()
13487 }
13488 RevokeSharedLinkError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13489 }
13490 }
13491}
13492
13493impl ::std::error::Error for RevokeSharedLinkError {
13494}
13495
13496impl ::std::fmt::Display for RevokeSharedLinkError {
13497 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13498 match self {
13499 RevokeSharedLinkError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
13500 RevokeSharedLinkError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
13501 RevokeSharedLinkError::SharedLinkMalformed => f.write_str("Shared link is malformed."),
13502 _ => write!(f, "{:?}", *self),
13503 }
13504 }
13505}
13506
13507impl From<SharedLinkError> for RevokeSharedLinkError {
13509 fn from(parent: SharedLinkError) -> Self {
13510 match parent {
13511 SharedLinkError::SharedLinkNotFound => RevokeSharedLinkError::SharedLinkNotFound,
13512 SharedLinkError::SharedLinkAccessDenied => RevokeSharedLinkError::SharedLinkAccessDenied,
13513 SharedLinkError::UnsupportedLinkType => RevokeSharedLinkError::UnsupportedLinkType,
13514 SharedLinkError::Other => RevokeSharedLinkError::Other,
13515 }
13516 }
13517}
13518#[derive(Debug, Clone, PartialEq, Eq)]
13519#[non_exhaustive] pub struct SetAccessInheritanceArg {
13521 pub shared_folder_id: crate::types::common::SharedFolderId,
13523 pub access_inheritance: AccessInheritance,
13525}
13526
13527impl SetAccessInheritanceArg {
13528 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
13529 SetAccessInheritanceArg {
13530 shared_folder_id,
13531 access_inheritance: AccessInheritance::Inherit,
13532 }
13533 }
13534
13535 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
13536 self.access_inheritance = value;
13537 self
13538 }
13539}
13540
13541const SET_ACCESS_INHERITANCE_ARG_FIELDS: &[&str] = &["shared_folder_id",
13542 "access_inheritance"];
13543impl SetAccessInheritanceArg {
13544 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
13545 map: V,
13546 ) -> Result<SetAccessInheritanceArg, V::Error> {
13547 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
13548 }
13549
13550 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
13551 mut map: V,
13552 optional: bool,
13553 ) -> Result<Option<SetAccessInheritanceArg>, V::Error> {
13554 let mut field_shared_folder_id = None;
13555 let mut field_access_inheritance = None;
13556 let mut nothing = true;
13557 while let Some(key) = map.next_key::<&str>()? {
13558 nothing = false;
13559 match key {
13560 "shared_folder_id" => {
13561 if field_shared_folder_id.is_some() {
13562 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
13563 }
13564 field_shared_folder_id = Some(map.next_value()?);
13565 }
13566 "access_inheritance" => {
13567 if field_access_inheritance.is_some() {
13568 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
13569 }
13570 field_access_inheritance = Some(map.next_value()?);
13571 }
13572 _ => {
13573 map.next_value::<::serde_json::Value>()?;
13575 }
13576 }
13577 }
13578 if optional && nothing {
13579 return Ok(None);
13580 }
13581 let result = SetAccessInheritanceArg {
13582 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
13583 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
13584 };
13585 Ok(Some(result))
13586 }
13587
13588 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
13589 &self,
13590 s: &mut S::SerializeStruct,
13591 ) -> Result<(), S::Error> {
13592 use serde::ser::SerializeStruct;
13593 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
13594 if self.access_inheritance != AccessInheritance::Inherit {
13595 s.serialize_field("access_inheritance", &self.access_inheritance)?;
13596 }
13597 Ok(())
13598 }
13599}
13600
13601impl<'de> ::serde::de::Deserialize<'de> for SetAccessInheritanceArg {
13602 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13603 use serde::de::{MapAccess, Visitor};
13605 struct StructVisitor;
13606 impl<'de> Visitor<'de> for StructVisitor {
13607 type Value = SetAccessInheritanceArg;
13608 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13609 f.write_str("a SetAccessInheritanceArg struct")
13610 }
13611 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
13612 SetAccessInheritanceArg::internal_deserialize(map)
13613 }
13614 }
13615 deserializer.deserialize_struct("SetAccessInheritanceArg", SET_ACCESS_INHERITANCE_ARG_FIELDS, StructVisitor)
13616 }
13617}
13618
13619impl ::serde::ser::Serialize for SetAccessInheritanceArg {
13620 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13621 use serde::ser::SerializeStruct;
13623 let mut s = serializer.serialize_struct("SetAccessInheritanceArg", 2)?;
13624 self.internal_serialize::<S>(&mut s)?;
13625 s.end()
13626 }
13627}
13628
13629#[derive(Debug, Clone, PartialEq, Eq)]
13630#[non_exhaustive] pub enum SetAccessInheritanceError {
13632 AccessError(SharedFolderAccessError),
13634 NoPermission,
13636 Other,
13639}
13640
13641impl<'de> ::serde::de::Deserialize<'de> for SetAccessInheritanceError {
13642 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13643 use serde::de::{self, MapAccess, Visitor};
13645 struct EnumVisitor;
13646 impl<'de> Visitor<'de> for EnumVisitor {
13647 type Value = SetAccessInheritanceError;
13648 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13649 f.write_str("a SetAccessInheritanceError structure")
13650 }
13651 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13652 let tag: &str = match map.next_key()? {
13653 Some(".tag") => map.next_value()?,
13654 _ => return Err(de::Error::missing_field(".tag"))
13655 };
13656 let value = match tag {
13657 "access_error" => {
13658 match map.next_key()? {
13659 Some("access_error") => SetAccessInheritanceError::AccessError(map.next_value()?),
13660 None => return Err(de::Error::missing_field("access_error")),
13661 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13662 }
13663 }
13664 "no_permission" => SetAccessInheritanceError::NoPermission,
13665 _ => SetAccessInheritanceError::Other,
13666 };
13667 crate::eat_json_fields(&mut map)?;
13668 Ok(value)
13669 }
13670 }
13671 const VARIANTS: &[&str] = &["access_error",
13672 "no_permission",
13673 "other"];
13674 deserializer.deserialize_struct("SetAccessInheritanceError", VARIANTS, EnumVisitor)
13675 }
13676}
13677
13678impl ::serde::ser::Serialize for SetAccessInheritanceError {
13679 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13680 use serde::ser::SerializeStruct;
13682 match self {
13683 SetAccessInheritanceError::AccessError(x) => {
13684 let mut s = serializer.serialize_struct("SetAccessInheritanceError", 2)?;
13686 s.serialize_field(".tag", "access_error")?;
13687 s.serialize_field("access_error", x)?;
13688 s.end()
13689 }
13690 SetAccessInheritanceError::NoPermission => {
13691 let mut s = serializer.serialize_struct("SetAccessInheritanceError", 1)?;
13693 s.serialize_field(".tag", "no_permission")?;
13694 s.end()
13695 }
13696 SetAccessInheritanceError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13697 }
13698 }
13699}
13700
13701impl ::std::error::Error for SetAccessInheritanceError {
13702 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
13703 match self {
13704 SetAccessInheritanceError::AccessError(inner) => Some(inner),
13705 _ => None,
13706 }
13707 }
13708}
13709
13710impl ::std::fmt::Display for SetAccessInheritanceError {
13711 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13712 match self {
13713 SetAccessInheritanceError::AccessError(inner) => write!(f, "Unable to access shared folder: {}", inner),
13714 SetAccessInheritanceError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
13715 _ => write!(f, "{:?}", *self),
13716 }
13717 }
13718}
13719
13720#[derive(Debug, Clone, PartialEq, Eq)]
13721#[non_exhaustive] pub struct ShareFolderArg {
13723 pub path: crate::types::files::WritePathOrId,
13726 pub acl_update_policy: Option<AclUpdatePolicy>,
13728 pub force_async: bool,
13730 pub member_policy: Option<MemberPolicy>,
13732 pub shared_link_policy: Option<SharedLinkPolicy>,
13735 pub viewer_info_policy: Option<ViewerInfoPolicy>,
13737 pub access_inheritance: AccessInheritance,
13739 pub actions: Option<Vec<FolderAction>>,
13743 pub link_settings: Option<LinkSettings>,
13745}
13746
13747impl ShareFolderArg {
13748 pub fn new(path: crate::types::files::WritePathOrId) -> Self {
13749 ShareFolderArg {
13750 path,
13751 acl_update_policy: None,
13752 force_async: false,
13753 member_policy: None,
13754 shared_link_policy: None,
13755 viewer_info_policy: None,
13756 access_inheritance: AccessInheritance::Inherit,
13757 actions: None,
13758 link_settings: None,
13759 }
13760 }
13761
13762 pub fn with_acl_update_policy(mut self, value: AclUpdatePolicy) -> Self {
13763 self.acl_update_policy = Some(value);
13764 self
13765 }
13766
13767 pub fn with_force_async(mut self, value: bool) -> Self {
13768 self.force_async = value;
13769 self
13770 }
13771
13772 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
13773 self.member_policy = Some(value);
13774 self
13775 }
13776
13777 pub fn with_shared_link_policy(mut self, value: SharedLinkPolicy) -> Self {
13778 self.shared_link_policy = Some(value);
13779 self
13780 }
13781
13782 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
13783 self.viewer_info_policy = Some(value);
13784 self
13785 }
13786
13787 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
13788 self.access_inheritance = value;
13789 self
13790 }
13791
13792 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
13793 self.actions = Some(value);
13794 self
13795 }
13796
13797 pub fn with_link_settings(mut self, value: LinkSettings) -> Self {
13798 self.link_settings = Some(value);
13799 self
13800 }
13801}
13802
13803const SHARE_FOLDER_ARG_FIELDS: &[&str] = &["path",
13804 "acl_update_policy",
13805 "force_async",
13806 "member_policy",
13807 "shared_link_policy",
13808 "viewer_info_policy",
13809 "access_inheritance",
13810 "actions",
13811 "link_settings"];
13812impl ShareFolderArg {
13813 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
13814 map: V,
13815 ) -> Result<ShareFolderArg, V::Error> {
13816 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
13817 }
13818
13819 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
13820 mut map: V,
13821 optional: bool,
13822 ) -> Result<Option<ShareFolderArg>, V::Error> {
13823 let mut field_path = None;
13824 let mut field_acl_update_policy = None;
13825 let mut field_force_async = None;
13826 let mut field_member_policy = None;
13827 let mut field_shared_link_policy = None;
13828 let mut field_viewer_info_policy = None;
13829 let mut field_access_inheritance = None;
13830 let mut field_actions = None;
13831 let mut field_link_settings = None;
13832 let mut nothing = true;
13833 while let Some(key) = map.next_key::<&str>()? {
13834 nothing = false;
13835 match key {
13836 "path" => {
13837 if field_path.is_some() {
13838 return Err(::serde::de::Error::duplicate_field("path"));
13839 }
13840 field_path = Some(map.next_value()?);
13841 }
13842 "acl_update_policy" => {
13843 if field_acl_update_policy.is_some() {
13844 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
13845 }
13846 field_acl_update_policy = Some(map.next_value()?);
13847 }
13848 "force_async" => {
13849 if field_force_async.is_some() {
13850 return Err(::serde::de::Error::duplicate_field("force_async"));
13851 }
13852 field_force_async = Some(map.next_value()?);
13853 }
13854 "member_policy" => {
13855 if field_member_policy.is_some() {
13856 return Err(::serde::de::Error::duplicate_field("member_policy"));
13857 }
13858 field_member_policy = Some(map.next_value()?);
13859 }
13860 "shared_link_policy" => {
13861 if field_shared_link_policy.is_some() {
13862 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
13863 }
13864 field_shared_link_policy = Some(map.next_value()?);
13865 }
13866 "viewer_info_policy" => {
13867 if field_viewer_info_policy.is_some() {
13868 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
13869 }
13870 field_viewer_info_policy = Some(map.next_value()?);
13871 }
13872 "access_inheritance" => {
13873 if field_access_inheritance.is_some() {
13874 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
13875 }
13876 field_access_inheritance = Some(map.next_value()?);
13877 }
13878 "actions" => {
13879 if field_actions.is_some() {
13880 return Err(::serde::de::Error::duplicate_field("actions"));
13881 }
13882 field_actions = Some(map.next_value()?);
13883 }
13884 "link_settings" => {
13885 if field_link_settings.is_some() {
13886 return Err(::serde::de::Error::duplicate_field("link_settings"));
13887 }
13888 field_link_settings = Some(map.next_value()?);
13889 }
13890 _ => {
13891 map.next_value::<::serde_json::Value>()?;
13893 }
13894 }
13895 }
13896 if optional && nothing {
13897 return Ok(None);
13898 }
13899 let result = ShareFolderArg {
13900 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
13901 acl_update_policy: field_acl_update_policy.and_then(Option::flatten),
13902 force_async: field_force_async.unwrap_or(false),
13903 member_policy: field_member_policy.and_then(Option::flatten),
13904 shared_link_policy: field_shared_link_policy.and_then(Option::flatten),
13905 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
13906 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
13907 actions: field_actions.and_then(Option::flatten),
13908 link_settings: field_link_settings.and_then(Option::flatten),
13909 };
13910 Ok(Some(result))
13911 }
13912
13913 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
13914 &self,
13915 s: &mut S::SerializeStruct,
13916 ) -> Result<(), S::Error> {
13917 use serde::ser::SerializeStruct;
13918 s.serialize_field("path", &self.path)?;
13919 if let Some(val) = &self.acl_update_policy {
13920 s.serialize_field("acl_update_policy", val)?;
13921 }
13922 if self.force_async {
13923 s.serialize_field("force_async", &self.force_async)?;
13924 }
13925 if let Some(val) = &self.member_policy {
13926 s.serialize_field("member_policy", val)?;
13927 }
13928 if let Some(val) = &self.shared_link_policy {
13929 s.serialize_field("shared_link_policy", val)?;
13930 }
13931 if let Some(val) = &self.viewer_info_policy {
13932 s.serialize_field("viewer_info_policy", val)?;
13933 }
13934 if self.access_inheritance != AccessInheritance::Inherit {
13935 s.serialize_field("access_inheritance", &self.access_inheritance)?;
13936 }
13937 if let Some(val) = &self.actions {
13938 s.serialize_field("actions", val)?;
13939 }
13940 if let Some(val) = &self.link_settings {
13941 s.serialize_field("link_settings", val)?;
13942 }
13943 Ok(())
13944 }
13945}
13946
13947impl<'de> ::serde::de::Deserialize<'de> for ShareFolderArg {
13948 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13949 use serde::de::{MapAccess, Visitor};
13951 struct StructVisitor;
13952 impl<'de> Visitor<'de> for StructVisitor {
13953 type Value = ShareFolderArg;
13954 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13955 f.write_str("a ShareFolderArg struct")
13956 }
13957 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
13958 ShareFolderArg::internal_deserialize(map)
13959 }
13960 }
13961 deserializer.deserialize_struct("ShareFolderArg", SHARE_FOLDER_ARG_FIELDS, StructVisitor)
13962 }
13963}
13964
13965impl ::serde::ser::Serialize for ShareFolderArg {
13966 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13967 use serde::ser::SerializeStruct;
13969 let mut s = serializer.serialize_struct("ShareFolderArg", 9)?;
13970 self.internal_serialize::<S>(&mut s)?;
13971 s.end()
13972 }
13973}
13974
13975impl From<ShareFolderArg> for ShareFolderArgBase {
13977 fn from(subtype: ShareFolderArg) -> Self {
13978 Self {
13979 path: subtype.path,
13980 acl_update_policy: subtype.acl_update_policy,
13981 force_async: subtype.force_async,
13982 member_policy: subtype.member_policy,
13983 shared_link_policy: subtype.shared_link_policy,
13984 viewer_info_policy: subtype.viewer_info_policy,
13985 access_inheritance: subtype.access_inheritance,
13986 }
13987 }
13988}
13989#[derive(Debug, Clone, PartialEq, Eq)]
13990#[non_exhaustive] pub struct ShareFolderArgBase {
13992 pub path: crate::types::files::WritePathOrId,
13995 pub acl_update_policy: Option<AclUpdatePolicy>,
13997 pub force_async: bool,
13999 pub member_policy: Option<MemberPolicy>,
14001 pub shared_link_policy: Option<SharedLinkPolicy>,
14004 pub viewer_info_policy: Option<ViewerInfoPolicy>,
14006 pub access_inheritance: AccessInheritance,
14008}
14009
14010impl ShareFolderArgBase {
14011 pub fn new(path: crate::types::files::WritePathOrId) -> Self {
14012 ShareFolderArgBase {
14013 path,
14014 acl_update_policy: None,
14015 force_async: false,
14016 member_policy: None,
14017 shared_link_policy: None,
14018 viewer_info_policy: None,
14019 access_inheritance: AccessInheritance::Inherit,
14020 }
14021 }
14022
14023 pub fn with_acl_update_policy(mut self, value: AclUpdatePolicy) -> Self {
14024 self.acl_update_policy = Some(value);
14025 self
14026 }
14027
14028 pub fn with_force_async(mut self, value: bool) -> Self {
14029 self.force_async = value;
14030 self
14031 }
14032
14033 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
14034 self.member_policy = Some(value);
14035 self
14036 }
14037
14038 pub fn with_shared_link_policy(mut self, value: SharedLinkPolicy) -> Self {
14039 self.shared_link_policy = Some(value);
14040 self
14041 }
14042
14043 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
14044 self.viewer_info_policy = Some(value);
14045 self
14046 }
14047
14048 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
14049 self.access_inheritance = value;
14050 self
14051 }
14052}
14053
14054const SHARE_FOLDER_ARG_BASE_FIELDS: &[&str] = &["path",
14055 "acl_update_policy",
14056 "force_async",
14057 "member_policy",
14058 "shared_link_policy",
14059 "viewer_info_policy",
14060 "access_inheritance"];
14061impl ShareFolderArgBase {
14062 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
14063 map: V,
14064 ) -> Result<ShareFolderArgBase, V::Error> {
14065 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
14066 }
14067
14068 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
14069 mut map: V,
14070 optional: bool,
14071 ) -> Result<Option<ShareFolderArgBase>, V::Error> {
14072 let mut field_path = None;
14073 let mut field_acl_update_policy = None;
14074 let mut field_force_async = None;
14075 let mut field_member_policy = None;
14076 let mut field_shared_link_policy = None;
14077 let mut field_viewer_info_policy = None;
14078 let mut field_access_inheritance = None;
14079 let mut nothing = true;
14080 while let Some(key) = map.next_key::<&str>()? {
14081 nothing = false;
14082 match key {
14083 "path" => {
14084 if field_path.is_some() {
14085 return Err(::serde::de::Error::duplicate_field("path"));
14086 }
14087 field_path = Some(map.next_value()?);
14088 }
14089 "acl_update_policy" => {
14090 if field_acl_update_policy.is_some() {
14091 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
14092 }
14093 field_acl_update_policy = Some(map.next_value()?);
14094 }
14095 "force_async" => {
14096 if field_force_async.is_some() {
14097 return Err(::serde::de::Error::duplicate_field("force_async"));
14098 }
14099 field_force_async = Some(map.next_value()?);
14100 }
14101 "member_policy" => {
14102 if field_member_policy.is_some() {
14103 return Err(::serde::de::Error::duplicate_field("member_policy"));
14104 }
14105 field_member_policy = Some(map.next_value()?);
14106 }
14107 "shared_link_policy" => {
14108 if field_shared_link_policy.is_some() {
14109 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
14110 }
14111 field_shared_link_policy = Some(map.next_value()?);
14112 }
14113 "viewer_info_policy" => {
14114 if field_viewer_info_policy.is_some() {
14115 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
14116 }
14117 field_viewer_info_policy = Some(map.next_value()?);
14118 }
14119 "access_inheritance" => {
14120 if field_access_inheritance.is_some() {
14121 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
14122 }
14123 field_access_inheritance = Some(map.next_value()?);
14124 }
14125 _ => {
14126 map.next_value::<::serde_json::Value>()?;
14128 }
14129 }
14130 }
14131 if optional && nothing {
14132 return Ok(None);
14133 }
14134 let result = ShareFolderArgBase {
14135 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
14136 acl_update_policy: field_acl_update_policy.and_then(Option::flatten),
14137 force_async: field_force_async.unwrap_or(false),
14138 member_policy: field_member_policy.and_then(Option::flatten),
14139 shared_link_policy: field_shared_link_policy.and_then(Option::flatten),
14140 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
14141 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
14142 };
14143 Ok(Some(result))
14144 }
14145
14146 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
14147 &self,
14148 s: &mut S::SerializeStruct,
14149 ) -> Result<(), S::Error> {
14150 use serde::ser::SerializeStruct;
14151 s.serialize_field("path", &self.path)?;
14152 if let Some(val) = &self.acl_update_policy {
14153 s.serialize_field("acl_update_policy", val)?;
14154 }
14155 if self.force_async {
14156 s.serialize_field("force_async", &self.force_async)?;
14157 }
14158 if let Some(val) = &self.member_policy {
14159 s.serialize_field("member_policy", val)?;
14160 }
14161 if let Some(val) = &self.shared_link_policy {
14162 s.serialize_field("shared_link_policy", val)?;
14163 }
14164 if let Some(val) = &self.viewer_info_policy {
14165 s.serialize_field("viewer_info_policy", val)?;
14166 }
14167 if self.access_inheritance != AccessInheritance::Inherit {
14168 s.serialize_field("access_inheritance", &self.access_inheritance)?;
14169 }
14170 Ok(())
14171 }
14172}
14173
14174impl<'de> ::serde::de::Deserialize<'de> for ShareFolderArgBase {
14175 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14176 use serde::de::{MapAccess, Visitor};
14178 struct StructVisitor;
14179 impl<'de> Visitor<'de> for StructVisitor {
14180 type Value = ShareFolderArgBase;
14181 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14182 f.write_str("a ShareFolderArgBase struct")
14183 }
14184 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
14185 ShareFolderArgBase::internal_deserialize(map)
14186 }
14187 }
14188 deserializer.deserialize_struct("ShareFolderArgBase", SHARE_FOLDER_ARG_BASE_FIELDS, StructVisitor)
14189 }
14190}
14191
14192impl ::serde::ser::Serialize for ShareFolderArgBase {
14193 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14194 use serde::ser::SerializeStruct;
14196 let mut s = serializer.serialize_struct("ShareFolderArgBase", 7)?;
14197 self.internal_serialize::<S>(&mut s)?;
14198 s.end()
14199 }
14200}
14201
14202#[derive(Debug, Clone, PartialEq, Eq)]
14203#[non_exhaustive] pub enum ShareFolderError {
14205 EmailUnverified,
14209 BadPath(SharePathError),
14211 TeamPolicyDisallowsMemberPolicy,
14213 DisallowedSharedLinkPolicy,
14216 NoPermission,
14218 Other,
14221}
14222
14223impl<'de> ::serde::de::Deserialize<'de> for ShareFolderError {
14224 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14225 use serde::de::{self, MapAccess, Visitor};
14227 struct EnumVisitor;
14228 impl<'de> Visitor<'de> for EnumVisitor {
14229 type Value = ShareFolderError;
14230 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14231 f.write_str("a ShareFolderError structure")
14232 }
14233 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
14234 let tag: &str = match map.next_key()? {
14235 Some(".tag") => map.next_value()?,
14236 _ => return Err(de::Error::missing_field(".tag"))
14237 };
14238 let value = match tag {
14239 "email_unverified" => ShareFolderError::EmailUnverified,
14240 "bad_path" => {
14241 match map.next_key()? {
14242 Some("bad_path") => ShareFolderError::BadPath(map.next_value()?),
14243 None => return Err(de::Error::missing_field("bad_path")),
14244 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
14245 }
14246 }
14247 "team_policy_disallows_member_policy" => ShareFolderError::TeamPolicyDisallowsMemberPolicy,
14248 "disallowed_shared_link_policy" => ShareFolderError::DisallowedSharedLinkPolicy,
14249 "no_permission" => ShareFolderError::NoPermission,
14250 _ => ShareFolderError::Other,
14251 };
14252 crate::eat_json_fields(&mut map)?;
14253 Ok(value)
14254 }
14255 }
14256 const VARIANTS: &[&str] = &["email_unverified",
14257 "bad_path",
14258 "team_policy_disallows_member_policy",
14259 "disallowed_shared_link_policy",
14260 "other",
14261 "no_permission"];
14262 deserializer.deserialize_struct("ShareFolderError", VARIANTS, EnumVisitor)
14263 }
14264}
14265
14266impl ::serde::ser::Serialize for ShareFolderError {
14267 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14268 use serde::ser::SerializeStruct;
14270 match self {
14271 ShareFolderError::EmailUnverified => {
14272 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14274 s.serialize_field(".tag", "email_unverified")?;
14275 s.end()
14276 }
14277 ShareFolderError::BadPath(x) => {
14278 let mut s = serializer.serialize_struct("ShareFolderError", 2)?;
14280 s.serialize_field(".tag", "bad_path")?;
14281 s.serialize_field("bad_path", x)?;
14282 s.end()
14283 }
14284 ShareFolderError::TeamPolicyDisallowsMemberPolicy => {
14285 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14287 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
14288 s.end()
14289 }
14290 ShareFolderError::DisallowedSharedLinkPolicy => {
14291 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14293 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
14294 s.end()
14295 }
14296 ShareFolderError::NoPermission => {
14297 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14299 s.serialize_field(".tag", "no_permission")?;
14300 s.end()
14301 }
14302 ShareFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
14303 }
14304 }
14305}
14306
14307impl ::std::error::Error for ShareFolderError {
14308 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
14309 match self {
14310 ShareFolderError::BadPath(inner) => Some(inner),
14311 _ => None,
14312 }
14313 }
14314}
14315
14316impl ::std::fmt::Display for ShareFolderError {
14317 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14318 match self {
14319 ShareFolderError::BadPath(inner) => write!(f, "ShareFolderError: {}", inner),
14320 ShareFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
14321 _ => write!(f, "{:?}", *self),
14322 }
14323 }
14324}
14325
14326impl From<ShareFolderErrorBase> for ShareFolderError {
14328 fn from(parent: ShareFolderErrorBase) -> Self {
14329 match parent {
14330 ShareFolderErrorBase::EmailUnverified => ShareFolderError::EmailUnverified,
14331 ShareFolderErrorBase::BadPath(x) => ShareFolderError::BadPath(x),
14332 ShareFolderErrorBase::TeamPolicyDisallowsMemberPolicy => ShareFolderError::TeamPolicyDisallowsMemberPolicy,
14333 ShareFolderErrorBase::DisallowedSharedLinkPolicy => ShareFolderError::DisallowedSharedLinkPolicy,
14334 ShareFolderErrorBase::Other => ShareFolderError::Other,
14335 }
14336 }
14337}
14338#[derive(Debug, Clone, PartialEq, Eq)]
14339#[non_exhaustive] pub enum ShareFolderErrorBase {
14341 EmailUnverified,
14345 BadPath(SharePathError),
14347 TeamPolicyDisallowsMemberPolicy,
14349 DisallowedSharedLinkPolicy,
14352 Other,
14355}
14356
14357impl<'de> ::serde::de::Deserialize<'de> for ShareFolderErrorBase {
14358 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14359 use serde::de::{self, MapAccess, Visitor};
14361 struct EnumVisitor;
14362 impl<'de> Visitor<'de> for EnumVisitor {
14363 type Value = ShareFolderErrorBase;
14364 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14365 f.write_str("a ShareFolderErrorBase structure")
14366 }
14367 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
14368 let tag: &str = match map.next_key()? {
14369 Some(".tag") => map.next_value()?,
14370 _ => return Err(de::Error::missing_field(".tag"))
14371 };
14372 let value = match tag {
14373 "email_unverified" => ShareFolderErrorBase::EmailUnverified,
14374 "bad_path" => {
14375 match map.next_key()? {
14376 Some("bad_path") => ShareFolderErrorBase::BadPath(map.next_value()?),
14377 None => return Err(de::Error::missing_field("bad_path")),
14378 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
14379 }
14380 }
14381 "team_policy_disallows_member_policy" => ShareFolderErrorBase::TeamPolicyDisallowsMemberPolicy,
14382 "disallowed_shared_link_policy" => ShareFolderErrorBase::DisallowedSharedLinkPolicy,
14383 _ => ShareFolderErrorBase::Other,
14384 };
14385 crate::eat_json_fields(&mut map)?;
14386 Ok(value)
14387 }
14388 }
14389 const VARIANTS: &[&str] = &["email_unverified",
14390 "bad_path",
14391 "team_policy_disallows_member_policy",
14392 "disallowed_shared_link_policy",
14393 "other"];
14394 deserializer.deserialize_struct("ShareFolderErrorBase", VARIANTS, EnumVisitor)
14395 }
14396}
14397
14398impl ::serde::ser::Serialize for ShareFolderErrorBase {
14399 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14400 use serde::ser::SerializeStruct;
14402 match self {
14403 ShareFolderErrorBase::EmailUnverified => {
14404 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 1)?;
14406 s.serialize_field(".tag", "email_unverified")?;
14407 s.end()
14408 }
14409 ShareFolderErrorBase::BadPath(x) => {
14410 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 2)?;
14412 s.serialize_field(".tag", "bad_path")?;
14413 s.serialize_field("bad_path", x)?;
14414 s.end()
14415 }
14416 ShareFolderErrorBase::TeamPolicyDisallowsMemberPolicy => {
14417 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 1)?;
14419 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
14420 s.end()
14421 }
14422 ShareFolderErrorBase::DisallowedSharedLinkPolicy => {
14423 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 1)?;
14425 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
14426 s.end()
14427 }
14428 ShareFolderErrorBase::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
14429 }
14430 }
14431}
14432
14433#[derive(Debug, Clone, PartialEq, Eq)]
14434pub enum ShareFolderJobStatus {
14435 InProgress,
14437 Complete(SharedFolderMetadata),
14439 Failed(ShareFolderError),
14440}
14441
14442impl<'de> ::serde::de::Deserialize<'de> for ShareFolderJobStatus {
14443 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14444 use serde::de::{self, MapAccess, Visitor};
14446 struct EnumVisitor;
14447 impl<'de> Visitor<'de> for EnumVisitor {
14448 type Value = ShareFolderJobStatus;
14449 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14450 f.write_str("a ShareFolderJobStatus structure")
14451 }
14452 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
14453 let tag: &str = match map.next_key()? {
14454 Some(".tag") => map.next_value()?,
14455 _ => return Err(de::Error::missing_field(".tag"))
14456 };
14457 let value = match tag {
14458 "in_progress" => ShareFolderJobStatus::InProgress,
14459 "complete" => ShareFolderJobStatus::Complete(SharedFolderMetadata::internal_deserialize(&mut map)?),
14460 "failed" => {
14461 match map.next_key()? {
14462 Some("failed") => ShareFolderJobStatus::Failed(map.next_value()?),
14463 None => return Err(de::Error::missing_field("failed")),
14464 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
14465 }
14466 }
14467 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
14468 };
14469 crate::eat_json_fields(&mut map)?;
14470 Ok(value)
14471 }
14472 }
14473 const VARIANTS: &[&str] = &["in_progress",
14474 "complete",
14475 "failed"];
14476 deserializer.deserialize_struct("ShareFolderJobStatus", VARIANTS, EnumVisitor)
14477 }
14478}
14479
14480impl ::serde::ser::Serialize for ShareFolderJobStatus {
14481 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14482 use serde::ser::SerializeStruct;
14484 match self {
14485 ShareFolderJobStatus::InProgress => {
14486 let mut s = serializer.serialize_struct("ShareFolderJobStatus", 1)?;
14488 s.serialize_field(".tag", "in_progress")?;
14489 s.end()
14490 }
14491 ShareFolderJobStatus::Complete(x) => {
14492 let mut s = serializer.serialize_struct("ShareFolderJobStatus", 18)?;
14494 s.serialize_field(".tag", "complete")?;
14495 x.internal_serialize::<S>(&mut s)?;
14496 s.end()
14497 }
14498 ShareFolderJobStatus::Failed(x) => {
14499 let mut s = serializer.serialize_struct("ShareFolderJobStatus", 2)?;
14501 s.serialize_field(".tag", "failed")?;
14502 s.serialize_field("failed", x)?;
14503 s.end()
14504 }
14505 }
14506 }
14507}
14508
14509impl From<crate::types::dbx_async::PollResultBase> for ShareFolderJobStatus {
14511 fn from(parent: crate::types::dbx_async::PollResultBase) -> Self {
14512 match parent {
14513 crate::types::dbx_async::PollResultBase::InProgress => ShareFolderJobStatus::InProgress,
14514 }
14515 }
14516}
14517#[derive(Debug, Clone, PartialEq, Eq)]
14518pub enum ShareFolderLaunch {
14519 AsyncJobId(crate::types::dbx_async::AsyncJobId),
14522 Complete(SharedFolderMetadata),
14523}
14524
14525impl<'de> ::serde::de::Deserialize<'de> for ShareFolderLaunch {
14526 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14527 use serde::de::{self, MapAccess, Visitor};
14529 struct EnumVisitor;
14530 impl<'de> Visitor<'de> for EnumVisitor {
14531 type Value = ShareFolderLaunch;
14532 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14533 f.write_str("a ShareFolderLaunch structure")
14534 }
14535 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
14536 let tag: &str = match map.next_key()? {
14537 Some(".tag") => map.next_value()?,
14538 _ => return Err(de::Error::missing_field(".tag"))
14539 };
14540 let value = match tag {
14541 "async_job_id" => {
14542 match map.next_key()? {
14543 Some("async_job_id") => ShareFolderLaunch::AsyncJobId(map.next_value()?),
14544 None => return Err(de::Error::missing_field("async_job_id")),
14545 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
14546 }
14547 }
14548 "complete" => ShareFolderLaunch::Complete(SharedFolderMetadata::internal_deserialize(&mut map)?),
14549 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
14550 };
14551 crate::eat_json_fields(&mut map)?;
14552 Ok(value)
14553 }
14554 }
14555 const VARIANTS: &[&str] = &["async_job_id",
14556 "complete"];
14557 deserializer.deserialize_struct("ShareFolderLaunch", VARIANTS, EnumVisitor)
14558 }
14559}
14560
14561impl ::serde::ser::Serialize for ShareFolderLaunch {
14562 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14563 use serde::ser::SerializeStruct;
14565 match self {
14566 ShareFolderLaunch::AsyncJobId(x) => {
14567 let mut s = serializer.serialize_struct("ShareFolderLaunch", 2)?;
14569 s.serialize_field(".tag", "async_job_id")?;
14570 s.serialize_field("async_job_id", x)?;
14571 s.end()
14572 }
14573 ShareFolderLaunch::Complete(x) => {
14574 let mut s = serializer.serialize_struct("ShareFolderLaunch", 18)?;
14576 s.serialize_field(".tag", "complete")?;
14577 x.internal_serialize::<S>(&mut s)?;
14578 s.end()
14579 }
14580 }
14581 }
14582}
14583
14584impl From<crate::types::dbx_async::LaunchResultBase> for ShareFolderLaunch {
14586 fn from(parent: crate::types::dbx_async::LaunchResultBase) -> Self {
14587 match parent {
14588 crate::types::dbx_async::LaunchResultBase::AsyncJobId(x) => ShareFolderLaunch::AsyncJobId(x),
14589 }
14590 }
14591}
14592#[derive(Debug, Clone, PartialEq, Eq)]
14593#[non_exhaustive] pub enum SharePathError {
14595 IsFile,
14597 InsideSharedFolder,
14599 ContainsSharedFolder,
14601 ContainsAppFolder,
14603 ContainsTeamFolder,
14605 IsAppFolder,
14607 InsideAppFolder,
14609 IsPublicFolder,
14611 InsidePublicFolder,
14613 AlreadyShared(SharedFolderMetadata),
14615 InvalidPath,
14617 IsOsxPackage,
14619 InsideOsxPackage,
14621 IsVault,
14623 IsVaultLocked,
14625 IsFamily,
14627 Other,
14630}
14631
14632impl<'de> ::serde::de::Deserialize<'de> for SharePathError {
14633 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14634 use serde::de::{self, MapAccess, Visitor};
14636 struct EnumVisitor;
14637 impl<'de> Visitor<'de> for EnumVisitor {
14638 type Value = SharePathError;
14639 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14640 f.write_str("a SharePathError structure")
14641 }
14642 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
14643 let tag: &str = match map.next_key()? {
14644 Some(".tag") => map.next_value()?,
14645 _ => return Err(de::Error::missing_field(".tag"))
14646 };
14647 let value = match tag {
14648 "is_file" => SharePathError::IsFile,
14649 "inside_shared_folder" => SharePathError::InsideSharedFolder,
14650 "contains_shared_folder" => SharePathError::ContainsSharedFolder,
14651 "contains_app_folder" => SharePathError::ContainsAppFolder,
14652 "contains_team_folder" => SharePathError::ContainsTeamFolder,
14653 "is_app_folder" => SharePathError::IsAppFolder,
14654 "inside_app_folder" => SharePathError::InsideAppFolder,
14655 "is_public_folder" => SharePathError::IsPublicFolder,
14656 "inside_public_folder" => SharePathError::InsidePublicFolder,
14657 "already_shared" => SharePathError::AlreadyShared(SharedFolderMetadata::internal_deserialize(&mut map)?),
14658 "invalid_path" => SharePathError::InvalidPath,
14659 "is_osx_package" => SharePathError::IsOsxPackage,
14660 "inside_osx_package" => SharePathError::InsideOsxPackage,
14661 "is_vault" => SharePathError::IsVault,
14662 "is_vault_locked" => SharePathError::IsVaultLocked,
14663 "is_family" => SharePathError::IsFamily,
14664 _ => SharePathError::Other,
14665 };
14666 crate::eat_json_fields(&mut map)?;
14667 Ok(value)
14668 }
14669 }
14670 const VARIANTS: &[&str] = &["is_file",
14671 "inside_shared_folder",
14672 "contains_shared_folder",
14673 "contains_app_folder",
14674 "contains_team_folder",
14675 "is_app_folder",
14676 "inside_app_folder",
14677 "is_public_folder",
14678 "inside_public_folder",
14679 "already_shared",
14680 "invalid_path",
14681 "is_osx_package",
14682 "inside_osx_package",
14683 "is_vault",
14684 "is_vault_locked",
14685 "is_family",
14686 "other"];
14687 deserializer.deserialize_struct("SharePathError", VARIANTS, EnumVisitor)
14688 }
14689}
14690
14691impl ::serde::ser::Serialize for SharePathError {
14692 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14693 use serde::ser::SerializeStruct;
14695 match self {
14696 SharePathError::IsFile => {
14697 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14699 s.serialize_field(".tag", "is_file")?;
14700 s.end()
14701 }
14702 SharePathError::InsideSharedFolder => {
14703 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14705 s.serialize_field(".tag", "inside_shared_folder")?;
14706 s.end()
14707 }
14708 SharePathError::ContainsSharedFolder => {
14709 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14711 s.serialize_field(".tag", "contains_shared_folder")?;
14712 s.end()
14713 }
14714 SharePathError::ContainsAppFolder => {
14715 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14717 s.serialize_field(".tag", "contains_app_folder")?;
14718 s.end()
14719 }
14720 SharePathError::ContainsTeamFolder => {
14721 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14723 s.serialize_field(".tag", "contains_team_folder")?;
14724 s.end()
14725 }
14726 SharePathError::IsAppFolder => {
14727 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14729 s.serialize_field(".tag", "is_app_folder")?;
14730 s.end()
14731 }
14732 SharePathError::InsideAppFolder => {
14733 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14735 s.serialize_field(".tag", "inside_app_folder")?;
14736 s.end()
14737 }
14738 SharePathError::IsPublicFolder => {
14739 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14741 s.serialize_field(".tag", "is_public_folder")?;
14742 s.end()
14743 }
14744 SharePathError::InsidePublicFolder => {
14745 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14747 s.serialize_field(".tag", "inside_public_folder")?;
14748 s.end()
14749 }
14750 SharePathError::AlreadyShared(x) => {
14751 let mut s = serializer.serialize_struct("SharePathError", 18)?;
14753 s.serialize_field(".tag", "already_shared")?;
14754 x.internal_serialize::<S>(&mut s)?;
14755 s.end()
14756 }
14757 SharePathError::InvalidPath => {
14758 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14760 s.serialize_field(".tag", "invalid_path")?;
14761 s.end()
14762 }
14763 SharePathError::IsOsxPackage => {
14764 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14766 s.serialize_field(".tag", "is_osx_package")?;
14767 s.end()
14768 }
14769 SharePathError::InsideOsxPackage => {
14770 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14772 s.serialize_field(".tag", "inside_osx_package")?;
14773 s.end()
14774 }
14775 SharePathError::IsVault => {
14776 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14778 s.serialize_field(".tag", "is_vault")?;
14779 s.end()
14780 }
14781 SharePathError::IsVaultLocked => {
14782 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14784 s.serialize_field(".tag", "is_vault_locked")?;
14785 s.end()
14786 }
14787 SharePathError::IsFamily => {
14788 let mut s = serializer.serialize_struct("SharePathError", 1)?;
14790 s.serialize_field(".tag", "is_family")?;
14791 s.end()
14792 }
14793 SharePathError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
14794 }
14795 }
14796}
14797
14798impl ::std::error::Error for SharePathError {
14799}
14800
14801impl ::std::fmt::Display for SharePathError {
14802 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14803 match self {
14804 SharePathError::IsFile => f.write_str("A file is at the specified path."),
14805 SharePathError::InsideSharedFolder => f.write_str("We do not support sharing a folder inside a shared folder."),
14806 SharePathError::ContainsSharedFolder => f.write_str("We do not support shared folders that contain shared folders."),
14807 SharePathError::ContainsAppFolder => f.write_str("We do not support shared folders that contain app folders."),
14808 SharePathError::ContainsTeamFolder => f.write_str("We do not support shared folders that contain team folders."),
14809 SharePathError::IsAppFolder => f.write_str("We do not support sharing an app folder."),
14810 SharePathError::InsideAppFolder => f.write_str("We do not support sharing a folder inside an app folder."),
14811 SharePathError::IsPublicFolder => f.write_str("A public folder can't be shared this way. Use a public link instead."),
14812 SharePathError::InsidePublicFolder => f.write_str("A folder inside a public folder can't be shared this way. Use a public link instead."),
14813 SharePathError::AlreadyShared(inner) => write!(f, "Folder is already shared. Contains metadata about the existing shared folder: {:?}", inner),
14814 SharePathError::InvalidPath => f.write_str("Path is not valid."),
14815 SharePathError::IsOsxPackage => f.write_str("We do not support sharing a Mac OS X package."),
14816 SharePathError::InsideOsxPackage => f.write_str("We do not support sharing a folder inside a Mac OS X package."),
14817 SharePathError::IsVault => f.write_str("We do not support sharing the Vault folder."),
14818 SharePathError::IsVaultLocked => f.write_str("We do not support sharing a folder inside a locked Vault."),
14819 SharePathError::IsFamily => f.write_str("We do not support sharing the Family folder."),
14820 _ => write!(f, "{:?}", *self),
14821 }
14822 }
14823}
14824
14825#[derive(Debug, Clone, PartialEq, Eq)]
14827#[non_exhaustive] pub struct SharedContentLinkMetadata {
14829 pub audience_options: Vec<LinkAudience>,
14834 pub current_audience: LinkAudience,
14836 pub link_permissions: Vec<LinkPermission>,
14838 pub password_protected: bool,
14840 pub url: String,
14842 pub access_level: Option<AccessLevel>,
14844 pub audience_restricting_shared_folder: Option<AudienceRestrictingSharedFolder>,
14846 pub expiry: Option<crate::types::common::DropboxTimestamp>,
14849 pub audience_exceptions: Option<AudienceExceptions>,
14853}
14854
14855impl SharedContentLinkMetadata {
14856 pub fn new(
14857 audience_options: Vec<LinkAudience>,
14858 current_audience: LinkAudience,
14859 link_permissions: Vec<LinkPermission>,
14860 password_protected: bool,
14861 url: String,
14862 ) -> Self {
14863 SharedContentLinkMetadata {
14864 audience_options,
14865 current_audience,
14866 link_permissions,
14867 password_protected,
14868 url,
14869 access_level: None,
14870 audience_restricting_shared_folder: None,
14871 expiry: None,
14872 audience_exceptions: None,
14873 }
14874 }
14875
14876 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
14877 self.access_level = Some(value);
14878 self
14879 }
14880
14881 pub fn with_audience_restricting_shared_folder(
14882 mut self,
14883 value: AudienceRestrictingSharedFolder,
14884 ) -> Self {
14885 self.audience_restricting_shared_folder = Some(value);
14886 self
14887 }
14888
14889 pub fn with_expiry(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
14890 self.expiry = Some(value);
14891 self
14892 }
14893
14894 pub fn with_audience_exceptions(mut self, value: AudienceExceptions) -> Self {
14895 self.audience_exceptions = Some(value);
14896 self
14897 }
14898}
14899
14900const SHARED_CONTENT_LINK_METADATA_FIELDS: &[&str] = &["audience_options",
14901 "current_audience",
14902 "link_permissions",
14903 "password_protected",
14904 "url",
14905 "access_level",
14906 "audience_restricting_shared_folder",
14907 "expiry",
14908 "audience_exceptions"];
14909impl SharedContentLinkMetadata {
14910 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
14911 map: V,
14912 ) -> Result<SharedContentLinkMetadata, V::Error> {
14913 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
14914 }
14915
14916 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
14917 mut map: V,
14918 optional: bool,
14919 ) -> Result<Option<SharedContentLinkMetadata>, V::Error> {
14920 let mut field_audience_options = None;
14921 let mut field_current_audience = None;
14922 let mut field_link_permissions = None;
14923 let mut field_password_protected = None;
14924 let mut field_url = None;
14925 let mut field_access_level = None;
14926 let mut field_audience_restricting_shared_folder = None;
14927 let mut field_expiry = None;
14928 let mut field_audience_exceptions = None;
14929 let mut nothing = true;
14930 while let Some(key) = map.next_key::<&str>()? {
14931 nothing = false;
14932 match key {
14933 "audience_options" => {
14934 if field_audience_options.is_some() {
14935 return Err(::serde::de::Error::duplicate_field("audience_options"));
14936 }
14937 field_audience_options = Some(map.next_value()?);
14938 }
14939 "current_audience" => {
14940 if field_current_audience.is_some() {
14941 return Err(::serde::de::Error::duplicate_field("current_audience"));
14942 }
14943 field_current_audience = Some(map.next_value()?);
14944 }
14945 "link_permissions" => {
14946 if field_link_permissions.is_some() {
14947 return Err(::serde::de::Error::duplicate_field("link_permissions"));
14948 }
14949 field_link_permissions = Some(map.next_value()?);
14950 }
14951 "password_protected" => {
14952 if field_password_protected.is_some() {
14953 return Err(::serde::de::Error::duplicate_field("password_protected"));
14954 }
14955 field_password_protected = Some(map.next_value()?);
14956 }
14957 "url" => {
14958 if field_url.is_some() {
14959 return Err(::serde::de::Error::duplicate_field("url"));
14960 }
14961 field_url = Some(map.next_value()?);
14962 }
14963 "access_level" => {
14964 if field_access_level.is_some() {
14965 return Err(::serde::de::Error::duplicate_field("access_level"));
14966 }
14967 field_access_level = Some(map.next_value()?);
14968 }
14969 "audience_restricting_shared_folder" => {
14970 if field_audience_restricting_shared_folder.is_some() {
14971 return Err(::serde::de::Error::duplicate_field("audience_restricting_shared_folder"));
14972 }
14973 field_audience_restricting_shared_folder = Some(map.next_value()?);
14974 }
14975 "expiry" => {
14976 if field_expiry.is_some() {
14977 return Err(::serde::de::Error::duplicate_field("expiry"));
14978 }
14979 field_expiry = Some(map.next_value()?);
14980 }
14981 "audience_exceptions" => {
14982 if field_audience_exceptions.is_some() {
14983 return Err(::serde::de::Error::duplicate_field("audience_exceptions"));
14984 }
14985 field_audience_exceptions = Some(map.next_value()?);
14986 }
14987 _ => {
14988 map.next_value::<::serde_json::Value>()?;
14990 }
14991 }
14992 }
14993 if optional && nothing {
14994 return Ok(None);
14995 }
14996 let result = SharedContentLinkMetadata {
14997 audience_options: field_audience_options.ok_or_else(|| ::serde::de::Error::missing_field("audience_options"))?,
14998 current_audience: field_current_audience.ok_or_else(|| ::serde::de::Error::missing_field("current_audience"))?,
14999 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
15000 password_protected: field_password_protected.ok_or_else(|| ::serde::de::Error::missing_field("password_protected"))?,
15001 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
15002 access_level: field_access_level.and_then(Option::flatten),
15003 audience_restricting_shared_folder: field_audience_restricting_shared_folder.and_then(Option::flatten),
15004 expiry: field_expiry.and_then(Option::flatten),
15005 audience_exceptions: field_audience_exceptions.and_then(Option::flatten),
15006 };
15007 Ok(Some(result))
15008 }
15009
15010 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
15011 &self,
15012 s: &mut S::SerializeStruct,
15013 ) -> Result<(), S::Error> {
15014 use serde::ser::SerializeStruct;
15015 s.serialize_field("audience_options", &self.audience_options)?;
15016 s.serialize_field("current_audience", &self.current_audience)?;
15017 s.serialize_field("link_permissions", &self.link_permissions)?;
15018 s.serialize_field("password_protected", &self.password_protected)?;
15019 s.serialize_field("url", &self.url)?;
15020 if let Some(val) = &self.access_level {
15021 s.serialize_field("access_level", val)?;
15022 }
15023 if let Some(val) = &self.audience_restricting_shared_folder {
15024 s.serialize_field("audience_restricting_shared_folder", val)?;
15025 }
15026 if let Some(val) = &self.expiry {
15027 s.serialize_field("expiry", val)?;
15028 }
15029 if let Some(val) = &self.audience_exceptions {
15030 s.serialize_field("audience_exceptions", val)?;
15031 }
15032 Ok(())
15033 }
15034}
15035
15036impl<'de> ::serde::de::Deserialize<'de> for SharedContentLinkMetadata {
15037 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15038 use serde::de::{MapAccess, Visitor};
15040 struct StructVisitor;
15041 impl<'de> Visitor<'de> for StructVisitor {
15042 type Value = SharedContentLinkMetadata;
15043 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15044 f.write_str("a SharedContentLinkMetadata struct")
15045 }
15046 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
15047 SharedContentLinkMetadata::internal_deserialize(map)
15048 }
15049 }
15050 deserializer.deserialize_struct("SharedContentLinkMetadata", SHARED_CONTENT_LINK_METADATA_FIELDS, StructVisitor)
15051 }
15052}
15053
15054impl ::serde::ser::Serialize for SharedContentLinkMetadata {
15055 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15056 use serde::ser::SerializeStruct;
15058 let mut s = serializer.serialize_struct("SharedContentLinkMetadata", 9)?;
15059 self.internal_serialize::<S>(&mut s)?;
15060 s.end()
15061 }
15062}
15063
15064impl From<SharedContentLinkMetadata> for SharedContentLinkMetadataBase {
15066 fn from(subtype: SharedContentLinkMetadata) -> Self {
15067 Self {
15068 audience_options: subtype.audience_options,
15069 current_audience: subtype.current_audience,
15070 link_permissions: subtype.link_permissions,
15071 password_protected: subtype.password_protected,
15072 access_level: subtype.access_level,
15073 audience_restricting_shared_folder: subtype.audience_restricting_shared_folder,
15074 expiry: subtype.expiry,
15075 }
15076 }
15077}
15078#[derive(Debug, Clone, PartialEq, Eq)]
15079#[non_exhaustive] pub struct SharedContentLinkMetadataBase {
15081 pub audience_options: Vec<LinkAudience>,
15086 pub current_audience: LinkAudience,
15088 pub link_permissions: Vec<LinkPermission>,
15090 pub password_protected: bool,
15092 pub access_level: Option<AccessLevel>,
15094 pub audience_restricting_shared_folder: Option<AudienceRestrictingSharedFolder>,
15096 pub expiry: Option<crate::types::common::DropboxTimestamp>,
15099}
15100
15101impl SharedContentLinkMetadataBase {
15102 pub fn new(
15103 audience_options: Vec<LinkAudience>,
15104 current_audience: LinkAudience,
15105 link_permissions: Vec<LinkPermission>,
15106 password_protected: bool,
15107 ) -> Self {
15108 SharedContentLinkMetadataBase {
15109 audience_options,
15110 current_audience,
15111 link_permissions,
15112 password_protected,
15113 access_level: None,
15114 audience_restricting_shared_folder: None,
15115 expiry: None,
15116 }
15117 }
15118
15119 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
15120 self.access_level = Some(value);
15121 self
15122 }
15123
15124 pub fn with_audience_restricting_shared_folder(
15125 mut self,
15126 value: AudienceRestrictingSharedFolder,
15127 ) -> Self {
15128 self.audience_restricting_shared_folder = Some(value);
15129 self
15130 }
15131
15132 pub fn with_expiry(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
15133 self.expiry = Some(value);
15134 self
15135 }
15136}
15137
15138const SHARED_CONTENT_LINK_METADATA_BASE_FIELDS: &[&str] = &["audience_options",
15139 "current_audience",
15140 "link_permissions",
15141 "password_protected",
15142 "access_level",
15143 "audience_restricting_shared_folder",
15144 "expiry"];
15145impl SharedContentLinkMetadataBase {
15146 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
15147 map: V,
15148 ) -> Result<SharedContentLinkMetadataBase, V::Error> {
15149 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
15150 }
15151
15152 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
15153 mut map: V,
15154 optional: bool,
15155 ) -> Result<Option<SharedContentLinkMetadataBase>, V::Error> {
15156 let mut field_audience_options = None;
15157 let mut field_current_audience = None;
15158 let mut field_link_permissions = None;
15159 let mut field_password_protected = None;
15160 let mut field_access_level = None;
15161 let mut field_audience_restricting_shared_folder = None;
15162 let mut field_expiry = None;
15163 let mut nothing = true;
15164 while let Some(key) = map.next_key::<&str>()? {
15165 nothing = false;
15166 match key {
15167 "audience_options" => {
15168 if field_audience_options.is_some() {
15169 return Err(::serde::de::Error::duplicate_field("audience_options"));
15170 }
15171 field_audience_options = Some(map.next_value()?);
15172 }
15173 "current_audience" => {
15174 if field_current_audience.is_some() {
15175 return Err(::serde::de::Error::duplicate_field("current_audience"));
15176 }
15177 field_current_audience = Some(map.next_value()?);
15178 }
15179 "link_permissions" => {
15180 if field_link_permissions.is_some() {
15181 return Err(::serde::de::Error::duplicate_field("link_permissions"));
15182 }
15183 field_link_permissions = Some(map.next_value()?);
15184 }
15185 "password_protected" => {
15186 if field_password_protected.is_some() {
15187 return Err(::serde::de::Error::duplicate_field("password_protected"));
15188 }
15189 field_password_protected = Some(map.next_value()?);
15190 }
15191 "access_level" => {
15192 if field_access_level.is_some() {
15193 return Err(::serde::de::Error::duplicate_field("access_level"));
15194 }
15195 field_access_level = Some(map.next_value()?);
15196 }
15197 "audience_restricting_shared_folder" => {
15198 if field_audience_restricting_shared_folder.is_some() {
15199 return Err(::serde::de::Error::duplicate_field("audience_restricting_shared_folder"));
15200 }
15201 field_audience_restricting_shared_folder = Some(map.next_value()?);
15202 }
15203 "expiry" => {
15204 if field_expiry.is_some() {
15205 return Err(::serde::de::Error::duplicate_field("expiry"));
15206 }
15207 field_expiry = Some(map.next_value()?);
15208 }
15209 _ => {
15210 map.next_value::<::serde_json::Value>()?;
15212 }
15213 }
15214 }
15215 if optional && nothing {
15216 return Ok(None);
15217 }
15218 let result = SharedContentLinkMetadataBase {
15219 audience_options: field_audience_options.ok_or_else(|| ::serde::de::Error::missing_field("audience_options"))?,
15220 current_audience: field_current_audience.ok_or_else(|| ::serde::de::Error::missing_field("current_audience"))?,
15221 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
15222 password_protected: field_password_protected.ok_or_else(|| ::serde::de::Error::missing_field("password_protected"))?,
15223 access_level: field_access_level.and_then(Option::flatten),
15224 audience_restricting_shared_folder: field_audience_restricting_shared_folder.and_then(Option::flatten),
15225 expiry: field_expiry.and_then(Option::flatten),
15226 };
15227 Ok(Some(result))
15228 }
15229
15230 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
15231 &self,
15232 s: &mut S::SerializeStruct,
15233 ) -> Result<(), S::Error> {
15234 use serde::ser::SerializeStruct;
15235 s.serialize_field("audience_options", &self.audience_options)?;
15236 s.serialize_field("current_audience", &self.current_audience)?;
15237 s.serialize_field("link_permissions", &self.link_permissions)?;
15238 s.serialize_field("password_protected", &self.password_protected)?;
15239 if let Some(val) = &self.access_level {
15240 s.serialize_field("access_level", val)?;
15241 }
15242 if let Some(val) = &self.audience_restricting_shared_folder {
15243 s.serialize_field("audience_restricting_shared_folder", val)?;
15244 }
15245 if let Some(val) = &self.expiry {
15246 s.serialize_field("expiry", val)?;
15247 }
15248 Ok(())
15249 }
15250}
15251
15252impl<'de> ::serde::de::Deserialize<'de> for SharedContentLinkMetadataBase {
15253 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15254 use serde::de::{MapAccess, Visitor};
15256 struct StructVisitor;
15257 impl<'de> Visitor<'de> for StructVisitor {
15258 type Value = SharedContentLinkMetadataBase;
15259 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15260 f.write_str("a SharedContentLinkMetadataBase struct")
15261 }
15262 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
15263 SharedContentLinkMetadataBase::internal_deserialize(map)
15264 }
15265 }
15266 deserializer.deserialize_struct("SharedContentLinkMetadataBase", SHARED_CONTENT_LINK_METADATA_BASE_FIELDS, StructVisitor)
15267 }
15268}
15269
15270impl ::serde::ser::Serialize for SharedContentLinkMetadataBase {
15271 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15272 use serde::ser::SerializeStruct;
15274 let mut s = serializer.serialize_struct("SharedContentLinkMetadataBase", 7)?;
15275 self.internal_serialize::<S>(&mut s)?;
15276 s.end()
15277 }
15278}
15279
15280#[derive(Debug, Clone, PartialEq, Eq)]
15285#[non_exhaustive] pub struct SharedFileMembers {
15287 pub users: Vec<UserFileMembershipInfo>,
15289 pub groups: Vec<GroupMembershipInfo>,
15291 pub invitees: Vec<InviteeMembershipInfo>,
15293 pub cursor: Option<String>,
15297}
15298
15299impl SharedFileMembers {
15300 pub fn new(
15301 users: Vec<UserFileMembershipInfo>,
15302 groups: Vec<GroupMembershipInfo>,
15303 invitees: Vec<InviteeMembershipInfo>,
15304 ) -> Self {
15305 SharedFileMembers {
15306 users,
15307 groups,
15308 invitees,
15309 cursor: None,
15310 }
15311 }
15312
15313 pub fn with_cursor(mut self, value: String) -> Self {
15314 self.cursor = Some(value);
15315 self
15316 }
15317}
15318
15319const SHARED_FILE_MEMBERS_FIELDS: &[&str] = &["users",
15320 "groups",
15321 "invitees",
15322 "cursor"];
15323impl SharedFileMembers {
15324 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
15325 map: V,
15326 ) -> Result<SharedFileMembers, V::Error> {
15327 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
15328 }
15329
15330 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
15331 mut map: V,
15332 optional: bool,
15333 ) -> Result<Option<SharedFileMembers>, V::Error> {
15334 let mut field_users = None;
15335 let mut field_groups = None;
15336 let mut field_invitees = None;
15337 let mut field_cursor = None;
15338 let mut nothing = true;
15339 while let Some(key) = map.next_key::<&str>()? {
15340 nothing = false;
15341 match key {
15342 "users" => {
15343 if field_users.is_some() {
15344 return Err(::serde::de::Error::duplicate_field("users"));
15345 }
15346 field_users = Some(map.next_value()?);
15347 }
15348 "groups" => {
15349 if field_groups.is_some() {
15350 return Err(::serde::de::Error::duplicate_field("groups"));
15351 }
15352 field_groups = Some(map.next_value()?);
15353 }
15354 "invitees" => {
15355 if field_invitees.is_some() {
15356 return Err(::serde::de::Error::duplicate_field("invitees"));
15357 }
15358 field_invitees = Some(map.next_value()?);
15359 }
15360 "cursor" => {
15361 if field_cursor.is_some() {
15362 return Err(::serde::de::Error::duplicate_field("cursor"));
15363 }
15364 field_cursor = Some(map.next_value()?);
15365 }
15366 _ => {
15367 map.next_value::<::serde_json::Value>()?;
15369 }
15370 }
15371 }
15372 if optional && nothing {
15373 return Ok(None);
15374 }
15375 let result = SharedFileMembers {
15376 users: field_users.ok_or_else(|| ::serde::de::Error::missing_field("users"))?,
15377 groups: field_groups.ok_or_else(|| ::serde::de::Error::missing_field("groups"))?,
15378 invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?,
15379 cursor: field_cursor.and_then(Option::flatten),
15380 };
15381 Ok(Some(result))
15382 }
15383
15384 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
15385 &self,
15386 s: &mut S::SerializeStruct,
15387 ) -> Result<(), S::Error> {
15388 use serde::ser::SerializeStruct;
15389 s.serialize_field("users", &self.users)?;
15390 s.serialize_field("groups", &self.groups)?;
15391 s.serialize_field("invitees", &self.invitees)?;
15392 if let Some(val) = &self.cursor {
15393 s.serialize_field("cursor", val)?;
15394 }
15395 Ok(())
15396 }
15397}
15398
15399impl<'de> ::serde::de::Deserialize<'de> for SharedFileMembers {
15400 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15401 use serde::de::{MapAccess, Visitor};
15403 struct StructVisitor;
15404 impl<'de> Visitor<'de> for StructVisitor {
15405 type Value = SharedFileMembers;
15406 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15407 f.write_str("a SharedFileMembers struct")
15408 }
15409 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
15410 SharedFileMembers::internal_deserialize(map)
15411 }
15412 }
15413 deserializer.deserialize_struct("SharedFileMembers", SHARED_FILE_MEMBERS_FIELDS, StructVisitor)
15414 }
15415}
15416
15417impl ::serde::ser::Serialize for SharedFileMembers {
15418 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15419 use serde::ser::SerializeStruct;
15421 let mut s = serializer.serialize_struct("SharedFileMembers", 4)?;
15422 self.internal_serialize::<S>(&mut s)?;
15423 s.end()
15424 }
15425}
15426
15427#[derive(Debug, Clone, PartialEq, Eq)]
15429#[non_exhaustive] pub struct SharedFileMetadata {
15431 pub id: crate::types::files::FileId,
15433 pub name: String,
15435 pub policy: FolderPolicy,
15437 pub preview_url: String,
15439 pub access_type: Option<AccessLevel>,
15441 pub expected_link_metadata: Option<ExpectedSharedContentLinkMetadata>,
15444 pub link_metadata: Option<SharedContentLinkMetadata>,
15447 pub owner_display_names: Option<Vec<String>>,
15451 pub owner_team: Option<crate::types::users::Team>,
15453 pub parent_shared_folder_id: Option<crate::types::common::SharedFolderId>,
15456 pub path_display: Option<String>,
15460 pub path_lower: Option<String>,
15462 pub permissions: Option<Vec<FilePermission>>,
15466 pub time_invited: Option<crate::types::common::DropboxTimestamp>,
15470}
15471
15472impl SharedFileMetadata {
15473 pub fn new(
15474 id: crate::types::files::FileId,
15475 name: String,
15476 policy: FolderPolicy,
15477 preview_url: String,
15478 ) -> Self {
15479 SharedFileMetadata {
15480 id,
15481 name,
15482 policy,
15483 preview_url,
15484 access_type: None,
15485 expected_link_metadata: None,
15486 link_metadata: None,
15487 owner_display_names: None,
15488 owner_team: None,
15489 parent_shared_folder_id: None,
15490 path_display: None,
15491 path_lower: None,
15492 permissions: None,
15493 time_invited: None,
15494 }
15495 }
15496
15497 pub fn with_access_type(mut self, value: AccessLevel) -> Self {
15498 self.access_type = Some(value);
15499 self
15500 }
15501
15502 pub fn with_expected_link_metadata(
15503 mut self,
15504 value: ExpectedSharedContentLinkMetadata,
15505 ) -> Self {
15506 self.expected_link_metadata = Some(value);
15507 self
15508 }
15509
15510 pub fn with_link_metadata(mut self, value: SharedContentLinkMetadata) -> Self {
15511 self.link_metadata = Some(value);
15512 self
15513 }
15514
15515 pub fn with_owner_display_names(mut self, value: Vec<String>) -> Self {
15516 self.owner_display_names = Some(value);
15517 self
15518 }
15519
15520 pub fn with_owner_team(mut self, value: crate::types::users::Team) -> Self {
15521 self.owner_team = Some(value);
15522 self
15523 }
15524
15525 pub fn with_parent_shared_folder_id(
15526 mut self,
15527 value: crate::types::common::SharedFolderId,
15528 ) -> Self {
15529 self.parent_shared_folder_id = Some(value);
15530 self
15531 }
15532
15533 pub fn with_path_display(mut self, value: String) -> Self {
15534 self.path_display = Some(value);
15535 self
15536 }
15537
15538 pub fn with_path_lower(mut self, value: String) -> Self {
15539 self.path_lower = Some(value);
15540 self
15541 }
15542
15543 pub fn with_permissions(mut self, value: Vec<FilePermission>) -> Self {
15544 self.permissions = Some(value);
15545 self
15546 }
15547
15548 pub fn with_time_invited(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
15549 self.time_invited = Some(value);
15550 self
15551 }
15552}
15553
15554const SHARED_FILE_METADATA_FIELDS: &[&str] = &["id",
15555 "name",
15556 "policy",
15557 "preview_url",
15558 "access_type",
15559 "expected_link_metadata",
15560 "link_metadata",
15561 "owner_display_names",
15562 "owner_team",
15563 "parent_shared_folder_id",
15564 "path_display",
15565 "path_lower",
15566 "permissions",
15567 "time_invited"];
15568impl SharedFileMetadata {
15569 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
15570 map: V,
15571 ) -> Result<SharedFileMetadata, V::Error> {
15572 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
15573 }
15574
15575 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
15576 mut map: V,
15577 optional: bool,
15578 ) -> Result<Option<SharedFileMetadata>, V::Error> {
15579 let mut field_id = None;
15580 let mut field_name = None;
15581 let mut field_policy = None;
15582 let mut field_preview_url = None;
15583 let mut field_access_type = None;
15584 let mut field_expected_link_metadata = None;
15585 let mut field_link_metadata = None;
15586 let mut field_owner_display_names = None;
15587 let mut field_owner_team = None;
15588 let mut field_parent_shared_folder_id = None;
15589 let mut field_path_display = None;
15590 let mut field_path_lower = None;
15591 let mut field_permissions = None;
15592 let mut field_time_invited = None;
15593 let mut nothing = true;
15594 while let Some(key) = map.next_key::<&str>()? {
15595 nothing = false;
15596 match key {
15597 "id" => {
15598 if field_id.is_some() {
15599 return Err(::serde::de::Error::duplicate_field("id"));
15600 }
15601 field_id = Some(map.next_value()?);
15602 }
15603 "name" => {
15604 if field_name.is_some() {
15605 return Err(::serde::de::Error::duplicate_field("name"));
15606 }
15607 field_name = Some(map.next_value()?);
15608 }
15609 "policy" => {
15610 if field_policy.is_some() {
15611 return Err(::serde::de::Error::duplicate_field("policy"));
15612 }
15613 field_policy = Some(map.next_value()?);
15614 }
15615 "preview_url" => {
15616 if field_preview_url.is_some() {
15617 return Err(::serde::de::Error::duplicate_field("preview_url"));
15618 }
15619 field_preview_url = Some(map.next_value()?);
15620 }
15621 "access_type" => {
15622 if field_access_type.is_some() {
15623 return Err(::serde::de::Error::duplicate_field("access_type"));
15624 }
15625 field_access_type = Some(map.next_value()?);
15626 }
15627 "expected_link_metadata" => {
15628 if field_expected_link_metadata.is_some() {
15629 return Err(::serde::de::Error::duplicate_field("expected_link_metadata"));
15630 }
15631 field_expected_link_metadata = Some(map.next_value()?);
15632 }
15633 "link_metadata" => {
15634 if field_link_metadata.is_some() {
15635 return Err(::serde::de::Error::duplicate_field("link_metadata"));
15636 }
15637 field_link_metadata = Some(map.next_value()?);
15638 }
15639 "owner_display_names" => {
15640 if field_owner_display_names.is_some() {
15641 return Err(::serde::de::Error::duplicate_field("owner_display_names"));
15642 }
15643 field_owner_display_names = Some(map.next_value()?);
15644 }
15645 "owner_team" => {
15646 if field_owner_team.is_some() {
15647 return Err(::serde::de::Error::duplicate_field("owner_team"));
15648 }
15649 field_owner_team = Some(map.next_value()?);
15650 }
15651 "parent_shared_folder_id" => {
15652 if field_parent_shared_folder_id.is_some() {
15653 return Err(::serde::de::Error::duplicate_field("parent_shared_folder_id"));
15654 }
15655 field_parent_shared_folder_id = Some(map.next_value()?);
15656 }
15657 "path_display" => {
15658 if field_path_display.is_some() {
15659 return Err(::serde::de::Error::duplicate_field("path_display"));
15660 }
15661 field_path_display = Some(map.next_value()?);
15662 }
15663 "path_lower" => {
15664 if field_path_lower.is_some() {
15665 return Err(::serde::de::Error::duplicate_field("path_lower"));
15666 }
15667 field_path_lower = Some(map.next_value()?);
15668 }
15669 "permissions" => {
15670 if field_permissions.is_some() {
15671 return Err(::serde::de::Error::duplicate_field("permissions"));
15672 }
15673 field_permissions = Some(map.next_value()?);
15674 }
15675 "time_invited" => {
15676 if field_time_invited.is_some() {
15677 return Err(::serde::de::Error::duplicate_field("time_invited"));
15678 }
15679 field_time_invited = Some(map.next_value()?);
15680 }
15681 _ => {
15682 map.next_value::<::serde_json::Value>()?;
15684 }
15685 }
15686 }
15687 if optional && nothing {
15688 return Ok(None);
15689 }
15690 let result = SharedFileMetadata {
15691 id: field_id.ok_or_else(|| ::serde::de::Error::missing_field("id"))?,
15692 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
15693 policy: field_policy.ok_or_else(|| ::serde::de::Error::missing_field("policy"))?,
15694 preview_url: field_preview_url.ok_or_else(|| ::serde::de::Error::missing_field("preview_url"))?,
15695 access_type: field_access_type.and_then(Option::flatten),
15696 expected_link_metadata: field_expected_link_metadata.and_then(Option::flatten),
15697 link_metadata: field_link_metadata.and_then(Option::flatten),
15698 owner_display_names: field_owner_display_names.and_then(Option::flatten),
15699 owner_team: field_owner_team.and_then(Option::flatten),
15700 parent_shared_folder_id: field_parent_shared_folder_id.and_then(Option::flatten),
15701 path_display: field_path_display.and_then(Option::flatten),
15702 path_lower: field_path_lower.and_then(Option::flatten),
15703 permissions: field_permissions.and_then(Option::flatten),
15704 time_invited: field_time_invited.and_then(Option::flatten),
15705 };
15706 Ok(Some(result))
15707 }
15708
15709 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
15710 &self,
15711 s: &mut S::SerializeStruct,
15712 ) -> Result<(), S::Error> {
15713 use serde::ser::SerializeStruct;
15714 s.serialize_field("id", &self.id)?;
15715 s.serialize_field("name", &self.name)?;
15716 s.serialize_field("policy", &self.policy)?;
15717 s.serialize_field("preview_url", &self.preview_url)?;
15718 if let Some(val) = &self.access_type {
15719 s.serialize_field("access_type", val)?;
15720 }
15721 if let Some(val) = &self.expected_link_metadata {
15722 s.serialize_field("expected_link_metadata", val)?;
15723 }
15724 if let Some(val) = &self.link_metadata {
15725 s.serialize_field("link_metadata", val)?;
15726 }
15727 if let Some(val) = &self.owner_display_names {
15728 s.serialize_field("owner_display_names", val)?;
15729 }
15730 if let Some(val) = &self.owner_team {
15731 s.serialize_field("owner_team", val)?;
15732 }
15733 if let Some(val) = &self.parent_shared_folder_id {
15734 s.serialize_field("parent_shared_folder_id", val)?;
15735 }
15736 if let Some(val) = &self.path_display {
15737 s.serialize_field("path_display", val)?;
15738 }
15739 if let Some(val) = &self.path_lower {
15740 s.serialize_field("path_lower", val)?;
15741 }
15742 if let Some(val) = &self.permissions {
15743 s.serialize_field("permissions", val)?;
15744 }
15745 if let Some(val) = &self.time_invited {
15746 s.serialize_field("time_invited", val)?;
15747 }
15748 Ok(())
15749 }
15750}
15751
15752impl<'de> ::serde::de::Deserialize<'de> for SharedFileMetadata {
15753 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15754 use serde::de::{MapAccess, Visitor};
15756 struct StructVisitor;
15757 impl<'de> Visitor<'de> for StructVisitor {
15758 type Value = SharedFileMetadata;
15759 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15760 f.write_str("a SharedFileMetadata struct")
15761 }
15762 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
15763 SharedFileMetadata::internal_deserialize(map)
15764 }
15765 }
15766 deserializer.deserialize_struct("SharedFileMetadata", SHARED_FILE_METADATA_FIELDS, StructVisitor)
15767 }
15768}
15769
15770impl ::serde::ser::Serialize for SharedFileMetadata {
15771 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15772 use serde::ser::SerializeStruct;
15774 let mut s = serializer.serialize_struct("SharedFileMetadata", 14)?;
15775 self.internal_serialize::<S>(&mut s)?;
15776 s.end()
15777 }
15778}
15779
15780#[derive(Debug, Clone, PartialEq, Eq)]
15782#[non_exhaustive] pub enum SharedFolderAccessError {
15784 InvalidId,
15786 NotAMember,
15788 InvalidMember,
15790 EmailUnverified,
15792 Unmounted,
15794 Other,
15797}
15798
15799impl<'de> ::serde::de::Deserialize<'de> for SharedFolderAccessError {
15800 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15801 use serde::de::{self, MapAccess, Visitor};
15803 struct EnumVisitor;
15804 impl<'de> Visitor<'de> for EnumVisitor {
15805 type Value = SharedFolderAccessError;
15806 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15807 f.write_str("a SharedFolderAccessError structure")
15808 }
15809 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15810 let tag: &str = match map.next_key()? {
15811 Some(".tag") => map.next_value()?,
15812 _ => return Err(de::Error::missing_field(".tag"))
15813 };
15814 let value = match tag {
15815 "invalid_id" => SharedFolderAccessError::InvalidId,
15816 "not_a_member" => SharedFolderAccessError::NotAMember,
15817 "invalid_member" => SharedFolderAccessError::InvalidMember,
15818 "email_unverified" => SharedFolderAccessError::EmailUnverified,
15819 "unmounted" => SharedFolderAccessError::Unmounted,
15820 _ => SharedFolderAccessError::Other,
15821 };
15822 crate::eat_json_fields(&mut map)?;
15823 Ok(value)
15824 }
15825 }
15826 const VARIANTS: &[&str] = &["invalid_id",
15827 "not_a_member",
15828 "invalid_member",
15829 "email_unverified",
15830 "unmounted",
15831 "other"];
15832 deserializer.deserialize_struct("SharedFolderAccessError", VARIANTS, EnumVisitor)
15833 }
15834}
15835
15836impl ::serde::ser::Serialize for SharedFolderAccessError {
15837 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15838 use serde::ser::SerializeStruct;
15840 match self {
15841 SharedFolderAccessError::InvalidId => {
15842 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
15844 s.serialize_field(".tag", "invalid_id")?;
15845 s.end()
15846 }
15847 SharedFolderAccessError::NotAMember => {
15848 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
15850 s.serialize_field(".tag", "not_a_member")?;
15851 s.end()
15852 }
15853 SharedFolderAccessError::InvalidMember => {
15854 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
15856 s.serialize_field(".tag", "invalid_member")?;
15857 s.end()
15858 }
15859 SharedFolderAccessError::EmailUnverified => {
15860 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
15862 s.serialize_field(".tag", "email_unverified")?;
15863 s.end()
15864 }
15865 SharedFolderAccessError::Unmounted => {
15866 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
15868 s.serialize_field(".tag", "unmounted")?;
15869 s.end()
15870 }
15871 SharedFolderAccessError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15872 }
15873 }
15874}
15875
15876impl ::std::error::Error for SharedFolderAccessError {
15877}
15878
15879impl ::std::fmt::Display for SharedFolderAccessError {
15880 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15881 match self {
15882 SharedFolderAccessError::InvalidId => f.write_str("This shared folder ID is invalid."),
15883 SharedFolderAccessError::NotAMember => f.write_str("The user is not a member of the shared folder thus cannot access it."),
15884 SharedFolderAccessError::InvalidMember => f.write_str("The user does not exist or their account is disabled."),
15885 SharedFolderAccessError::EmailUnverified => f.write_str("Never set."),
15886 SharedFolderAccessError::Unmounted => f.write_str("The shared folder is unmounted."),
15887 _ => write!(f, "{:?}", *self),
15888 }
15889 }
15890}
15891
15892#[derive(Debug, Clone, PartialEq, Eq)]
15893#[non_exhaustive] pub enum SharedFolderMemberError {
15895 InvalidDropboxId,
15897 NotAMember,
15899 NoExplicitAccess(MemberAccessLevelResult),
15901 Other,
15904}
15905
15906impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMemberError {
15907 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15908 use serde::de::{self, MapAccess, Visitor};
15910 struct EnumVisitor;
15911 impl<'de> Visitor<'de> for EnumVisitor {
15912 type Value = SharedFolderMemberError;
15913 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15914 f.write_str("a SharedFolderMemberError structure")
15915 }
15916 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15917 let tag: &str = match map.next_key()? {
15918 Some(".tag") => map.next_value()?,
15919 _ => return Err(de::Error::missing_field(".tag"))
15920 };
15921 let value = match tag {
15922 "invalid_dropbox_id" => SharedFolderMemberError::InvalidDropboxId,
15923 "not_a_member" => SharedFolderMemberError::NotAMember,
15924 "no_explicit_access" => SharedFolderMemberError::NoExplicitAccess(MemberAccessLevelResult::internal_deserialize(&mut map)?),
15925 _ => SharedFolderMemberError::Other,
15926 };
15927 crate::eat_json_fields(&mut map)?;
15928 Ok(value)
15929 }
15930 }
15931 const VARIANTS: &[&str] = &["invalid_dropbox_id",
15932 "not_a_member",
15933 "no_explicit_access",
15934 "other"];
15935 deserializer.deserialize_struct("SharedFolderMemberError", VARIANTS, EnumVisitor)
15936 }
15937}
15938
15939impl ::serde::ser::Serialize for SharedFolderMemberError {
15940 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15941 use serde::ser::SerializeStruct;
15943 match self {
15944 SharedFolderMemberError::InvalidDropboxId => {
15945 let mut s = serializer.serialize_struct("SharedFolderMemberError", 1)?;
15947 s.serialize_field(".tag", "invalid_dropbox_id")?;
15948 s.end()
15949 }
15950 SharedFolderMemberError::NotAMember => {
15951 let mut s = serializer.serialize_struct("SharedFolderMemberError", 1)?;
15953 s.serialize_field(".tag", "not_a_member")?;
15954 s.end()
15955 }
15956 SharedFolderMemberError::NoExplicitAccess(x) => {
15957 let mut s = serializer.serialize_struct("SharedFolderMemberError", 4)?;
15959 s.serialize_field(".tag", "no_explicit_access")?;
15960 x.internal_serialize::<S>(&mut s)?;
15961 s.end()
15962 }
15963 SharedFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15964 }
15965 }
15966}
15967
15968impl ::std::error::Error for SharedFolderMemberError {
15969}
15970
15971impl ::std::fmt::Display for SharedFolderMemberError {
15972 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15973 match self {
15974 SharedFolderMemberError::InvalidDropboxId => f.write_str("The target dropbox_id is invalid."),
15975 SharedFolderMemberError::NotAMember => f.write_str("The target dropbox_id is not a member of the shared folder."),
15976 SharedFolderMemberError::NoExplicitAccess(inner) => write!(f, "The target member only has inherited access to the shared folder: {:?}", inner),
15977 _ => write!(f, "{:?}", *self),
15978 }
15979 }
15980}
15981
15982#[derive(Debug, Clone, PartialEq, Eq)]
15984#[non_exhaustive] pub struct SharedFolderMembers {
15986 pub users: Vec<UserMembershipInfo>,
15988 pub groups: Vec<GroupMembershipInfo>,
15990 pub invitees: Vec<InviteeMembershipInfo>,
15992 pub cursor: Option<String>,
15997}
15998
15999impl SharedFolderMembers {
16000 pub fn new(
16001 users: Vec<UserMembershipInfo>,
16002 groups: Vec<GroupMembershipInfo>,
16003 invitees: Vec<InviteeMembershipInfo>,
16004 ) -> Self {
16005 SharedFolderMembers {
16006 users,
16007 groups,
16008 invitees,
16009 cursor: None,
16010 }
16011 }
16012
16013 pub fn with_cursor(mut self, value: String) -> Self {
16014 self.cursor = Some(value);
16015 self
16016 }
16017}
16018
16019const SHARED_FOLDER_MEMBERS_FIELDS: &[&str] = &["users",
16020 "groups",
16021 "invitees",
16022 "cursor"];
16023impl SharedFolderMembers {
16024 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
16025 map: V,
16026 ) -> Result<SharedFolderMembers, V::Error> {
16027 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
16028 }
16029
16030 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
16031 mut map: V,
16032 optional: bool,
16033 ) -> Result<Option<SharedFolderMembers>, V::Error> {
16034 let mut field_users = None;
16035 let mut field_groups = None;
16036 let mut field_invitees = None;
16037 let mut field_cursor = None;
16038 let mut nothing = true;
16039 while let Some(key) = map.next_key::<&str>()? {
16040 nothing = false;
16041 match key {
16042 "users" => {
16043 if field_users.is_some() {
16044 return Err(::serde::de::Error::duplicate_field("users"));
16045 }
16046 field_users = Some(map.next_value()?);
16047 }
16048 "groups" => {
16049 if field_groups.is_some() {
16050 return Err(::serde::de::Error::duplicate_field("groups"));
16051 }
16052 field_groups = Some(map.next_value()?);
16053 }
16054 "invitees" => {
16055 if field_invitees.is_some() {
16056 return Err(::serde::de::Error::duplicate_field("invitees"));
16057 }
16058 field_invitees = Some(map.next_value()?);
16059 }
16060 "cursor" => {
16061 if field_cursor.is_some() {
16062 return Err(::serde::de::Error::duplicate_field("cursor"));
16063 }
16064 field_cursor = Some(map.next_value()?);
16065 }
16066 _ => {
16067 map.next_value::<::serde_json::Value>()?;
16069 }
16070 }
16071 }
16072 if optional && nothing {
16073 return Ok(None);
16074 }
16075 let result = SharedFolderMembers {
16076 users: field_users.ok_or_else(|| ::serde::de::Error::missing_field("users"))?,
16077 groups: field_groups.ok_or_else(|| ::serde::de::Error::missing_field("groups"))?,
16078 invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?,
16079 cursor: field_cursor.and_then(Option::flatten),
16080 };
16081 Ok(Some(result))
16082 }
16083
16084 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
16085 &self,
16086 s: &mut S::SerializeStruct,
16087 ) -> Result<(), S::Error> {
16088 use serde::ser::SerializeStruct;
16089 s.serialize_field("users", &self.users)?;
16090 s.serialize_field("groups", &self.groups)?;
16091 s.serialize_field("invitees", &self.invitees)?;
16092 if let Some(val) = &self.cursor {
16093 s.serialize_field("cursor", val)?;
16094 }
16095 Ok(())
16096 }
16097}
16098
16099impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMembers {
16100 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16101 use serde::de::{MapAccess, Visitor};
16103 struct StructVisitor;
16104 impl<'de> Visitor<'de> for StructVisitor {
16105 type Value = SharedFolderMembers;
16106 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16107 f.write_str("a SharedFolderMembers struct")
16108 }
16109 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
16110 SharedFolderMembers::internal_deserialize(map)
16111 }
16112 }
16113 deserializer.deserialize_struct("SharedFolderMembers", SHARED_FOLDER_MEMBERS_FIELDS, StructVisitor)
16114 }
16115}
16116
16117impl ::serde::ser::Serialize for SharedFolderMembers {
16118 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16119 use serde::ser::SerializeStruct;
16121 let mut s = serializer.serialize_struct("SharedFolderMembers", 4)?;
16122 self.internal_serialize::<S>(&mut s)?;
16123 s.end()
16124 }
16125}
16126
16127#[derive(Debug, Clone, PartialEq, Eq)]
16129#[non_exhaustive] pub struct SharedFolderMetadata {
16131 pub access_type: AccessLevel,
16133 pub is_inside_team_folder: bool,
16135 pub is_team_folder: bool,
16137 pub name: String,
16139 pub policy: FolderPolicy,
16141 pub preview_url: String,
16143 pub shared_folder_id: crate::types::common::SharedFolderId,
16145 pub time_invited: crate::types::common::DropboxTimestamp,
16147 pub owner_display_names: Option<Vec<String>>,
16151 pub owner_team: Option<crate::types::users::Team>,
16154 pub parent_shared_folder_id: Option<crate::types::common::SharedFolderId>,
16157 pub path_display: Option<String>,
16159 pub path_lower: Option<String>,
16161 pub parent_folder_name: Option<String>,
16163 pub link_metadata: Option<SharedContentLinkMetadata>,
16166 pub permissions: Option<Vec<FolderPermission>>,
16169 pub access_inheritance: AccessInheritance,
16171}
16172
16173impl SharedFolderMetadata {
16174 pub fn new(
16175 access_type: AccessLevel,
16176 is_inside_team_folder: bool,
16177 is_team_folder: bool,
16178 name: String,
16179 policy: FolderPolicy,
16180 preview_url: String,
16181 shared_folder_id: crate::types::common::SharedFolderId,
16182 time_invited: crate::types::common::DropboxTimestamp,
16183 ) -> Self {
16184 SharedFolderMetadata {
16185 access_type,
16186 is_inside_team_folder,
16187 is_team_folder,
16188 name,
16189 policy,
16190 preview_url,
16191 shared_folder_id,
16192 time_invited,
16193 owner_display_names: None,
16194 owner_team: None,
16195 parent_shared_folder_id: None,
16196 path_display: None,
16197 path_lower: None,
16198 parent_folder_name: None,
16199 link_metadata: None,
16200 permissions: None,
16201 access_inheritance: AccessInheritance::Inherit,
16202 }
16203 }
16204
16205 pub fn with_owner_display_names(mut self, value: Vec<String>) -> Self {
16206 self.owner_display_names = Some(value);
16207 self
16208 }
16209
16210 pub fn with_owner_team(mut self, value: crate::types::users::Team) -> Self {
16211 self.owner_team = Some(value);
16212 self
16213 }
16214
16215 pub fn with_parent_shared_folder_id(
16216 mut self,
16217 value: crate::types::common::SharedFolderId,
16218 ) -> Self {
16219 self.parent_shared_folder_id = Some(value);
16220 self
16221 }
16222
16223 pub fn with_path_display(mut self, value: String) -> Self {
16224 self.path_display = Some(value);
16225 self
16226 }
16227
16228 pub fn with_path_lower(mut self, value: String) -> Self {
16229 self.path_lower = Some(value);
16230 self
16231 }
16232
16233 pub fn with_parent_folder_name(mut self, value: String) -> Self {
16234 self.parent_folder_name = Some(value);
16235 self
16236 }
16237
16238 pub fn with_link_metadata(mut self, value: SharedContentLinkMetadata) -> Self {
16239 self.link_metadata = Some(value);
16240 self
16241 }
16242
16243 pub fn with_permissions(mut self, value: Vec<FolderPermission>) -> Self {
16244 self.permissions = Some(value);
16245 self
16246 }
16247
16248 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
16249 self.access_inheritance = value;
16250 self
16251 }
16252}
16253
16254const SHARED_FOLDER_METADATA_FIELDS: &[&str] = &["access_type",
16255 "is_inside_team_folder",
16256 "is_team_folder",
16257 "name",
16258 "policy",
16259 "preview_url",
16260 "shared_folder_id",
16261 "time_invited",
16262 "owner_display_names",
16263 "owner_team",
16264 "parent_shared_folder_id",
16265 "path_display",
16266 "path_lower",
16267 "parent_folder_name",
16268 "link_metadata",
16269 "permissions",
16270 "access_inheritance"];
16271impl SharedFolderMetadata {
16272 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
16273 map: V,
16274 ) -> Result<SharedFolderMetadata, V::Error> {
16275 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
16276 }
16277
16278 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
16279 mut map: V,
16280 optional: bool,
16281 ) -> Result<Option<SharedFolderMetadata>, V::Error> {
16282 let mut field_access_type = None;
16283 let mut field_is_inside_team_folder = None;
16284 let mut field_is_team_folder = None;
16285 let mut field_name = None;
16286 let mut field_policy = None;
16287 let mut field_preview_url = None;
16288 let mut field_shared_folder_id = None;
16289 let mut field_time_invited = None;
16290 let mut field_owner_display_names = None;
16291 let mut field_owner_team = None;
16292 let mut field_parent_shared_folder_id = None;
16293 let mut field_path_display = None;
16294 let mut field_path_lower = None;
16295 let mut field_parent_folder_name = None;
16296 let mut field_link_metadata = None;
16297 let mut field_permissions = None;
16298 let mut field_access_inheritance = None;
16299 let mut nothing = true;
16300 while let Some(key) = map.next_key::<&str>()? {
16301 nothing = false;
16302 match key {
16303 "access_type" => {
16304 if field_access_type.is_some() {
16305 return Err(::serde::de::Error::duplicate_field("access_type"));
16306 }
16307 field_access_type = Some(map.next_value()?);
16308 }
16309 "is_inside_team_folder" => {
16310 if field_is_inside_team_folder.is_some() {
16311 return Err(::serde::de::Error::duplicate_field("is_inside_team_folder"));
16312 }
16313 field_is_inside_team_folder = Some(map.next_value()?);
16314 }
16315 "is_team_folder" => {
16316 if field_is_team_folder.is_some() {
16317 return Err(::serde::de::Error::duplicate_field("is_team_folder"));
16318 }
16319 field_is_team_folder = Some(map.next_value()?);
16320 }
16321 "name" => {
16322 if field_name.is_some() {
16323 return Err(::serde::de::Error::duplicate_field("name"));
16324 }
16325 field_name = Some(map.next_value()?);
16326 }
16327 "policy" => {
16328 if field_policy.is_some() {
16329 return Err(::serde::de::Error::duplicate_field("policy"));
16330 }
16331 field_policy = Some(map.next_value()?);
16332 }
16333 "preview_url" => {
16334 if field_preview_url.is_some() {
16335 return Err(::serde::de::Error::duplicate_field("preview_url"));
16336 }
16337 field_preview_url = Some(map.next_value()?);
16338 }
16339 "shared_folder_id" => {
16340 if field_shared_folder_id.is_some() {
16341 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
16342 }
16343 field_shared_folder_id = Some(map.next_value()?);
16344 }
16345 "time_invited" => {
16346 if field_time_invited.is_some() {
16347 return Err(::serde::de::Error::duplicate_field("time_invited"));
16348 }
16349 field_time_invited = Some(map.next_value()?);
16350 }
16351 "owner_display_names" => {
16352 if field_owner_display_names.is_some() {
16353 return Err(::serde::de::Error::duplicate_field("owner_display_names"));
16354 }
16355 field_owner_display_names = Some(map.next_value()?);
16356 }
16357 "owner_team" => {
16358 if field_owner_team.is_some() {
16359 return Err(::serde::de::Error::duplicate_field("owner_team"));
16360 }
16361 field_owner_team = Some(map.next_value()?);
16362 }
16363 "parent_shared_folder_id" => {
16364 if field_parent_shared_folder_id.is_some() {
16365 return Err(::serde::de::Error::duplicate_field("parent_shared_folder_id"));
16366 }
16367 field_parent_shared_folder_id = Some(map.next_value()?);
16368 }
16369 "path_display" => {
16370 if field_path_display.is_some() {
16371 return Err(::serde::de::Error::duplicate_field("path_display"));
16372 }
16373 field_path_display = Some(map.next_value()?);
16374 }
16375 "path_lower" => {
16376 if field_path_lower.is_some() {
16377 return Err(::serde::de::Error::duplicate_field("path_lower"));
16378 }
16379 field_path_lower = Some(map.next_value()?);
16380 }
16381 "parent_folder_name" => {
16382 if field_parent_folder_name.is_some() {
16383 return Err(::serde::de::Error::duplicate_field("parent_folder_name"));
16384 }
16385 field_parent_folder_name = Some(map.next_value()?);
16386 }
16387 "link_metadata" => {
16388 if field_link_metadata.is_some() {
16389 return Err(::serde::de::Error::duplicate_field("link_metadata"));
16390 }
16391 field_link_metadata = Some(map.next_value()?);
16392 }
16393 "permissions" => {
16394 if field_permissions.is_some() {
16395 return Err(::serde::de::Error::duplicate_field("permissions"));
16396 }
16397 field_permissions = Some(map.next_value()?);
16398 }
16399 "access_inheritance" => {
16400 if field_access_inheritance.is_some() {
16401 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
16402 }
16403 field_access_inheritance = Some(map.next_value()?);
16404 }
16405 _ => {
16406 map.next_value::<::serde_json::Value>()?;
16408 }
16409 }
16410 }
16411 if optional && nothing {
16412 return Ok(None);
16413 }
16414 let result = SharedFolderMetadata {
16415 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
16416 is_inside_team_folder: field_is_inside_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_inside_team_folder"))?,
16417 is_team_folder: field_is_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_team_folder"))?,
16418 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
16419 policy: field_policy.ok_or_else(|| ::serde::de::Error::missing_field("policy"))?,
16420 preview_url: field_preview_url.ok_or_else(|| ::serde::de::Error::missing_field("preview_url"))?,
16421 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
16422 time_invited: field_time_invited.ok_or_else(|| ::serde::de::Error::missing_field("time_invited"))?,
16423 owner_display_names: field_owner_display_names.and_then(Option::flatten),
16424 owner_team: field_owner_team.and_then(Option::flatten),
16425 parent_shared_folder_id: field_parent_shared_folder_id.and_then(Option::flatten),
16426 path_display: field_path_display.and_then(Option::flatten),
16427 path_lower: field_path_lower.and_then(Option::flatten),
16428 parent_folder_name: field_parent_folder_name.and_then(Option::flatten),
16429 link_metadata: field_link_metadata.and_then(Option::flatten),
16430 permissions: field_permissions.and_then(Option::flatten),
16431 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
16432 };
16433 Ok(Some(result))
16434 }
16435
16436 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
16437 &self,
16438 s: &mut S::SerializeStruct,
16439 ) -> Result<(), S::Error> {
16440 use serde::ser::SerializeStruct;
16441 s.serialize_field("access_type", &self.access_type)?;
16442 s.serialize_field("is_inside_team_folder", &self.is_inside_team_folder)?;
16443 s.serialize_field("is_team_folder", &self.is_team_folder)?;
16444 s.serialize_field("name", &self.name)?;
16445 s.serialize_field("policy", &self.policy)?;
16446 s.serialize_field("preview_url", &self.preview_url)?;
16447 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
16448 s.serialize_field("time_invited", &self.time_invited)?;
16449 if let Some(val) = &self.owner_display_names {
16450 s.serialize_field("owner_display_names", val)?;
16451 }
16452 if let Some(val) = &self.owner_team {
16453 s.serialize_field("owner_team", val)?;
16454 }
16455 if let Some(val) = &self.parent_shared_folder_id {
16456 s.serialize_field("parent_shared_folder_id", val)?;
16457 }
16458 if let Some(val) = &self.path_display {
16459 s.serialize_field("path_display", val)?;
16460 }
16461 if let Some(val) = &self.path_lower {
16462 s.serialize_field("path_lower", val)?;
16463 }
16464 if let Some(val) = &self.parent_folder_name {
16465 s.serialize_field("parent_folder_name", val)?;
16466 }
16467 if let Some(val) = &self.link_metadata {
16468 s.serialize_field("link_metadata", val)?;
16469 }
16470 if let Some(val) = &self.permissions {
16471 s.serialize_field("permissions", val)?;
16472 }
16473 if self.access_inheritance != AccessInheritance::Inherit {
16474 s.serialize_field("access_inheritance", &self.access_inheritance)?;
16475 }
16476 Ok(())
16477 }
16478}
16479
16480impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMetadata {
16481 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16482 use serde::de::{MapAccess, Visitor};
16484 struct StructVisitor;
16485 impl<'de> Visitor<'de> for StructVisitor {
16486 type Value = SharedFolderMetadata;
16487 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16488 f.write_str("a SharedFolderMetadata struct")
16489 }
16490 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
16491 SharedFolderMetadata::internal_deserialize(map)
16492 }
16493 }
16494 deserializer.deserialize_struct("SharedFolderMetadata", SHARED_FOLDER_METADATA_FIELDS, StructVisitor)
16495 }
16496}
16497
16498impl ::serde::ser::Serialize for SharedFolderMetadata {
16499 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16500 use serde::ser::SerializeStruct;
16502 let mut s = serializer.serialize_struct("SharedFolderMetadata", 17)?;
16503 self.internal_serialize::<S>(&mut s)?;
16504 s.end()
16505 }
16506}
16507
16508impl From<SharedFolderMetadata> for SharedFolderMetadataBase {
16510 fn from(subtype: SharedFolderMetadata) -> Self {
16511 Self {
16512 access_type: subtype.access_type,
16513 is_inside_team_folder: subtype.is_inside_team_folder,
16514 is_team_folder: subtype.is_team_folder,
16515 owner_display_names: subtype.owner_display_names,
16516 owner_team: subtype.owner_team,
16517 parent_shared_folder_id: subtype.parent_shared_folder_id,
16518 path_display: subtype.path_display,
16519 path_lower: subtype.path_lower,
16520 parent_folder_name: subtype.parent_folder_name,
16521 }
16522 }
16523}
16524#[derive(Debug, Clone, PartialEq, Eq)]
16526#[non_exhaustive] pub struct SharedFolderMetadataBase {
16528 pub access_type: AccessLevel,
16530 pub is_inside_team_folder: bool,
16532 pub is_team_folder: bool,
16534 pub owner_display_names: Option<Vec<String>>,
16538 pub owner_team: Option<crate::types::users::Team>,
16541 pub parent_shared_folder_id: Option<crate::types::common::SharedFolderId>,
16544 pub path_display: Option<String>,
16546 pub path_lower: Option<String>,
16548 pub parent_folder_name: Option<String>,
16550}
16551
16552impl SharedFolderMetadataBase {
16553 pub fn new(
16554 access_type: AccessLevel,
16555 is_inside_team_folder: bool,
16556 is_team_folder: bool,
16557 ) -> Self {
16558 SharedFolderMetadataBase {
16559 access_type,
16560 is_inside_team_folder,
16561 is_team_folder,
16562 owner_display_names: None,
16563 owner_team: None,
16564 parent_shared_folder_id: None,
16565 path_display: None,
16566 path_lower: None,
16567 parent_folder_name: None,
16568 }
16569 }
16570
16571 pub fn with_owner_display_names(mut self, value: Vec<String>) -> Self {
16572 self.owner_display_names = Some(value);
16573 self
16574 }
16575
16576 pub fn with_owner_team(mut self, value: crate::types::users::Team) -> Self {
16577 self.owner_team = Some(value);
16578 self
16579 }
16580
16581 pub fn with_parent_shared_folder_id(
16582 mut self,
16583 value: crate::types::common::SharedFolderId,
16584 ) -> Self {
16585 self.parent_shared_folder_id = Some(value);
16586 self
16587 }
16588
16589 pub fn with_path_display(mut self, value: String) -> Self {
16590 self.path_display = Some(value);
16591 self
16592 }
16593
16594 pub fn with_path_lower(mut self, value: String) -> Self {
16595 self.path_lower = Some(value);
16596 self
16597 }
16598
16599 pub fn with_parent_folder_name(mut self, value: String) -> Self {
16600 self.parent_folder_name = Some(value);
16601 self
16602 }
16603}
16604
16605const SHARED_FOLDER_METADATA_BASE_FIELDS: &[&str] = &["access_type",
16606 "is_inside_team_folder",
16607 "is_team_folder",
16608 "owner_display_names",
16609 "owner_team",
16610 "parent_shared_folder_id",
16611 "path_display",
16612 "path_lower",
16613 "parent_folder_name"];
16614impl SharedFolderMetadataBase {
16615 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
16616 map: V,
16617 ) -> Result<SharedFolderMetadataBase, V::Error> {
16618 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
16619 }
16620
16621 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
16622 mut map: V,
16623 optional: bool,
16624 ) -> Result<Option<SharedFolderMetadataBase>, V::Error> {
16625 let mut field_access_type = None;
16626 let mut field_is_inside_team_folder = None;
16627 let mut field_is_team_folder = None;
16628 let mut field_owner_display_names = None;
16629 let mut field_owner_team = None;
16630 let mut field_parent_shared_folder_id = None;
16631 let mut field_path_display = None;
16632 let mut field_path_lower = None;
16633 let mut field_parent_folder_name = None;
16634 let mut nothing = true;
16635 while let Some(key) = map.next_key::<&str>()? {
16636 nothing = false;
16637 match key {
16638 "access_type" => {
16639 if field_access_type.is_some() {
16640 return Err(::serde::de::Error::duplicate_field("access_type"));
16641 }
16642 field_access_type = Some(map.next_value()?);
16643 }
16644 "is_inside_team_folder" => {
16645 if field_is_inside_team_folder.is_some() {
16646 return Err(::serde::de::Error::duplicate_field("is_inside_team_folder"));
16647 }
16648 field_is_inside_team_folder = Some(map.next_value()?);
16649 }
16650 "is_team_folder" => {
16651 if field_is_team_folder.is_some() {
16652 return Err(::serde::de::Error::duplicate_field("is_team_folder"));
16653 }
16654 field_is_team_folder = Some(map.next_value()?);
16655 }
16656 "owner_display_names" => {
16657 if field_owner_display_names.is_some() {
16658 return Err(::serde::de::Error::duplicate_field("owner_display_names"));
16659 }
16660 field_owner_display_names = Some(map.next_value()?);
16661 }
16662 "owner_team" => {
16663 if field_owner_team.is_some() {
16664 return Err(::serde::de::Error::duplicate_field("owner_team"));
16665 }
16666 field_owner_team = Some(map.next_value()?);
16667 }
16668 "parent_shared_folder_id" => {
16669 if field_parent_shared_folder_id.is_some() {
16670 return Err(::serde::de::Error::duplicate_field("parent_shared_folder_id"));
16671 }
16672 field_parent_shared_folder_id = Some(map.next_value()?);
16673 }
16674 "path_display" => {
16675 if field_path_display.is_some() {
16676 return Err(::serde::de::Error::duplicate_field("path_display"));
16677 }
16678 field_path_display = Some(map.next_value()?);
16679 }
16680 "path_lower" => {
16681 if field_path_lower.is_some() {
16682 return Err(::serde::de::Error::duplicate_field("path_lower"));
16683 }
16684 field_path_lower = Some(map.next_value()?);
16685 }
16686 "parent_folder_name" => {
16687 if field_parent_folder_name.is_some() {
16688 return Err(::serde::de::Error::duplicate_field("parent_folder_name"));
16689 }
16690 field_parent_folder_name = Some(map.next_value()?);
16691 }
16692 _ => {
16693 map.next_value::<::serde_json::Value>()?;
16695 }
16696 }
16697 }
16698 if optional && nothing {
16699 return Ok(None);
16700 }
16701 let result = SharedFolderMetadataBase {
16702 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
16703 is_inside_team_folder: field_is_inside_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_inside_team_folder"))?,
16704 is_team_folder: field_is_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_team_folder"))?,
16705 owner_display_names: field_owner_display_names.and_then(Option::flatten),
16706 owner_team: field_owner_team.and_then(Option::flatten),
16707 parent_shared_folder_id: field_parent_shared_folder_id.and_then(Option::flatten),
16708 path_display: field_path_display.and_then(Option::flatten),
16709 path_lower: field_path_lower.and_then(Option::flatten),
16710 parent_folder_name: field_parent_folder_name.and_then(Option::flatten),
16711 };
16712 Ok(Some(result))
16713 }
16714
16715 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
16716 &self,
16717 s: &mut S::SerializeStruct,
16718 ) -> Result<(), S::Error> {
16719 use serde::ser::SerializeStruct;
16720 s.serialize_field("access_type", &self.access_type)?;
16721 s.serialize_field("is_inside_team_folder", &self.is_inside_team_folder)?;
16722 s.serialize_field("is_team_folder", &self.is_team_folder)?;
16723 if let Some(val) = &self.owner_display_names {
16724 s.serialize_field("owner_display_names", val)?;
16725 }
16726 if let Some(val) = &self.owner_team {
16727 s.serialize_field("owner_team", val)?;
16728 }
16729 if let Some(val) = &self.parent_shared_folder_id {
16730 s.serialize_field("parent_shared_folder_id", val)?;
16731 }
16732 if let Some(val) = &self.path_display {
16733 s.serialize_field("path_display", val)?;
16734 }
16735 if let Some(val) = &self.path_lower {
16736 s.serialize_field("path_lower", val)?;
16737 }
16738 if let Some(val) = &self.parent_folder_name {
16739 s.serialize_field("parent_folder_name", val)?;
16740 }
16741 Ok(())
16742 }
16743}
16744
16745impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMetadataBase {
16746 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16747 use serde::de::{MapAccess, Visitor};
16749 struct StructVisitor;
16750 impl<'de> Visitor<'de> for StructVisitor {
16751 type Value = SharedFolderMetadataBase;
16752 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16753 f.write_str("a SharedFolderMetadataBase struct")
16754 }
16755 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
16756 SharedFolderMetadataBase::internal_deserialize(map)
16757 }
16758 }
16759 deserializer.deserialize_struct("SharedFolderMetadataBase", SHARED_FOLDER_METADATA_BASE_FIELDS, StructVisitor)
16760 }
16761}
16762
16763impl ::serde::ser::Serialize for SharedFolderMetadataBase {
16764 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16765 use serde::ser::SerializeStruct;
16767 let mut s = serializer.serialize_struct("SharedFolderMetadataBase", 9)?;
16768 self.internal_serialize::<S>(&mut s)?;
16769 s.end()
16770 }
16771}
16772
16773#[derive(Debug, Clone, PartialEq, Eq)]
16774#[non_exhaustive] pub enum SharedLinkAccessFailureReason {
16776 LoginRequired,
16778 EmailVerifyRequired,
16782 PasswordRequired,
16784 TeamOnly,
16786 OwnerOnly,
16788 Other,
16791}
16792
16793impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAccessFailureReason {
16794 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16795 use serde::de::{self, MapAccess, Visitor};
16797 struct EnumVisitor;
16798 impl<'de> Visitor<'de> for EnumVisitor {
16799 type Value = SharedLinkAccessFailureReason;
16800 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16801 f.write_str("a SharedLinkAccessFailureReason structure")
16802 }
16803 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
16804 let tag: &str = match map.next_key()? {
16805 Some(".tag") => map.next_value()?,
16806 _ => return Err(de::Error::missing_field(".tag"))
16807 };
16808 let value = match tag {
16809 "login_required" => SharedLinkAccessFailureReason::LoginRequired,
16810 "email_verify_required" => SharedLinkAccessFailureReason::EmailVerifyRequired,
16811 "password_required" => SharedLinkAccessFailureReason::PasswordRequired,
16812 "team_only" => SharedLinkAccessFailureReason::TeamOnly,
16813 "owner_only" => SharedLinkAccessFailureReason::OwnerOnly,
16814 _ => SharedLinkAccessFailureReason::Other,
16815 };
16816 crate::eat_json_fields(&mut map)?;
16817 Ok(value)
16818 }
16819 }
16820 const VARIANTS: &[&str] = &["login_required",
16821 "email_verify_required",
16822 "password_required",
16823 "team_only",
16824 "owner_only",
16825 "other"];
16826 deserializer.deserialize_struct("SharedLinkAccessFailureReason", VARIANTS, EnumVisitor)
16827 }
16828}
16829
16830impl ::serde::ser::Serialize for SharedLinkAccessFailureReason {
16831 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16832 use serde::ser::SerializeStruct;
16834 match self {
16835 SharedLinkAccessFailureReason::LoginRequired => {
16836 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
16838 s.serialize_field(".tag", "login_required")?;
16839 s.end()
16840 }
16841 SharedLinkAccessFailureReason::EmailVerifyRequired => {
16842 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
16844 s.serialize_field(".tag", "email_verify_required")?;
16845 s.end()
16846 }
16847 SharedLinkAccessFailureReason::PasswordRequired => {
16848 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
16850 s.serialize_field(".tag", "password_required")?;
16851 s.end()
16852 }
16853 SharedLinkAccessFailureReason::TeamOnly => {
16854 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
16856 s.serialize_field(".tag", "team_only")?;
16857 s.end()
16858 }
16859 SharedLinkAccessFailureReason::OwnerOnly => {
16860 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
16862 s.serialize_field(".tag", "owner_only")?;
16863 s.end()
16864 }
16865 SharedLinkAccessFailureReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
16866 }
16867 }
16868}
16869
16870#[derive(Debug, Clone, PartialEq, Eq)]
16871#[non_exhaustive] pub enum SharedLinkAlreadyExistsMetadata {
16873 Metadata(SharedLinkMetadata),
16875 Other,
16878}
16879
16880impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAlreadyExistsMetadata {
16881 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16882 use serde::de::{self, MapAccess, Visitor};
16884 struct EnumVisitor;
16885 impl<'de> Visitor<'de> for EnumVisitor {
16886 type Value = SharedLinkAlreadyExistsMetadata;
16887 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16888 f.write_str("a SharedLinkAlreadyExistsMetadata structure")
16889 }
16890 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
16891 let tag: &str = match map.next_key()? {
16892 Some(".tag") => map.next_value()?,
16893 _ => return Err(de::Error::missing_field(".tag"))
16894 };
16895 let value = match tag {
16896 "metadata" => {
16897 match map.next_key()? {
16898 Some("metadata") => SharedLinkAlreadyExistsMetadata::Metadata(map.next_value()?),
16899 None => return Err(de::Error::missing_field("metadata")),
16900 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
16901 }
16902 }
16903 _ => SharedLinkAlreadyExistsMetadata::Other,
16904 };
16905 crate::eat_json_fields(&mut map)?;
16906 Ok(value)
16907 }
16908 }
16909 const VARIANTS: &[&str] = &["metadata",
16910 "other"];
16911 deserializer.deserialize_struct("SharedLinkAlreadyExistsMetadata", VARIANTS, EnumVisitor)
16912 }
16913}
16914
16915impl ::serde::ser::Serialize for SharedLinkAlreadyExistsMetadata {
16916 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16917 use serde::ser::SerializeStruct;
16919 match self {
16920 SharedLinkAlreadyExistsMetadata::Metadata(x) => {
16921 let mut s = serializer.serialize_struct("SharedLinkAlreadyExistsMetadata", 2)?;
16923 s.serialize_field(".tag", "metadata")?;
16924 s.serialize_field("metadata", x)?;
16925 s.end()
16926 }
16927 SharedLinkAlreadyExistsMetadata::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
16928 }
16929 }
16930}
16931
16932#[derive(Debug, Clone, PartialEq, Eq)]
16933#[non_exhaustive] pub enum SharedLinkError {
16935 SharedLinkNotFound,
16937 SharedLinkAccessDenied,
16939 UnsupportedLinkType,
16941 Other,
16944}
16945
16946impl<'de> ::serde::de::Deserialize<'de> for SharedLinkError {
16947 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16948 use serde::de::{self, MapAccess, Visitor};
16950 struct EnumVisitor;
16951 impl<'de> Visitor<'de> for EnumVisitor {
16952 type Value = SharedLinkError;
16953 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16954 f.write_str("a SharedLinkError structure")
16955 }
16956 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
16957 let tag: &str = match map.next_key()? {
16958 Some(".tag") => map.next_value()?,
16959 _ => return Err(de::Error::missing_field(".tag"))
16960 };
16961 let value = match tag {
16962 "shared_link_not_found" => SharedLinkError::SharedLinkNotFound,
16963 "shared_link_access_denied" => SharedLinkError::SharedLinkAccessDenied,
16964 "unsupported_link_type" => SharedLinkError::UnsupportedLinkType,
16965 _ => SharedLinkError::Other,
16966 };
16967 crate::eat_json_fields(&mut map)?;
16968 Ok(value)
16969 }
16970 }
16971 const VARIANTS: &[&str] = &["shared_link_not_found",
16972 "shared_link_access_denied",
16973 "unsupported_link_type",
16974 "other"];
16975 deserializer.deserialize_struct("SharedLinkError", VARIANTS, EnumVisitor)
16976 }
16977}
16978
16979impl ::serde::ser::Serialize for SharedLinkError {
16980 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16981 use serde::ser::SerializeStruct;
16983 match self {
16984 SharedLinkError::SharedLinkNotFound => {
16985 let mut s = serializer.serialize_struct("SharedLinkError", 1)?;
16987 s.serialize_field(".tag", "shared_link_not_found")?;
16988 s.end()
16989 }
16990 SharedLinkError::SharedLinkAccessDenied => {
16991 let mut s = serializer.serialize_struct("SharedLinkError", 1)?;
16993 s.serialize_field(".tag", "shared_link_access_denied")?;
16994 s.end()
16995 }
16996 SharedLinkError::UnsupportedLinkType => {
16997 let mut s = serializer.serialize_struct("SharedLinkError", 1)?;
16999 s.serialize_field(".tag", "unsupported_link_type")?;
17000 s.end()
17001 }
17002 SharedLinkError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
17003 }
17004 }
17005}
17006
17007impl ::std::error::Error for SharedLinkError {
17008}
17009
17010impl ::std::fmt::Display for SharedLinkError {
17011 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17012 match self {
17013 SharedLinkError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
17014 SharedLinkError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
17015 _ => write!(f, "{:?}", *self),
17016 }
17017 }
17018}
17019
17020#[derive(Debug, Clone, PartialEq, Eq)]
17022#[non_exhaustive] pub enum SharedLinkMetadata {
17024 File(FileLinkMetadata),
17025 Folder(FolderLinkMetadata),
17026 Other,
17029}
17030
17031impl<'de> ::serde::de::Deserialize<'de> for SharedLinkMetadata {
17032 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17033 use serde::de::{self, MapAccess, Visitor};
17035 struct EnumVisitor;
17036 impl<'de> Visitor<'de> for EnumVisitor {
17037 type Value = SharedLinkMetadata;
17038 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17039 f.write_str("a SharedLinkMetadata structure")
17040 }
17041 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
17042 let tag = match map.next_key()? {
17043 Some(".tag") => map.next_value()?,
17044 _ => return Err(de::Error::missing_field(".tag"))
17045 };
17046 match tag {
17047 "file" => Ok(SharedLinkMetadata::File(FileLinkMetadata::internal_deserialize(map)?)),
17048 "folder" => Ok(SharedLinkMetadata::Folder(FolderLinkMetadata::internal_deserialize(map)?)),
17049 _ => {
17050 crate::eat_json_fields(&mut map)?;
17051 Ok(SharedLinkMetadata::Other)
17052 }
17053 }
17054 }
17055 }
17056 const VARIANTS: &[&str] = &["file",
17057 "folder"];
17058 deserializer.deserialize_struct("SharedLinkMetadata", VARIANTS, EnumVisitor)
17059 }
17060}
17061
17062impl ::serde::ser::Serialize for SharedLinkMetadata {
17063 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17064 use serde::ser::SerializeStruct;
17066 match self {
17067 SharedLinkMetadata::File(x) => {
17068 let mut s = serializer.serialize_struct("SharedLinkMetadata", 13)?;
17069 s.serialize_field(".tag", "file")?;
17070 x.internal_serialize::<S>(&mut s)?;
17071 s.end()
17072 }
17073 SharedLinkMetadata::Folder(x) => {
17074 let mut s = serializer.serialize_struct("SharedLinkMetadata", 9)?;
17075 s.serialize_field(".tag", "folder")?;
17076 x.internal_serialize::<S>(&mut s)?;
17077 s.end()
17078 }
17079 SharedLinkMetadata::Other => Err(::serde::ser::Error::custom("cannot serialize unknown variant"))
17080 }
17081 }
17082}
17083
17084#[derive(Debug, Clone, PartialEq, Eq)]
17086#[non_exhaustive] pub enum SharedLinkPolicy {
17088 Anyone,
17090 Team,
17092 Members,
17094 Other,
17097}
17098
17099impl<'de> ::serde::de::Deserialize<'de> for SharedLinkPolicy {
17100 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17101 use serde::de::{self, MapAccess, Visitor};
17103 struct EnumVisitor;
17104 impl<'de> Visitor<'de> for EnumVisitor {
17105 type Value = SharedLinkPolicy;
17106 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17107 f.write_str("a SharedLinkPolicy structure")
17108 }
17109 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
17110 let tag: &str = match map.next_key()? {
17111 Some(".tag") => map.next_value()?,
17112 _ => return Err(de::Error::missing_field(".tag"))
17113 };
17114 let value = match tag {
17115 "anyone" => SharedLinkPolicy::Anyone,
17116 "team" => SharedLinkPolicy::Team,
17117 "members" => SharedLinkPolicy::Members,
17118 _ => SharedLinkPolicy::Other,
17119 };
17120 crate::eat_json_fields(&mut map)?;
17121 Ok(value)
17122 }
17123 }
17124 const VARIANTS: &[&str] = &["anyone",
17125 "team",
17126 "members",
17127 "other"];
17128 deserializer.deserialize_struct("SharedLinkPolicy", VARIANTS, EnumVisitor)
17129 }
17130}
17131
17132impl ::serde::ser::Serialize for SharedLinkPolicy {
17133 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17134 use serde::ser::SerializeStruct;
17136 match self {
17137 SharedLinkPolicy::Anyone => {
17138 let mut s = serializer.serialize_struct("SharedLinkPolicy", 1)?;
17140 s.serialize_field(".tag", "anyone")?;
17141 s.end()
17142 }
17143 SharedLinkPolicy::Team => {
17144 let mut s = serializer.serialize_struct("SharedLinkPolicy", 1)?;
17146 s.serialize_field(".tag", "team")?;
17147 s.end()
17148 }
17149 SharedLinkPolicy::Members => {
17150 let mut s = serializer.serialize_struct("SharedLinkPolicy", 1)?;
17152 s.serialize_field(".tag", "members")?;
17153 s.end()
17154 }
17155 SharedLinkPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
17156 }
17157 }
17158}
17159
17160#[derive(Debug, Clone, PartialEq, Eq, Default)]
17161#[non_exhaustive] pub struct SharedLinkSettings {
17163 pub require_password: Option<bool>,
17165 pub link_password: Option<String>,
17167 pub expires: Option<crate::types::common::DropboxTimestamp>,
17169 pub audience: Option<LinkAudience>,
17174 pub access: Option<RequestedLinkAccessLevel>,
17177 pub requested_visibility: Option<RequestedVisibility>,
17179 pub allow_download: Option<bool>,
17181}
17182
17183impl SharedLinkSettings {
17184 pub fn with_require_password(mut self, value: bool) -> Self {
17185 self.require_password = Some(value);
17186 self
17187 }
17188
17189 pub fn with_link_password(mut self, value: String) -> Self {
17190 self.link_password = Some(value);
17191 self
17192 }
17193
17194 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
17195 self.expires = Some(value);
17196 self
17197 }
17198
17199 pub fn with_audience(mut self, value: LinkAudience) -> Self {
17200 self.audience = Some(value);
17201 self
17202 }
17203
17204 pub fn with_access(mut self, value: RequestedLinkAccessLevel) -> Self {
17205 self.access = Some(value);
17206 self
17207 }
17208
17209 pub fn with_requested_visibility(mut self, value: RequestedVisibility) -> Self {
17210 self.requested_visibility = Some(value);
17211 self
17212 }
17213
17214 pub fn with_allow_download(mut self, value: bool) -> Self {
17215 self.allow_download = Some(value);
17216 self
17217 }
17218}
17219
17220const SHARED_LINK_SETTINGS_FIELDS: &[&str] = &["require_password",
17221 "link_password",
17222 "expires",
17223 "audience",
17224 "access",
17225 "requested_visibility",
17226 "allow_download"];
17227impl SharedLinkSettings {
17228 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
17230 mut map: V,
17231 ) -> Result<SharedLinkSettings, V::Error> {
17232 let mut field_require_password = None;
17233 let mut field_link_password = None;
17234 let mut field_expires = None;
17235 let mut field_audience = None;
17236 let mut field_access = None;
17237 let mut field_requested_visibility = None;
17238 let mut field_allow_download = None;
17239 while let Some(key) = map.next_key::<&str>()? {
17240 match key {
17241 "require_password" => {
17242 if field_require_password.is_some() {
17243 return Err(::serde::de::Error::duplicate_field("require_password"));
17244 }
17245 field_require_password = Some(map.next_value()?);
17246 }
17247 "link_password" => {
17248 if field_link_password.is_some() {
17249 return Err(::serde::de::Error::duplicate_field("link_password"));
17250 }
17251 field_link_password = Some(map.next_value()?);
17252 }
17253 "expires" => {
17254 if field_expires.is_some() {
17255 return Err(::serde::de::Error::duplicate_field("expires"));
17256 }
17257 field_expires = Some(map.next_value()?);
17258 }
17259 "audience" => {
17260 if field_audience.is_some() {
17261 return Err(::serde::de::Error::duplicate_field("audience"));
17262 }
17263 field_audience = Some(map.next_value()?);
17264 }
17265 "access" => {
17266 if field_access.is_some() {
17267 return Err(::serde::de::Error::duplicate_field("access"));
17268 }
17269 field_access = Some(map.next_value()?);
17270 }
17271 "requested_visibility" => {
17272 if field_requested_visibility.is_some() {
17273 return Err(::serde::de::Error::duplicate_field("requested_visibility"));
17274 }
17275 field_requested_visibility = Some(map.next_value()?);
17276 }
17277 "allow_download" => {
17278 if field_allow_download.is_some() {
17279 return Err(::serde::de::Error::duplicate_field("allow_download"));
17280 }
17281 field_allow_download = Some(map.next_value()?);
17282 }
17283 _ => {
17284 map.next_value::<::serde_json::Value>()?;
17286 }
17287 }
17288 }
17289 let result = SharedLinkSettings {
17290 require_password: field_require_password.and_then(Option::flatten),
17291 link_password: field_link_password.and_then(Option::flatten),
17292 expires: field_expires.and_then(Option::flatten),
17293 audience: field_audience.and_then(Option::flatten),
17294 access: field_access.and_then(Option::flatten),
17295 requested_visibility: field_requested_visibility.and_then(Option::flatten),
17296 allow_download: field_allow_download.and_then(Option::flatten),
17297 };
17298 Ok(result)
17299 }
17300
17301 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
17302 &self,
17303 s: &mut S::SerializeStruct,
17304 ) -> Result<(), S::Error> {
17305 use serde::ser::SerializeStruct;
17306 if let Some(val) = &self.require_password {
17307 s.serialize_field("require_password", val)?;
17308 }
17309 if let Some(val) = &self.link_password {
17310 s.serialize_field("link_password", val)?;
17311 }
17312 if let Some(val) = &self.expires {
17313 s.serialize_field("expires", val)?;
17314 }
17315 if let Some(val) = &self.audience {
17316 s.serialize_field("audience", val)?;
17317 }
17318 if let Some(val) = &self.access {
17319 s.serialize_field("access", val)?;
17320 }
17321 if let Some(val) = &self.requested_visibility {
17322 s.serialize_field("requested_visibility", val)?;
17323 }
17324 if let Some(val) = &self.allow_download {
17325 s.serialize_field("allow_download", val)?;
17326 }
17327 Ok(())
17328 }
17329}
17330
17331impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettings {
17332 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17333 use serde::de::{MapAccess, Visitor};
17335 struct StructVisitor;
17336 impl<'de> Visitor<'de> for StructVisitor {
17337 type Value = SharedLinkSettings;
17338 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17339 f.write_str("a SharedLinkSettings struct")
17340 }
17341 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
17342 SharedLinkSettings::internal_deserialize(map)
17343 }
17344 }
17345 deserializer.deserialize_struct("SharedLinkSettings", SHARED_LINK_SETTINGS_FIELDS, StructVisitor)
17346 }
17347}
17348
17349impl ::serde::ser::Serialize for SharedLinkSettings {
17350 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17351 use serde::ser::SerializeStruct;
17353 let mut s = serializer.serialize_struct("SharedLinkSettings", 7)?;
17354 self.internal_serialize::<S>(&mut s)?;
17355 s.end()
17356 }
17357}
17358
17359#[derive(Debug, Clone, PartialEq, Eq)]
17360pub enum SharedLinkSettingsError {
17361 InvalidSettings,
17366 NotAuthorized,
17371}
17372
17373impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsError {
17374 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17375 use serde::de::{self, MapAccess, Visitor};
17377 struct EnumVisitor;
17378 impl<'de> Visitor<'de> for EnumVisitor {
17379 type Value = SharedLinkSettingsError;
17380 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17381 f.write_str("a SharedLinkSettingsError structure")
17382 }
17383 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
17384 let tag: &str = match map.next_key()? {
17385 Some(".tag") => map.next_value()?,
17386 _ => return Err(de::Error::missing_field(".tag"))
17387 };
17388 let value = match tag {
17389 "invalid_settings" => SharedLinkSettingsError::InvalidSettings,
17390 "not_authorized" => SharedLinkSettingsError::NotAuthorized,
17391 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
17392 };
17393 crate::eat_json_fields(&mut map)?;
17394 Ok(value)
17395 }
17396 }
17397 const VARIANTS: &[&str] = &["invalid_settings",
17398 "not_authorized"];
17399 deserializer.deserialize_struct("SharedLinkSettingsError", VARIANTS, EnumVisitor)
17400 }
17401}
17402
17403impl ::serde::ser::Serialize for SharedLinkSettingsError {
17404 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17405 use serde::ser::SerializeStruct;
17407 match self {
17408 SharedLinkSettingsError::InvalidSettings => {
17409 let mut s = serializer.serialize_struct("SharedLinkSettingsError", 1)?;
17411 s.serialize_field(".tag", "invalid_settings")?;
17412 s.end()
17413 }
17414 SharedLinkSettingsError::NotAuthorized => {
17415 let mut s = serializer.serialize_struct("SharedLinkSettingsError", 1)?;
17417 s.serialize_field(".tag", "not_authorized")?;
17418 s.end()
17419 }
17420 }
17421 }
17422}
17423
17424impl ::std::error::Error for SharedLinkSettingsError {
17425}
17426
17427impl ::std::fmt::Display for SharedLinkSettingsError {
17428 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17429 write!(f, "{:?}", *self)
17430 }
17431}
17432
17433#[derive(Debug, Clone, PartialEq, Eq)]
17435#[non_exhaustive] pub enum SharingFileAccessError {
17437 NoPermission,
17439 InvalidFile,
17441 IsFolder,
17443 InsidePublicFolder,
17445 InsideOsxPackage,
17447 Other,
17450}
17451
17452impl<'de> ::serde::de::Deserialize<'de> for SharingFileAccessError {
17453 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17454 use serde::de::{self, MapAccess, Visitor};
17456 struct EnumVisitor;
17457 impl<'de> Visitor<'de> for EnumVisitor {
17458 type Value = SharingFileAccessError;
17459 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17460 f.write_str("a SharingFileAccessError structure")
17461 }
17462 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
17463 let tag: &str = match map.next_key()? {
17464 Some(".tag") => map.next_value()?,
17465 _ => return Err(de::Error::missing_field(".tag"))
17466 };
17467 let value = match tag {
17468 "no_permission" => SharingFileAccessError::NoPermission,
17469 "invalid_file" => SharingFileAccessError::InvalidFile,
17470 "is_folder" => SharingFileAccessError::IsFolder,
17471 "inside_public_folder" => SharingFileAccessError::InsidePublicFolder,
17472 "inside_osx_package" => SharingFileAccessError::InsideOsxPackage,
17473 _ => SharingFileAccessError::Other,
17474 };
17475 crate::eat_json_fields(&mut map)?;
17476 Ok(value)
17477 }
17478 }
17479 const VARIANTS: &[&str] = &["no_permission",
17480 "invalid_file",
17481 "is_folder",
17482 "inside_public_folder",
17483 "inside_osx_package",
17484 "other"];
17485 deserializer.deserialize_struct("SharingFileAccessError", VARIANTS, EnumVisitor)
17486 }
17487}
17488
17489impl ::serde::ser::Serialize for SharingFileAccessError {
17490 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17491 use serde::ser::SerializeStruct;
17493 match self {
17494 SharingFileAccessError::NoPermission => {
17495 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
17497 s.serialize_field(".tag", "no_permission")?;
17498 s.end()
17499 }
17500 SharingFileAccessError::InvalidFile => {
17501 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
17503 s.serialize_field(".tag", "invalid_file")?;
17504 s.end()
17505 }
17506 SharingFileAccessError::IsFolder => {
17507 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
17509 s.serialize_field(".tag", "is_folder")?;
17510 s.end()
17511 }
17512 SharingFileAccessError::InsidePublicFolder => {
17513 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
17515 s.serialize_field(".tag", "inside_public_folder")?;
17516 s.end()
17517 }
17518 SharingFileAccessError::InsideOsxPackage => {
17519 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
17521 s.serialize_field(".tag", "inside_osx_package")?;
17522 s.end()
17523 }
17524 SharingFileAccessError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
17525 }
17526 }
17527}
17528
17529impl ::std::error::Error for SharingFileAccessError {
17530}
17531
17532impl ::std::fmt::Display for SharingFileAccessError {
17533 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17534 match self {
17535 SharingFileAccessError::NoPermission => f.write_str("Current user does not have sufficient privileges to perform the desired action."),
17536 SharingFileAccessError::InvalidFile => f.write_str("File specified was not found."),
17537 SharingFileAccessError::IsFolder => f.write_str("A folder can't be shared this way. Use folder sharing or a shared link instead."),
17538 SharingFileAccessError::InsidePublicFolder => f.write_str("A file inside a public folder can't be shared this way. Use a public link instead."),
17539 SharingFileAccessError::InsideOsxPackage => f.write_str("A Mac OS X package can't be shared this way. Use a shared link instead."),
17540 _ => write!(f, "{:?}", *self),
17541 }
17542 }
17543}
17544
17545#[derive(Debug, Clone, PartialEq, Eq)]
17547#[non_exhaustive] pub enum SharingUserError {
17549 EmailUnverified,
17553 Other,
17556}
17557
17558impl<'de> ::serde::de::Deserialize<'de> for SharingUserError {
17559 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17560 use serde::de::{self, MapAccess, Visitor};
17562 struct EnumVisitor;
17563 impl<'de> Visitor<'de> for EnumVisitor {
17564 type Value = SharingUserError;
17565 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17566 f.write_str("a SharingUserError structure")
17567 }
17568 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
17569 let tag: &str = match map.next_key()? {
17570 Some(".tag") => map.next_value()?,
17571 _ => return Err(de::Error::missing_field(".tag"))
17572 };
17573 let value = match tag {
17574 "email_unverified" => SharingUserError::EmailUnverified,
17575 _ => SharingUserError::Other,
17576 };
17577 crate::eat_json_fields(&mut map)?;
17578 Ok(value)
17579 }
17580 }
17581 const VARIANTS: &[&str] = &["email_unverified",
17582 "other"];
17583 deserializer.deserialize_struct("SharingUserError", VARIANTS, EnumVisitor)
17584 }
17585}
17586
17587impl ::serde::ser::Serialize for SharingUserError {
17588 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17589 use serde::ser::SerializeStruct;
17591 match self {
17592 SharingUserError::EmailUnverified => {
17593 let mut s = serializer.serialize_struct("SharingUserError", 1)?;
17595 s.serialize_field(".tag", "email_unverified")?;
17596 s.end()
17597 }
17598 SharingUserError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
17599 }
17600 }
17601}
17602
17603impl ::std::error::Error for SharingUserError {
17604}
17605
17606impl ::std::fmt::Display for SharingUserError {
17607 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17608 write!(f, "{:?}", *self)
17609 }
17610}
17611
17612#[derive(Debug, Clone, PartialEq, Eq)]
17614#[non_exhaustive] pub struct TeamMemberInfo {
17616 pub team_info: TeamInfo,
17618 pub display_name: String,
17620 pub member_id: Option<String>,
17623}
17624
17625impl TeamMemberInfo {
17626 pub fn new(team_info: TeamInfo, display_name: String) -> Self {
17627 TeamMemberInfo {
17628 team_info,
17629 display_name,
17630 member_id: None,
17631 }
17632 }
17633
17634 pub fn with_member_id(mut self, value: String) -> Self {
17635 self.member_id = Some(value);
17636 self
17637 }
17638}
17639
17640const TEAM_MEMBER_INFO_FIELDS: &[&str] = &["team_info",
17641 "display_name",
17642 "member_id"];
17643impl TeamMemberInfo {
17644 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
17645 map: V,
17646 ) -> Result<TeamMemberInfo, V::Error> {
17647 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
17648 }
17649
17650 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
17651 mut map: V,
17652 optional: bool,
17653 ) -> Result<Option<TeamMemberInfo>, V::Error> {
17654 let mut field_team_info = None;
17655 let mut field_display_name = None;
17656 let mut field_member_id = None;
17657 let mut nothing = true;
17658 while let Some(key) = map.next_key::<&str>()? {
17659 nothing = false;
17660 match key {
17661 "team_info" => {
17662 if field_team_info.is_some() {
17663 return Err(::serde::de::Error::duplicate_field("team_info"));
17664 }
17665 field_team_info = Some(map.next_value()?);
17666 }
17667 "display_name" => {
17668 if field_display_name.is_some() {
17669 return Err(::serde::de::Error::duplicate_field("display_name"));
17670 }
17671 field_display_name = Some(map.next_value()?);
17672 }
17673 "member_id" => {
17674 if field_member_id.is_some() {
17675 return Err(::serde::de::Error::duplicate_field("member_id"));
17676 }
17677 field_member_id = Some(map.next_value()?);
17678 }
17679 _ => {
17680 map.next_value::<::serde_json::Value>()?;
17682 }
17683 }
17684 }
17685 if optional && nothing {
17686 return Ok(None);
17687 }
17688 let result = TeamMemberInfo {
17689 team_info: field_team_info.ok_or_else(|| ::serde::de::Error::missing_field("team_info"))?,
17690 display_name: field_display_name.ok_or_else(|| ::serde::de::Error::missing_field("display_name"))?,
17691 member_id: field_member_id.and_then(Option::flatten),
17692 };
17693 Ok(Some(result))
17694 }
17695
17696 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
17697 &self,
17698 s: &mut S::SerializeStruct,
17699 ) -> Result<(), S::Error> {
17700 use serde::ser::SerializeStruct;
17701 s.serialize_field("team_info", &self.team_info)?;
17702 s.serialize_field("display_name", &self.display_name)?;
17703 if let Some(val) = &self.member_id {
17704 s.serialize_field("member_id", val)?;
17705 }
17706 Ok(())
17707 }
17708}
17709
17710impl<'de> ::serde::de::Deserialize<'de> for TeamMemberInfo {
17711 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17712 use serde::de::{MapAccess, Visitor};
17714 struct StructVisitor;
17715 impl<'de> Visitor<'de> for StructVisitor {
17716 type Value = TeamMemberInfo;
17717 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17718 f.write_str("a TeamMemberInfo struct")
17719 }
17720 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
17721 TeamMemberInfo::internal_deserialize(map)
17722 }
17723 }
17724 deserializer.deserialize_struct("TeamMemberInfo", TEAM_MEMBER_INFO_FIELDS, StructVisitor)
17725 }
17726}
17727
17728impl ::serde::ser::Serialize for TeamMemberInfo {
17729 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17730 use serde::ser::SerializeStruct;
17732 let mut s = serializer.serialize_struct("TeamMemberInfo", 3)?;
17733 self.internal_serialize::<S>(&mut s)?;
17734 s.end()
17735 }
17736}
17737
17738#[derive(Debug, Clone, PartialEq, Eq)]
17739#[non_exhaustive] pub struct TransferFolderArg {
17741 pub shared_folder_id: crate::types::common::SharedFolderId,
17743 pub to_dropbox_id: DropboxId,
17745}
17746
17747impl TransferFolderArg {
17748 pub fn new(
17749 shared_folder_id: crate::types::common::SharedFolderId,
17750 to_dropbox_id: DropboxId,
17751 ) -> Self {
17752 TransferFolderArg {
17753 shared_folder_id,
17754 to_dropbox_id,
17755 }
17756 }
17757}
17758
17759const TRANSFER_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id",
17760 "to_dropbox_id"];
17761impl TransferFolderArg {
17762 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
17763 map: V,
17764 ) -> Result<TransferFolderArg, V::Error> {
17765 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
17766 }
17767
17768 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
17769 mut map: V,
17770 optional: bool,
17771 ) -> Result<Option<TransferFolderArg>, V::Error> {
17772 let mut field_shared_folder_id = None;
17773 let mut field_to_dropbox_id = None;
17774 let mut nothing = true;
17775 while let Some(key) = map.next_key::<&str>()? {
17776 nothing = false;
17777 match key {
17778 "shared_folder_id" => {
17779 if field_shared_folder_id.is_some() {
17780 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
17781 }
17782 field_shared_folder_id = Some(map.next_value()?);
17783 }
17784 "to_dropbox_id" => {
17785 if field_to_dropbox_id.is_some() {
17786 return Err(::serde::de::Error::duplicate_field("to_dropbox_id"));
17787 }
17788 field_to_dropbox_id = Some(map.next_value()?);
17789 }
17790 _ => {
17791 map.next_value::<::serde_json::Value>()?;
17793 }
17794 }
17795 }
17796 if optional && nothing {
17797 return Ok(None);
17798 }
17799 let result = TransferFolderArg {
17800 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
17801 to_dropbox_id: field_to_dropbox_id.ok_or_else(|| ::serde::de::Error::missing_field("to_dropbox_id"))?,
17802 };
17803 Ok(Some(result))
17804 }
17805
17806 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
17807 &self,
17808 s: &mut S::SerializeStruct,
17809 ) -> Result<(), S::Error> {
17810 use serde::ser::SerializeStruct;
17811 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
17812 s.serialize_field("to_dropbox_id", &self.to_dropbox_id)?;
17813 Ok(())
17814 }
17815}
17816
17817impl<'de> ::serde::de::Deserialize<'de> for TransferFolderArg {
17818 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17819 use serde::de::{MapAccess, Visitor};
17821 struct StructVisitor;
17822 impl<'de> Visitor<'de> for StructVisitor {
17823 type Value = TransferFolderArg;
17824 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17825 f.write_str("a TransferFolderArg struct")
17826 }
17827 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
17828 TransferFolderArg::internal_deserialize(map)
17829 }
17830 }
17831 deserializer.deserialize_struct("TransferFolderArg", TRANSFER_FOLDER_ARG_FIELDS, StructVisitor)
17832 }
17833}
17834
17835impl ::serde::ser::Serialize for TransferFolderArg {
17836 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17837 use serde::ser::SerializeStruct;
17839 let mut s = serializer.serialize_struct("TransferFolderArg", 2)?;
17840 self.internal_serialize::<S>(&mut s)?;
17841 s.end()
17842 }
17843}
17844
17845#[derive(Debug, Clone, PartialEq, Eq)]
17846#[non_exhaustive] pub enum TransferFolderError {
17848 AccessError(SharedFolderAccessError),
17849 InvalidDropboxId,
17851 NewOwnerNotAMember,
17853 NewOwnerUnmounted,
17855 NewOwnerEmailUnverified,
17859 TeamFolder,
17861 NoPermission,
17863 Other,
17866}
17867
17868impl<'de> ::serde::de::Deserialize<'de> for TransferFolderError {
17869 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17870 use serde::de::{self, MapAccess, Visitor};
17872 struct EnumVisitor;
17873 impl<'de> Visitor<'de> for EnumVisitor {
17874 type Value = TransferFolderError;
17875 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17876 f.write_str("a TransferFolderError structure")
17877 }
17878 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
17879 let tag: &str = match map.next_key()? {
17880 Some(".tag") => map.next_value()?,
17881 _ => return Err(de::Error::missing_field(".tag"))
17882 };
17883 let value = match tag {
17884 "access_error" => {
17885 match map.next_key()? {
17886 Some("access_error") => TransferFolderError::AccessError(map.next_value()?),
17887 None => return Err(de::Error::missing_field("access_error")),
17888 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
17889 }
17890 }
17891 "invalid_dropbox_id" => TransferFolderError::InvalidDropboxId,
17892 "new_owner_not_a_member" => TransferFolderError::NewOwnerNotAMember,
17893 "new_owner_unmounted" => TransferFolderError::NewOwnerUnmounted,
17894 "new_owner_email_unverified" => TransferFolderError::NewOwnerEmailUnverified,
17895 "team_folder" => TransferFolderError::TeamFolder,
17896 "no_permission" => TransferFolderError::NoPermission,
17897 _ => TransferFolderError::Other,
17898 };
17899 crate::eat_json_fields(&mut map)?;
17900 Ok(value)
17901 }
17902 }
17903 const VARIANTS: &[&str] = &["access_error",
17904 "invalid_dropbox_id",
17905 "new_owner_not_a_member",
17906 "new_owner_unmounted",
17907 "new_owner_email_unverified",
17908 "team_folder",
17909 "no_permission",
17910 "other"];
17911 deserializer.deserialize_struct("TransferFolderError", VARIANTS, EnumVisitor)
17912 }
17913}
17914
17915impl ::serde::ser::Serialize for TransferFolderError {
17916 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17917 use serde::ser::SerializeStruct;
17919 match self {
17920 TransferFolderError::AccessError(x) => {
17921 let mut s = serializer.serialize_struct("TransferFolderError", 2)?;
17923 s.serialize_field(".tag", "access_error")?;
17924 s.serialize_field("access_error", x)?;
17925 s.end()
17926 }
17927 TransferFolderError::InvalidDropboxId => {
17928 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
17930 s.serialize_field(".tag", "invalid_dropbox_id")?;
17931 s.end()
17932 }
17933 TransferFolderError::NewOwnerNotAMember => {
17934 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
17936 s.serialize_field(".tag", "new_owner_not_a_member")?;
17937 s.end()
17938 }
17939 TransferFolderError::NewOwnerUnmounted => {
17940 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
17942 s.serialize_field(".tag", "new_owner_unmounted")?;
17943 s.end()
17944 }
17945 TransferFolderError::NewOwnerEmailUnverified => {
17946 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
17948 s.serialize_field(".tag", "new_owner_email_unverified")?;
17949 s.end()
17950 }
17951 TransferFolderError::TeamFolder => {
17952 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
17954 s.serialize_field(".tag", "team_folder")?;
17955 s.end()
17956 }
17957 TransferFolderError::NoPermission => {
17958 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
17960 s.serialize_field(".tag", "no_permission")?;
17961 s.end()
17962 }
17963 TransferFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
17964 }
17965 }
17966}
17967
17968impl ::std::error::Error for TransferFolderError {
17969 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
17970 match self {
17971 TransferFolderError::AccessError(inner) => Some(inner),
17972 _ => None,
17973 }
17974 }
17975}
17976
17977impl ::std::fmt::Display for TransferFolderError {
17978 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17979 match self {
17980 TransferFolderError::AccessError(inner) => write!(f, "TransferFolderError: {}", inner),
17981 TransferFolderError::NewOwnerNotAMember => f.write_str("The new designated owner is not currently a member of the shared folder."),
17982 TransferFolderError::NewOwnerUnmounted => f.write_str("The new designated owner has not added the folder to their Dropbox."),
17983 TransferFolderError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
17984 TransferFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
17985 _ => write!(f, "{:?}", *self),
17986 }
17987 }
17988}
17989
17990#[derive(Debug, Clone, PartialEq, Eq)]
17991#[non_exhaustive] pub struct UnmountFolderArg {
17993 pub shared_folder_id: crate::types::common::SharedFolderId,
17995}
17996
17997impl UnmountFolderArg {
17998 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
17999 UnmountFolderArg {
18000 shared_folder_id,
18001 }
18002 }
18003}
18004
18005const UNMOUNT_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id"];
18006impl UnmountFolderArg {
18007 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
18008 map: V,
18009 ) -> Result<UnmountFolderArg, V::Error> {
18010 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
18011 }
18012
18013 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
18014 mut map: V,
18015 optional: bool,
18016 ) -> Result<Option<UnmountFolderArg>, V::Error> {
18017 let mut field_shared_folder_id = None;
18018 let mut nothing = true;
18019 while let Some(key) = map.next_key::<&str>()? {
18020 nothing = false;
18021 match key {
18022 "shared_folder_id" => {
18023 if field_shared_folder_id.is_some() {
18024 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
18025 }
18026 field_shared_folder_id = Some(map.next_value()?);
18027 }
18028 _ => {
18029 map.next_value::<::serde_json::Value>()?;
18031 }
18032 }
18033 }
18034 if optional && nothing {
18035 return Ok(None);
18036 }
18037 let result = UnmountFolderArg {
18038 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
18039 };
18040 Ok(Some(result))
18041 }
18042
18043 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
18044 &self,
18045 s: &mut S::SerializeStruct,
18046 ) -> Result<(), S::Error> {
18047 use serde::ser::SerializeStruct;
18048 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
18049 Ok(())
18050 }
18051}
18052
18053impl<'de> ::serde::de::Deserialize<'de> for UnmountFolderArg {
18054 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18055 use serde::de::{MapAccess, Visitor};
18057 struct StructVisitor;
18058 impl<'de> Visitor<'de> for StructVisitor {
18059 type Value = UnmountFolderArg;
18060 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18061 f.write_str("a UnmountFolderArg struct")
18062 }
18063 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
18064 UnmountFolderArg::internal_deserialize(map)
18065 }
18066 }
18067 deserializer.deserialize_struct("UnmountFolderArg", UNMOUNT_FOLDER_ARG_FIELDS, StructVisitor)
18068 }
18069}
18070
18071impl ::serde::ser::Serialize for UnmountFolderArg {
18072 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18073 use serde::ser::SerializeStruct;
18075 let mut s = serializer.serialize_struct("UnmountFolderArg", 1)?;
18076 self.internal_serialize::<S>(&mut s)?;
18077 s.end()
18078 }
18079}
18080
18081#[derive(Debug, Clone, PartialEq, Eq)]
18082#[non_exhaustive] pub enum UnmountFolderError {
18084 AccessError(SharedFolderAccessError),
18085 NoPermission,
18087 NotUnmountable,
18090 Other,
18093}
18094
18095impl<'de> ::serde::de::Deserialize<'de> for UnmountFolderError {
18096 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18097 use serde::de::{self, MapAccess, Visitor};
18099 struct EnumVisitor;
18100 impl<'de> Visitor<'de> for EnumVisitor {
18101 type Value = UnmountFolderError;
18102 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18103 f.write_str("a UnmountFolderError structure")
18104 }
18105 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18106 let tag: &str = match map.next_key()? {
18107 Some(".tag") => map.next_value()?,
18108 _ => return Err(de::Error::missing_field(".tag"))
18109 };
18110 let value = match tag {
18111 "access_error" => {
18112 match map.next_key()? {
18113 Some("access_error") => UnmountFolderError::AccessError(map.next_value()?),
18114 None => return Err(de::Error::missing_field("access_error")),
18115 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
18116 }
18117 }
18118 "no_permission" => UnmountFolderError::NoPermission,
18119 "not_unmountable" => UnmountFolderError::NotUnmountable,
18120 _ => UnmountFolderError::Other,
18121 };
18122 crate::eat_json_fields(&mut map)?;
18123 Ok(value)
18124 }
18125 }
18126 const VARIANTS: &[&str] = &["access_error",
18127 "no_permission",
18128 "not_unmountable",
18129 "other"];
18130 deserializer.deserialize_struct("UnmountFolderError", VARIANTS, EnumVisitor)
18131 }
18132}
18133
18134impl ::serde::ser::Serialize for UnmountFolderError {
18135 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18136 use serde::ser::SerializeStruct;
18138 match self {
18139 UnmountFolderError::AccessError(x) => {
18140 let mut s = serializer.serialize_struct("UnmountFolderError", 2)?;
18142 s.serialize_field(".tag", "access_error")?;
18143 s.serialize_field("access_error", x)?;
18144 s.end()
18145 }
18146 UnmountFolderError::NoPermission => {
18147 let mut s = serializer.serialize_struct("UnmountFolderError", 1)?;
18149 s.serialize_field(".tag", "no_permission")?;
18150 s.end()
18151 }
18152 UnmountFolderError::NotUnmountable => {
18153 let mut s = serializer.serialize_struct("UnmountFolderError", 1)?;
18155 s.serialize_field(".tag", "not_unmountable")?;
18156 s.end()
18157 }
18158 UnmountFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18159 }
18160 }
18161}
18162
18163impl ::std::error::Error for UnmountFolderError {
18164 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
18165 match self {
18166 UnmountFolderError::AccessError(inner) => Some(inner),
18167 _ => None,
18168 }
18169 }
18170}
18171
18172impl ::std::fmt::Display for UnmountFolderError {
18173 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18174 match self {
18175 UnmountFolderError::AccessError(inner) => write!(f, "UnmountFolderError: {}", inner),
18176 UnmountFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
18177 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."),
18178 _ => write!(f, "{:?}", *self),
18179 }
18180 }
18181}
18182
18183#[derive(Debug, Clone, PartialEq, Eq)]
18185#[non_exhaustive] pub struct UnshareFileArg {
18187 pub file: PathOrId,
18189}
18190
18191impl UnshareFileArg {
18192 pub fn new(file: PathOrId) -> Self {
18193 UnshareFileArg {
18194 file,
18195 }
18196 }
18197}
18198
18199const UNSHARE_FILE_ARG_FIELDS: &[&str] = &["file"];
18200impl UnshareFileArg {
18201 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
18202 map: V,
18203 ) -> Result<UnshareFileArg, V::Error> {
18204 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
18205 }
18206
18207 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
18208 mut map: V,
18209 optional: bool,
18210 ) -> Result<Option<UnshareFileArg>, V::Error> {
18211 let mut field_file = None;
18212 let mut nothing = true;
18213 while let Some(key) = map.next_key::<&str>()? {
18214 nothing = false;
18215 match key {
18216 "file" => {
18217 if field_file.is_some() {
18218 return Err(::serde::de::Error::duplicate_field("file"));
18219 }
18220 field_file = Some(map.next_value()?);
18221 }
18222 _ => {
18223 map.next_value::<::serde_json::Value>()?;
18225 }
18226 }
18227 }
18228 if optional && nothing {
18229 return Ok(None);
18230 }
18231 let result = UnshareFileArg {
18232 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
18233 };
18234 Ok(Some(result))
18235 }
18236
18237 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
18238 &self,
18239 s: &mut S::SerializeStruct,
18240 ) -> Result<(), S::Error> {
18241 use serde::ser::SerializeStruct;
18242 s.serialize_field("file", &self.file)?;
18243 Ok(())
18244 }
18245}
18246
18247impl<'de> ::serde::de::Deserialize<'de> for UnshareFileArg {
18248 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18249 use serde::de::{MapAccess, Visitor};
18251 struct StructVisitor;
18252 impl<'de> Visitor<'de> for StructVisitor {
18253 type Value = UnshareFileArg;
18254 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18255 f.write_str("a UnshareFileArg struct")
18256 }
18257 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
18258 UnshareFileArg::internal_deserialize(map)
18259 }
18260 }
18261 deserializer.deserialize_struct("UnshareFileArg", UNSHARE_FILE_ARG_FIELDS, StructVisitor)
18262 }
18263}
18264
18265impl ::serde::ser::Serialize for UnshareFileArg {
18266 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18267 use serde::ser::SerializeStruct;
18269 let mut s = serializer.serialize_struct("UnshareFileArg", 1)?;
18270 self.internal_serialize::<S>(&mut s)?;
18271 s.end()
18272 }
18273}
18274
18275#[derive(Debug, Clone, PartialEq, Eq)]
18277#[non_exhaustive] pub enum UnshareFileError {
18279 UserError(SharingUserError),
18280 AccessError(SharingFileAccessError),
18281 Other,
18284}
18285
18286impl<'de> ::serde::de::Deserialize<'de> for UnshareFileError {
18287 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18288 use serde::de::{self, MapAccess, Visitor};
18290 struct EnumVisitor;
18291 impl<'de> Visitor<'de> for EnumVisitor {
18292 type Value = UnshareFileError;
18293 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18294 f.write_str("a UnshareFileError structure")
18295 }
18296 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18297 let tag: &str = match map.next_key()? {
18298 Some(".tag") => map.next_value()?,
18299 _ => return Err(de::Error::missing_field(".tag"))
18300 };
18301 let value = match tag {
18302 "user_error" => {
18303 match map.next_key()? {
18304 Some("user_error") => UnshareFileError::UserError(map.next_value()?),
18305 None => return Err(de::Error::missing_field("user_error")),
18306 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
18307 }
18308 }
18309 "access_error" => {
18310 match map.next_key()? {
18311 Some("access_error") => UnshareFileError::AccessError(map.next_value()?),
18312 None => return Err(de::Error::missing_field("access_error")),
18313 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
18314 }
18315 }
18316 _ => UnshareFileError::Other,
18317 };
18318 crate::eat_json_fields(&mut map)?;
18319 Ok(value)
18320 }
18321 }
18322 const VARIANTS: &[&str] = &["user_error",
18323 "access_error",
18324 "other"];
18325 deserializer.deserialize_struct("UnshareFileError", VARIANTS, EnumVisitor)
18326 }
18327}
18328
18329impl ::serde::ser::Serialize for UnshareFileError {
18330 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18331 use serde::ser::SerializeStruct;
18333 match self {
18334 UnshareFileError::UserError(x) => {
18335 let mut s = serializer.serialize_struct("UnshareFileError", 2)?;
18337 s.serialize_field(".tag", "user_error")?;
18338 s.serialize_field("user_error", x)?;
18339 s.end()
18340 }
18341 UnshareFileError::AccessError(x) => {
18342 let mut s = serializer.serialize_struct("UnshareFileError", 2)?;
18344 s.serialize_field(".tag", "access_error")?;
18345 s.serialize_field("access_error", x)?;
18346 s.end()
18347 }
18348 UnshareFileError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18349 }
18350 }
18351}
18352
18353impl ::std::error::Error for UnshareFileError {
18354 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
18355 match self {
18356 UnshareFileError::UserError(inner) => Some(inner),
18357 UnshareFileError::AccessError(inner) => Some(inner),
18358 _ => None,
18359 }
18360 }
18361}
18362
18363impl ::std::fmt::Display for UnshareFileError {
18364 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18365 match self {
18366 UnshareFileError::UserError(inner) => write!(f, "UnshareFileError: {}", inner),
18367 UnshareFileError::AccessError(inner) => write!(f, "UnshareFileError: {}", inner),
18368 _ => write!(f, "{:?}", *self),
18369 }
18370 }
18371}
18372
18373#[derive(Debug, Clone, PartialEq, Eq)]
18374#[non_exhaustive] pub struct UnshareFolderArg {
18376 pub shared_folder_id: crate::types::common::SharedFolderId,
18378 pub leave_a_copy: bool,
18382}
18383
18384impl UnshareFolderArg {
18385 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
18386 UnshareFolderArg {
18387 shared_folder_id,
18388 leave_a_copy: false,
18389 }
18390 }
18391
18392 pub fn with_leave_a_copy(mut self, value: bool) -> Self {
18393 self.leave_a_copy = value;
18394 self
18395 }
18396}
18397
18398const UNSHARE_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id",
18399 "leave_a_copy"];
18400impl UnshareFolderArg {
18401 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
18402 map: V,
18403 ) -> Result<UnshareFolderArg, V::Error> {
18404 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
18405 }
18406
18407 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
18408 mut map: V,
18409 optional: bool,
18410 ) -> Result<Option<UnshareFolderArg>, V::Error> {
18411 let mut field_shared_folder_id = None;
18412 let mut field_leave_a_copy = None;
18413 let mut nothing = true;
18414 while let Some(key) = map.next_key::<&str>()? {
18415 nothing = false;
18416 match key {
18417 "shared_folder_id" => {
18418 if field_shared_folder_id.is_some() {
18419 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
18420 }
18421 field_shared_folder_id = Some(map.next_value()?);
18422 }
18423 "leave_a_copy" => {
18424 if field_leave_a_copy.is_some() {
18425 return Err(::serde::de::Error::duplicate_field("leave_a_copy"));
18426 }
18427 field_leave_a_copy = Some(map.next_value()?);
18428 }
18429 _ => {
18430 map.next_value::<::serde_json::Value>()?;
18432 }
18433 }
18434 }
18435 if optional && nothing {
18436 return Ok(None);
18437 }
18438 let result = UnshareFolderArg {
18439 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
18440 leave_a_copy: field_leave_a_copy.unwrap_or(false),
18441 };
18442 Ok(Some(result))
18443 }
18444
18445 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
18446 &self,
18447 s: &mut S::SerializeStruct,
18448 ) -> Result<(), S::Error> {
18449 use serde::ser::SerializeStruct;
18450 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
18451 if self.leave_a_copy {
18452 s.serialize_field("leave_a_copy", &self.leave_a_copy)?;
18453 }
18454 Ok(())
18455 }
18456}
18457
18458impl<'de> ::serde::de::Deserialize<'de> for UnshareFolderArg {
18459 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18460 use serde::de::{MapAccess, Visitor};
18462 struct StructVisitor;
18463 impl<'de> Visitor<'de> for StructVisitor {
18464 type Value = UnshareFolderArg;
18465 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18466 f.write_str("a UnshareFolderArg struct")
18467 }
18468 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
18469 UnshareFolderArg::internal_deserialize(map)
18470 }
18471 }
18472 deserializer.deserialize_struct("UnshareFolderArg", UNSHARE_FOLDER_ARG_FIELDS, StructVisitor)
18473 }
18474}
18475
18476impl ::serde::ser::Serialize for UnshareFolderArg {
18477 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18478 use serde::ser::SerializeStruct;
18480 let mut s = serializer.serialize_struct("UnshareFolderArg", 2)?;
18481 self.internal_serialize::<S>(&mut s)?;
18482 s.end()
18483 }
18484}
18485
18486#[derive(Debug, Clone, PartialEq, Eq)]
18487#[non_exhaustive] pub enum UnshareFolderError {
18489 AccessError(SharedFolderAccessError),
18490 TeamFolder,
18492 NoPermission,
18494 TooManyFiles,
18496 Other,
18499}
18500
18501impl<'de> ::serde::de::Deserialize<'de> for UnshareFolderError {
18502 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18503 use serde::de::{self, MapAccess, Visitor};
18505 struct EnumVisitor;
18506 impl<'de> Visitor<'de> for EnumVisitor {
18507 type Value = UnshareFolderError;
18508 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18509 f.write_str("a UnshareFolderError structure")
18510 }
18511 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18512 let tag: &str = match map.next_key()? {
18513 Some(".tag") => map.next_value()?,
18514 _ => return Err(de::Error::missing_field(".tag"))
18515 };
18516 let value = match tag {
18517 "access_error" => {
18518 match map.next_key()? {
18519 Some("access_error") => UnshareFolderError::AccessError(map.next_value()?),
18520 None => return Err(de::Error::missing_field("access_error")),
18521 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
18522 }
18523 }
18524 "team_folder" => UnshareFolderError::TeamFolder,
18525 "no_permission" => UnshareFolderError::NoPermission,
18526 "too_many_files" => UnshareFolderError::TooManyFiles,
18527 _ => UnshareFolderError::Other,
18528 };
18529 crate::eat_json_fields(&mut map)?;
18530 Ok(value)
18531 }
18532 }
18533 const VARIANTS: &[&str] = &["access_error",
18534 "team_folder",
18535 "no_permission",
18536 "too_many_files",
18537 "other"];
18538 deserializer.deserialize_struct("UnshareFolderError", VARIANTS, EnumVisitor)
18539 }
18540}
18541
18542impl ::serde::ser::Serialize for UnshareFolderError {
18543 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18544 use serde::ser::SerializeStruct;
18546 match self {
18547 UnshareFolderError::AccessError(x) => {
18548 let mut s = serializer.serialize_struct("UnshareFolderError", 2)?;
18550 s.serialize_field(".tag", "access_error")?;
18551 s.serialize_field("access_error", x)?;
18552 s.end()
18553 }
18554 UnshareFolderError::TeamFolder => {
18555 let mut s = serializer.serialize_struct("UnshareFolderError", 1)?;
18557 s.serialize_field(".tag", "team_folder")?;
18558 s.end()
18559 }
18560 UnshareFolderError::NoPermission => {
18561 let mut s = serializer.serialize_struct("UnshareFolderError", 1)?;
18563 s.serialize_field(".tag", "no_permission")?;
18564 s.end()
18565 }
18566 UnshareFolderError::TooManyFiles => {
18567 let mut s = serializer.serialize_struct("UnshareFolderError", 1)?;
18569 s.serialize_field(".tag", "too_many_files")?;
18570 s.end()
18571 }
18572 UnshareFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18573 }
18574 }
18575}
18576
18577impl ::std::error::Error for UnshareFolderError {
18578 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
18579 match self {
18580 UnshareFolderError::AccessError(inner) => Some(inner),
18581 _ => None,
18582 }
18583 }
18584}
18585
18586impl ::std::fmt::Display for UnshareFolderError {
18587 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18588 match self {
18589 UnshareFolderError::AccessError(inner) => write!(f, "UnshareFolderError: {}", inner),
18590 UnshareFolderError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
18591 UnshareFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
18592 UnshareFolderError::TooManyFiles => f.write_str("This shared folder has too many files to be unshared."),
18593 _ => write!(f, "{:?}", *self),
18594 }
18595 }
18596}
18597
18598#[derive(Debug, Clone, PartialEq, Eq)]
18600#[non_exhaustive] pub struct UpdateFileMemberArgs {
18602 pub file: PathOrId,
18604 pub member: MemberSelector,
18606 pub access_level: AccessLevel,
18608}
18609
18610impl UpdateFileMemberArgs {
18611 pub fn new(file: PathOrId, member: MemberSelector, access_level: AccessLevel) -> Self {
18612 UpdateFileMemberArgs {
18613 file,
18614 member,
18615 access_level,
18616 }
18617 }
18618}
18619
18620const UPDATE_FILE_MEMBER_ARGS_FIELDS: &[&str] = &["file",
18621 "member",
18622 "access_level"];
18623impl UpdateFileMemberArgs {
18624 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
18625 map: V,
18626 ) -> Result<UpdateFileMemberArgs, V::Error> {
18627 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
18628 }
18629
18630 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
18631 mut map: V,
18632 optional: bool,
18633 ) -> Result<Option<UpdateFileMemberArgs>, V::Error> {
18634 let mut field_file = None;
18635 let mut field_member = None;
18636 let mut field_access_level = None;
18637 let mut nothing = true;
18638 while let Some(key) = map.next_key::<&str>()? {
18639 nothing = false;
18640 match key {
18641 "file" => {
18642 if field_file.is_some() {
18643 return Err(::serde::de::Error::duplicate_field("file"));
18644 }
18645 field_file = Some(map.next_value()?);
18646 }
18647 "member" => {
18648 if field_member.is_some() {
18649 return Err(::serde::de::Error::duplicate_field("member"));
18650 }
18651 field_member = Some(map.next_value()?);
18652 }
18653 "access_level" => {
18654 if field_access_level.is_some() {
18655 return Err(::serde::de::Error::duplicate_field("access_level"));
18656 }
18657 field_access_level = Some(map.next_value()?);
18658 }
18659 _ => {
18660 map.next_value::<::serde_json::Value>()?;
18662 }
18663 }
18664 }
18665 if optional && nothing {
18666 return Ok(None);
18667 }
18668 let result = UpdateFileMemberArgs {
18669 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
18670 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
18671 access_level: field_access_level.ok_or_else(|| ::serde::de::Error::missing_field("access_level"))?,
18672 };
18673 Ok(Some(result))
18674 }
18675
18676 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
18677 &self,
18678 s: &mut S::SerializeStruct,
18679 ) -> Result<(), S::Error> {
18680 use serde::ser::SerializeStruct;
18681 s.serialize_field("file", &self.file)?;
18682 s.serialize_field("member", &self.member)?;
18683 s.serialize_field("access_level", &self.access_level)?;
18684 Ok(())
18685 }
18686}
18687
18688impl<'de> ::serde::de::Deserialize<'de> for UpdateFileMemberArgs {
18689 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18690 use serde::de::{MapAccess, Visitor};
18692 struct StructVisitor;
18693 impl<'de> Visitor<'de> for StructVisitor {
18694 type Value = UpdateFileMemberArgs;
18695 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18696 f.write_str("a UpdateFileMemberArgs struct")
18697 }
18698 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
18699 UpdateFileMemberArgs::internal_deserialize(map)
18700 }
18701 }
18702 deserializer.deserialize_struct("UpdateFileMemberArgs", UPDATE_FILE_MEMBER_ARGS_FIELDS, StructVisitor)
18703 }
18704}
18705
18706impl ::serde::ser::Serialize for UpdateFileMemberArgs {
18707 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18708 use serde::ser::SerializeStruct;
18710 let mut s = serializer.serialize_struct("UpdateFileMemberArgs", 3)?;
18711 self.internal_serialize::<S>(&mut s)?;
18712 s.end()
18713 }
18714}
18715
18716#[derive(Debug, Clone, PartialEq, Eq)]
18717#[non_exhaustive] pub struct UpdateFolderMemberArg {
18719 pub shared_folder_id: crate::types::common::SharedFolderId,
18721 pub member: MemberSelector,
18724 pub access_level: AccessLevel,
18726}
18727
18728impl UpdateFolderMemberArg {
18729 pub fn new(
18730 shared_folder_id: crate::types::common::SharedFolderId,
18731 member: MemberSelector,
18732 access_level: AccessLevel,
18733 ) -> Self {
18734 UpdateFolderMemberArg {
18735 shared_folder_id,
18736 member,
18737 access_level,
18738 }
18739 }
18740}
18741
18742const UPDATE_FOLDER_MEMBER_ARG_FIELDS: &[&str] = &["shared_folder_id",
18743 "member",
18744 "access_level"];
18745impl UpdateFolderMemberArg {
18746 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
18747 map: V,
18748 ) -> Result<UpdateFolderMemberArg, V::Error> {
18749 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
18750 }
18751
18752 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
18753 mut map: V,
18754 optional: bool,
18755 ) -> Result<Option<UpdateFolderMemberArg>, V::Error> {
18756 let mut field_shared_folder_id = None;
18757 let mut field_member = None;
18758 let mut field_access_level = None;
18759 let mut nothing = true;
18760 while let Some(key) = map.next_key::<&str>()? {
18761 nothing = false;
18762 match key {
18763 "shared_folder_id" => {
18764 if field_shared_folder_id.is_some() {
18765 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
18766 }
18767 field_shared_folder_id = Some(map.next_value()?);
18768 }
18769 "member" => {
18770 if field_member.is_some() {
18771 return Err(::serde::de::Error::duplicate_field("member"));
18772 }
18773 field_member = Some(map.next_value()?);
18774 }
18775 "access_level" => {
18776 if field_access_level.is_some() {
18777 return Err(::serde::de::Error::duplicate_field("access_level"));
18778 }
18779 field_access_level = Some(map.next_value()?);
18780 }
18781 _ => {
18782 map.next_value::<::serde_json::Value>()?;
18784 }
18785 }
18786 }
18787 if optional && nothing {
18788 return Ok(None);
18789 }
18790 let result = UpdateFolderMemberArg {
18791 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
18792 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
18793 access_level: field_access_level.ok_or_else(|| ::serde::de::Error::missing_field("access_level"))?,
18794 };
18795 Ok(Some(result))
18796 }
18797
18798 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
18799 &self,
18800 s: &mut S::SerializeStruct,
18801 ) -> Result<(), S::Error> {
18802 use serde::ser::SerializeStruct;
18803 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
18804 s.serialize_field("member", &self.member)?;
18805 s.serialize_field("access_level", &self.access_level)?;
18806 Ok(())
18807 }
18808}
18809
18810impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderMemberArg {
18811 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18812 use serde::de::{MapAccess, Visitor};
18814 struct StructVisitor;
18815 impl<'de> Visitor<'de> for StructVisitor {
18816 type Value = UpdateFolderMemberArg;
18817 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18818 f.write_str("a UpdateFolderMemberArg struct")
18819 }
18820 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
18821 UpdateFolderMemberArg::internal_deserialize(map)
18822 }
18823 }
18824 deserializer.deserialize_struct("UpdateFolderMemberArg", UPDATE_FOLDER_MEMBER_ARG_FIELDS, StructVisitor)
18825 }
18826}
18827
18828impl ::serde::ser::Serialize for UpdateFolderMemberArg {
18829 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18830 use serde::ser::SerializeStruct;
18832 let mut s = serializer.serialize_struct("UpdateFolderMemberArg", 3)?;
18833 self.internal_serialize::<S>(&mut s)?;
18834 s.end()
18835 }
18836}
18837
18838#[derive(Debug, Clone, PartialEq, Eq)]
18839#[non_exhaustive] pub enum UpdateFolderMemberError {
18841 AccessError(SharedFolderAccessError),
18842 MemberError(SharedFolderMemberError),
18843 NoExplicitAccess(AddFolderMemberError),
18846 InsufficientPlan,
18850 NoPermission,
18852 Other,
18855}
18856
18857impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderMemberError {
18858 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18859 use serde::de::{self, MapAccess, Visitor};
18861 struct EnumVisitor;
18862 impl<'de> Visitor<'de> for EnumVisitor {
18863 type Value = UpdateFolderMemberError;
18864 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18865 f.write_str("a UpdateFolderMemberError structure")
18866 }
18867 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18868 let tag: &str = match map.next_key()? {
18869 Some(".tag") => map.next_value()?,
18870 _ => return Err(de::Error::missing_field(".tag"))
18871 };
18872 let value = match tag {
18873 "access_error" => {
18874 match map.next_key()? {
18875 Some("access_error") => UpdateFolderMemberError::AccessError(map.next_value()?),
18876 None => return Err(de::Error::missing_field("access_error")),
18877 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
18878 }
18879 }
18880 "member_error" => {
18881 match map.next_key()? {
18882 Some("member_error") => UpdateFolderMemberError::MemberError(map.next_value()?),
18883 None => return Err(de::Error::missing_field("member_error")),
18884 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
18885 }
18886 }
18887 "no_explicit_access" => {
18888 match map.next_key()? {
18889 Some("no_explicit_access") => UpdateFolderMemberError::NoExplicitAccess(map.next_value()?),
18890 None => return Err(de::Error::missing_field("no_explicit_access")),
18891 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
18892 }
18893 }
18894 "insufficient_plan" => UpdateFolderMemberError::InsufficientPlan,
18895 "no_permission" => UpdateFolderMemberError::NoPermission,
18896 _ => UpdateFolderMemberError::Other,
18897 };
18898 crate::eat_json_fields(&mut map)?;
18899 Ok(value)
18900 }
18901 }
18902 const VARIANTS: &[&str] = &["access_error",
18903 "member_error",
18904 "no_explicit_access",
18905 "insufficient_plan",
18906 "no_permission",
18907 "other"];
18908 deserializer.deserialize_struct("UpdateFolderMemberError", VARIANTS, EnumVisitor)
18909 }
18910}
18911
18912impl ::serde::ser::Serialize for UpdateFolderMemberError {
18913 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18914 use serde::ser::SerializeStruct;
18916 match self {
18917 UpdateFolderMemberError::AccessError(x) => {
18918 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 2)?;
18920 s.serialize_field(".tag", "access_error")?;
18921 s.serialize_field("access_error", x)?;
18922 s.end()
18923 }
18924 UpdateFolderMemberError::MemberError(x) => {
18925 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 2)?;
18927 s.serialize_field(".tag", "member_error")?;
18928 s.serialize_field("member_error", x)?;
18929 s.end()
18930 }
18931 UpdateFolderMemberError::NoExplicitAccess(x) => {
18932 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 2)?;
18934 s.serialize_field(".tag", "no_explicit_access")?;
18935 s.serialize_field("no_explicit_access", x)?;
18936 s.end()
18937 }
18938 UpdateFolderMemberError::InsufficientPlan => {
18939 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 1)?;
18941 s.serialize_field(".tag", "insufficient_plan")?;
18942 s.end()
18943 }
18944 UpdateFolderMemberError::NoPermission => {
18945 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 1)?;
18947 s.serialize_field(".tag", "no_permission")?;
18948 s.end()
18949 }
18950 UpdateFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18951 }
18952 }
18953}
18954
18955impl ::std::error::Error for UpdateFolderMemberError {
18956 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
18957 match self {
18958 UpdateFolderMemberError::AccessError(inner) => Some(inner),
18959 UpdateFolderMemberError::MemberError(inner) => Some(inner),
18960 UpdateFolderMemberError::NoExplicitAccess(inner) => Some(inner),
18961 _ => None,
18962 }
18963 }
18964}
18965
18966impl ::std::fmt::Display for UpdateFolderMemberError {
18967 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18968 match self {
18969 UpdateFolderMemberError::AccessError(inner) => write!(f, "UpdateFolderMemberError: {}", inner),
18970 UpdateFolderMemberError::MemberError(inner) => write!(f, "UpdateFolderMemberError: {}", inner),
18971 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),
18972 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."),
18973 UpdateFolderMemberError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
18974 _ => write!(f, "{:?}", *self),
18975 }
18976 }
18977}
18978
18979#[derive(Debug, Clone, PartialEq, Eq)]
18981#[non_exhaustive] pub struct UpdateFolderPolicyArg {
18983 pub shared_folder_id: crate::types::common::SharedFolderId,
18985 pub member_policy: Option<MemberPolicy>,
18987 pub acl_update_policy: Option<AclUpdatePolicy>,
18989 pub viewer_info_policy: Option<ViewerInfoPolicy>,
18991 pub shared_link_policy: Option<SharedLinkPolicy>,
18994 pub link_settings: Option<LinkSettings>,
18996 pub actions: Option<Vec<FolderAction>>,
19000}
19001
19002impl UpdateFolderPolicyArg {
19003 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
19004 UpdateFolderPolicyArg {
19005 shared_folder_id,
19006 member_policy: None,
19007 acl_update_policy: None,
19008 viewer_info_policy: None,
19009 shared_link_policy: None,
19010 link_settings: None,
19011 actions: None,
19012 }
19013 }
19014
19015 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
19016 self.member_policy = Some(value);
19017 self
19018 }
19019
19020 pub fn with_acl_update_policy(mut self, value: AclUpdatePolicy) -> Self {
19021 self.acl_update_policy = Some(value);
19022 self
19023 }
19024
19025 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
19026 self.viewer_info_policy = Some(value);
19027 self
19028 }
19029
19030 pub fn with_shared_link_policy(mut self, value: SharedLinkPolicy) -> Self {
19031 self.shared_link_policy = Some(value);
19032 self
19033 }
19034
19035 pub fn with_link_settings(mut self, value: LinkSettings) -> Self {
19036 self.link_settings = Some(value);
19037 self
19038 }
19039
19040 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
19041 self.actions = Some(value);
19042 self
19043 }
19044}
19045
19046const UPDATE_FOLDER_POLICY_ARG_FIELDS: &[&str] = &["shared_folder_id",
19047 "member_policy",
19048 "acl_update_policy",
19049 "viewer_info_policy",
19050 "shared_link_policy",
19051 "link_settings",
19052 "actions"];
19053impl UpdateFolderPolicyArg {
19054 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19055 map: V,
19056 ) -> Result<UpdateFolderPolicyArg, V::Error> {
19057 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19058 }
19059
19060 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19061 mut map: V,
19062 optional: bool,
19063 ) -> Result<Option<UpdateFolderPolicyArg>, V::Error> {
19064 let mut field_shared_folder_id = None;
19065 let mut field_member_policy = None;
19066 let mut field_acl_update_policy = None;
19067 let mut field_viewer_info_policy = None;
19068 let mut field_shared_link_policy = None;
19069 let mut field_link_settings = None;
19070 let mut field_actions = None;
19071 let mut nothing = true;
19072 while let Some(key) = map.next_key::<&str>()? {
19073 nothing = false;
19074 match key {
19075 "shared_folder_id" => {
19076 if field_shared_folder_id.is_some() {
19077 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
19078 }
19079 field_shared_folder_id = Some(map.next_value()?);
19080 }
19081 "member_policy" => {
19082 if field_member_policy.is_some() {
19083 return Err(::serde::de::Error::duplicate_field("member_policy"));
19084 }
19085 field_member_policy = Some(map.next_value()?);
19086 }
19087 "acl_update_policy" => {
19088 if field_acl_update_policy.is_some() {
19089 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
19090 }
19091 field_acl_update_policy = Some(map.next_value()?);
19092 }
19093 "viewer_info_policy" => {
19094 if field_viewer_info_policy.is_some() {
19095 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
19096 }
19097 field_viewer_info_policy = Some(map.next_value()?);
19098 }
19099 "shared_link_policy" => {
19100 if field_shared_link_policy.is_some() {
19101 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
19102 }
19103 field_shared_link_policy = Some(map.next_value()?);
19104 }
19105 "link_settings" => {
19106 if field_link_settings.is_some() {
19107 return Err(::serde::de::Error::duplicate_field("link_settings"));
19108 }
19109 field_link_settings = Some(map.next_value()?);
19110 }
19111 "actions" => {
19112 if field_actions.is_some() {
19113 return Err(::serde::de::Error::duplicate_field("actions"));
19114 }
19115 field_actions = Some(map.next_value()?);
19116 }
19117 _ => {
19118 map.next_value::<::serde_json::Value>()?;
19120 }
19121 }
19122 }
19123 if optional && nothing {
19124 return Ok(None);
19125 }
19126 let result = UpdateFolderPolicyArg {
19127 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
19128 member_policy: field_member_policy.and_then(Option::flatten),
19129 acl_update_policy: field_acl_update_policy.and_then(Option::flatten),
19130 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
19131 shared_link_policy: field_shared_link_policy.and_then(Option::flatten),
19132 link_settings: field_link_settings.and_then(Option::flatten),
19133 actions: field_actions.and_then(Option::flatten),
19134 };
19135 Ok(Some(result))
19136 }
19137
19138 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19139 &self,
19140 s: &mut S::SerializeStruct,
19141 ) -> Result<(), S::Error> {
19142 use serde::ser::SerializeStruct;
19143 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
19144 if let Some(val) = &self.member_policy {
19145 s.serialize_field("member_policy", val)?;
19146 }
19147 if let Some(val) = &self.acl_update_policy {
19148 s.serialize_field("acl_update_policy", val)?;
19149 }
19150 if let Some(val) = &self.viewer_info_policy {
19151 s.serialize_field("viewer_info_policy", val)?;
19152 }
19153 if let Some(val) = &self.shared_link_policy {
19154 s.serialize_field("shared_link_policy", val)?;
19155 }
19156 if let Some(val) = &self.link_settings {
19157 s.serialize_field("link_settings", val)?;
19158 }
19159 if let Some(val) = &self.actions {
19160 s.serialize_field("actions", val)?;
19161 }
19162 Ok(())
19163 }
19164}
19165
19166impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderPolicyArg {
19167 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19168 use serde::de::{MapAccess, Visitor};
19170 struct StructVisitor;
19171 impl<'de> Visitor<'de> for StructVisitor {
19172 type Value = UpdateFolderPolicyArg;
19173 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19174 f.write_str("a UpdateFolderPolicyArg struct")
19175 }
19176 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19177 UpdateFolderPolicyArg::internal_deserialize(map)
19178 }
19179 }
19180 deserializer.deserialize_struct("UpdateFolderPolicyArg", UPDATE_FOLDER_POLICY_ARG_FIELDS, StructVisitor)
19181 }
19182}
19183
19184impl ::serde::ser::Serialize for UpdateFolderPolicyArg {
19185 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19186 use serde::ser::SerializeStruct;
19188 let mut s = serializer.serialize_struct("UpdateFolderPolicyArg", 7)?;
19189 self.internal_serialize::<S>(&mut s)?;
19190 s.end()
19191 }
19192}
19193
19194#[derive(Debug, Clone, PartialEq, Eq)]
19195#[non_exhaustive] pub enum UpdateFolderPolicyError {
19197 AccessError(SharedFolderAccessError),
19198 NotOnTeam,
19201 TeamPolicyDisallowsMemberPolicy,
19203 DisallowedSharedLinkPolicy,
19206 NoPermission,
19208 TeamFolder,
19210 Other,
19213}
19214
19215impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderPolicyError {
19216 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19217 use serde::de::{self, MapAccess, Visitor};
19219 struct EnumVisitor;
19220 impl<'de> Visitor<'de> for EnumVisitor {
19221 type Value = UpdateFolderPolicyError;
19222 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19223 f.write_str("a UpdateFolderPolicyError structure")
19224 }
19225 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
19226 let tag: &str = match map.next_key()? {
19227 Some(".tag") => map.next_value()?,
19228 _ => return Err(de::Error::missing_field(".tag"))
19229 };
19230 let value = match tag {
19231 "access_error" => {
19232 match map.next_key()? {
19233 Some("access_error") => UpdateFolderPolicyError::AccessError(map.next_value()?),
19234 None => return Err(de::Error::missing_field("access_error")),
19235 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
19236 }
19237 }
19238 "not_on_team" => UpdateFolderPolicyError::NotOnTeam,
19239 "team_policy_disallows_member_policy" => UpdateFolderPolicyError::TeamPolicyDisallowsMemberPolicy,
19240 "disallowed_shared_link_policy" => UpdateFolderPolicyError::DisallowedSharedLinkPolicy,
19241 "no_permission" => UpdateFolderPolicyError::NoPermission,
19242 "team_folder" => UpdateFolderPolicyError::TeamFolder,
19243 _ => UpdateFolderPolicyError::Other,
19244 };
19245 crate::eat_json_fields(&mut map)?;
19246 Ok(value)
19247 }
19248 }
19249 const VARIANTS: &[&str] = &["access_error",
19250 "not_on_team",
19251 "team_policy_disallows_member_policy",
19252 "disallowed_shared_link_policy",
19253 "no_permission",
19254 "team_folder",
19255 "other"];
19256 deserializer.deserialize_struct("UpdateFolderPolicyError", VARIANTS, EnumVisitor)
19257 }
19258}
19259
19260impl ::serde::ser::Serialize for UpdateFolderPolicyError {
19261 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19262 use serde::ser::SerializeStruct;
19264 match self {
19265 UpdateFolderPolicyError::AccessError(x) => {
19266 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 2)?;
19268 s.serialize_field(".tag", "access_error")?;
19269 s.serialize_field("access_error", x)?;
19270 s.end()
19271 }
19272 UpdateFolderPolicyError::NotOnTeam => {
19273 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
19275 s.serialize_field(".tag", "not_on_team")?;
19276 s.end()
19277 }
19278 UpdateFolderPolicyError::TeamPolicyDisallowsMemberPolicy => {
19279 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
19281 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
19282 s.end()
19283 }
19284 UpdateFolderPolicyError::DisallowedSharedLinkPolicy => {
19285 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
19287 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
19288 s.end()
19289 }
19290 UpdateFolderPolicyError::NoPermission => {
19291 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
19293 s.serialize_field(".tag", "no_permission")?;
19294 s.end()
19295 }
19296 UpdateFolderPolicyError::TeamFolder => {
19297 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
19299 s.serialize_field(".tag", "team_folder")?;
19300 s.end()
19301 }
19302 UpdateFolderPolicyError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
19303 }
19304 }
19305}
19306
19307impl ::std::error::Error for UpdateFolderPolicyError {
19308 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
19309 match self {
19310 UpdateFolderPolicyError::AccessError(inner) => Some(inner),
19311 _ => None,
19312 }
19313 }
19314}
19315
19316impl ::std::fmt::Display for UpdateFolderPolicyError {
19317 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19318 match self {
19319 UpdateFolderPolicyError::AccessError(inner) => write!(f, "UpdateFolderPolicyError: {}", inner),
19320 UpdateFolderPolicyError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
19321 UpdateFolderPolicyError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
19322 _ => write!(f, "{:?}", *self),
19323 }
19324 }
19325}
19326
19327#[derive(Debug, Clone, PartialEq, Eq)]
19329#[non_exhaustive] pub struct UserFileMembershipInfo {
19331 pub access_type: AccessLevel,
19334 pub user: UserInfo,
19336 pub permissions: Option<Vec<MemberPermission>>,
19339 pub initials: Option<String>,
19341 pub is_inherited: bool,
19343 pub time_last_seen: Option<crate::types::common::DropboxTimestamp>,
19346 pub platform_type: Option<crate::types::seen_state::PlatformType>,
19348}
19349
19350impl UserFileMembershipInfo {
19351 pub fn new(access_type: AccessLevel, user: UserInfo) -> Self {
19352 UserFileMembershipInfo {
19353 access_type,
19354 user,
19355 permissions: None,
19356 initials: None,
19357 is_inherited: false,
19358 time_last_seen: None,
19359 platform_type: None,
19360 }
19361 }
19362
19363 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
19364 self.permissions = Some(value);
19365 self
19366 }
19367
19368 pub fn with_initials(mut self, value: String) -> Self {
19369 self.initials = Some(value);
19370 self
19371 }
19372
19373 pub fn with_is_inherited(mut self, value: bool) -> Self {
19374 self.is_inherited = value;
19375 self
19376 }
19377
19378 pub fn with_time_last_seen(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
19379 self.time_last_seen = Some(value);
19380 self
19381 }
19382
19383 pub fn with_platform_type(mut self, value: crate::types::seen_state::PlatformType) -> Self {
19384 self.platform_type = Some(value);
19385 self
19386 }
19387}
19388
19389const USER_FILE_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
19390 "user",
19391 "permissions",
19392 "initials",
19393 "is_inherited",
19394 "time_last_seen",
19395 "platform_type"];
19396impl UserFileMembershipInfo {
19397 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19398 map: V,
19399 ) -> Result<UserFileMembershipInfo, V::Error> {
19400 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19401 }
19402
19403 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19404 mut map: V,
19405 optional: bool,
19406 ) -> Result<Option<UserFileMembershipInfo>, V::Error> {
19407 let mut field_access_type = None;
19408 let mut field_user = None;
19409 let mut field_permissions = None;
19410 let mut field_initials = None;
19411 let mut field_is_inherited = None;
19412 let mut field_time_last_seen = None;
19413 let mut field_platform_type = None;
19414 let mut nothing = true;
19415 while let Some(key) = map.next_key::<&str>()? {
19416 nothing = false;
19417 match key {
19418 "access_type" => {
19419 if field_access_type.is_some() {
19420 return Err(::serde::de::Error::duplicate_field("access_type"));
19421 }
19422 field_access_type = Some(map.next_value()?);
19423 }
19424 "user" => {
19425 if field_user.is_some() {
19426 return Err(::serde::de::Error::duplicate_field("user"));
19427 }
19428 field_user = Some(map.next_value()?);
19429 }
19430 "permissions" => {
19431 if field_permissions.is_some() {
19432 return Err(::serde::de::Error::duplicate_field("permissions"));
19433 }
19434 field_permissions = Some(map.next_value()?);
19435 }
19436 "initials" => {
19437 if field_initials.is_some() {
19438 return Err(::serde::de::Error::duplicate_field("initials"));
19439 }
19440 field_initials = Some(map.next_value()?);
19441 }
19442 "is_inherited" => {
19443 if field_is_inherited.is_some() {
19444 return Err(::serde::de::Error::duplicate_field("is_inherited"));
19445 }
19446 field_is_inherited = Some(map.next_value()?);
19447 }
19448 "time_last_seen" => {
19449 if field_time_last_seen.is_some() {
19450 return Err(::serde::de::Error::duplicate_field("time_last_seen"));
19451 }
19452 field_time_last_seen = Some(map.next_value()?);
19453 }
19454 "platform_type" => {
19455 if field_platform_type.is_some() {
19456 return Err(::serde::de::Error::duplicate_field("platform_type"));
19457 }
19458 field_platform_type = Some(map.next_value()?);
19459 }
19460 _ => {
19461 map.next_value::<::serde_json::Value>()?;
19463 }
19464 }
19465 }
19466 if optional && nothing {
19467 return Ok(None);
19468 }
19469 let result = UserFileMembershipInfo {
19470 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
19471 user: field_user.ok_or_else(|| ::serde::de::Error::missing_field("user"))?,
19472 permissions: field_permissions.and_then(Option::flatten),
19473 initials: field_initials.and_then(Option::flatten),
19474 is_inherited: field_is_inherited.unwrap_or(false),
19475 time_last_seen: field_time_last_seen.and_then(Option::flatten),
19476 platform_type: field_platform_type.and_then(Option::flatten),
19477 };
19478 Ok(Some(result))
19479 }
19480
19481 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19482 &self,
19483 s: &mut S::SerializeStruct,
19484 ) -> Result<(), S::Error> {
19485 use serde::ser::SerializeStruct;
19486 s.serialize_field("access_type", &self.access_type)?;
19487 s.serialize_field("user", &self.user)?;
19488 if let Some(val) = &self.permissions {
19489 s.serialize_field("permissions", val)?;
19490 }
19491 if let Some(val) = &self.initials {
19492 s.serialize_field("initials", val)?;
19493 }
19494 if self.is_inherited {
19495 s.serialize_field("is_inherited", &self.is_inherited)?;
19496 }
19497 if let Some(val) = &self.time_last_seen {
19498 s.serialize_field("time_last_seen", val)?;
19499 }
19500 if let Some(val) = &self.platform_type {
19501 s.serialize_field("platform_type", val)?;
19502 }
19503 Ok(())
19504 }
19505}
19506
19507impl<'de> ::serde::de::Deserialize<'de> for UserFileMembershipInfo {
19508 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19509 use serde::de::{MapAccess, Visitor};
19511 struct StructVisitor;
19512 impl<'de> Visitor<'de> for StructVisitor {
19513 type Value = UserFileMembershipInfo;
19514 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19515 f.write_str("a UserFileMembershipInfo struct")
19516 }
19517 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19518 UserFileMembershipInfo::internal_deserialize(map)
19519 }
19520 }
19521 deserializer.deserialize_struct("UserFileMembershipInfo", USER_FILE_MEMBERSHIP_INFO_FIELDS, StructVisitor)
19522 }
19523}
19524
19525impl ::serde::ser::Serialize for UserFileMembershipInfo {
19526 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19527 use serde::ser::SerializeStruct;
19529 let mut s = serializer.serialize_struct("UserFileMembershipInfo", 7)?;
19530 self.internal_serialize::<S>(&mut s)?;
19531 s.end()
19532 }
19533}
19534
19535impl From<UserFileMembershipInfo> for UserMembershipInfo {
19537 fn from(subtype: UserFileMembershipInfo) -> Self {
19538 Self {
19539 access_type: subtype.access_type,
19540 user: subtype.user,
19541 permissions: subtype.permissions,
19542 initials: subtype.initials,
19543 is_inherited: subtype.is_inherited,
19544 }
19545 }
19546}
19547#[derive(Debug, Clone, PartialEq, Eq)]
19551#[non_exhaustive] pub struct UserInfo {
19553 pub account_id: crate::types::users_common::AccountId,
19555 pub email: String,
19557 pub display_name: String,
19559 pub same_team: bool,
19561 pub team_member_id: Option<String>,
19563}
19564
19565impl UserInfo {
19566 pub fn new(
19567 account_id: crate::types::users_common::AccountId,
19568 email: String,
19569 display_name: String,
19570 same_team: bool,
19571 ) -> Self {
19572 UserInfo {
19573 account_id,
19574 email,
19575 display_name,
19576 same_team,
19577 team_member_id: None,
19578 }
19579 }
19580
19581 pub fn with_team_member_id(mut self, value: String) -> Self {
19582 self.team_member_id = Some(value);
19583 self
19584 }
19585}
19586
19587const USER_INFO_FIELDS: &[&str] = &["account_id",
19588 "email",
19589 "display_name",
19590 "same_team",
19591 "team_member_id"];
19592impl UserInfo {
19593 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19594 map: V,
19595 ) -> Result<UserInfo, V::Error> {
19596 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19597 }
19598
19599 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19600 mut map: V,
19601 optional: bool,
19602 ) -> Result<Option<UserInfo>, V::Error> {
19603 let mut field_account_id = None;
19604 let mut field_email = None;
19605 let mut field_display_name = None;
19606 let mut field_same_team = None;
19607 let mut field_team_member_id = None;
19608 let mut nothing = true;
19609 while let Some(key) = map.next_key::<&str>()? {
19610 nothing = false;
19611 match key {
19612 "account_id" => {
19613 if field_account_id.is_some() {
19614 return Err(::serde::de::Error::duplicate_field("account_id"));
19615 }
19616 field_account_id = Some(map.next_value()?);
19617 }
19618 "email" => {
19619 if field_email.is_some() {
19620 return Err(::serde::de::Error::duplicate_field("email"));
19621 }
19622 field_email = Some(map.next_value()?);
19623 }
19624 "display_name" => {
19625 if field_display_name.is_some() {
19626 return Err(::serde::de::Error::duplicate_field("display_name"));
19627 }
19628 field_display_name = Some(map.next_value()?);
19629 }
19630 "same_team" => {
19631 if field_same_team.is_some() {
19632 return Err(::serde::de::Error::duplicate_field("same_team"));
19633 }
19634 field_same_team = Some(map.next_value()?);
19635 }
19636 "team_member_id" => {
19637 if field_team_member_id.is_some() {
19638 return Err(::serde::de::Error::duplicate_field("team_member_id"));
19639 }
19640 field_team_member_id = Some(map.next_value()?);
19641 }
19642 _ => {
19643 map.next_value::<::serde_json::Value>()?;
19645 }
19646 }
19647 }
19648 if optional && nothing {
19649 return Ok(None);
19650 }
19651 let result = UserInfo {
19652 account_id: field_account_id.ok_or_else(|| ::serde::de::Error::missing_field("account_id"))?,
19653 email: field_email.ok_or_else(|| ::serde::de::Error::missing_field("email"))?,
19654 display_name: field_display_name.ok_or_else(|| ::serde::de::Error::missing_field("display_name"))?,
19655 same_team: field_same_team.ok_or_else(|| ::serde::de::Error::missing_field("same_team"))?,
19656 team_member_id: field_team_member_id.and_then(Option::flatten),
19657 };
19658 Ok(Some(result))
19659 }
19660
19661 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19662 &self,
19663 s: &mut S::SerializeStruct,
19664 ) -> Result<(), S::Error> {
19665 use serde::ser::SerializeStruct;
19666 s.serialize_field("account_id", &self.account_id)?;
19667 s.serialize_field("email", &self.email)?;
19668 s.serialize_field("display_name", &self.display_name)?;
19669 s.serialize_field("same_team", &self.same_team)?;
19670 if let Some(val) = &self.team_member_id {
19671 s.serialize_field("team_member_id", val)?;
19672 }
19673 Ok(())
19674 }
19675}
19676
19677impl<'de> ::serde::de::Deserialize<'de> for UserInfo {
19678 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19679 use serde::de::{MapAccess, Visitor};
19681 struct StructVisitor;
19682 impl<'de> Visitor<'de> for StructVisitor {
19683 type Value = UserInfo;
19684 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19685 f.write_str("a UserInfo struct")
19686 }
19687 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19688 UserInfo::internal_deserialize(map)
19689 }
19690 }
19691 deserializer.deserialize_struct("UserInfo", USER_INFO_FIELDS, StructVisitor)
19692 }
19693}
19694
19695impl ::serde::ser::Serialize for UserInfo {
19696 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19697 use serde::ser::SerializeStruct;
19699 let mut s = serializer.serialize_struct("UserInfo", 5)?;
19700 self.internal_serialize::<S>(&mut s)?;
19701 s.end()
19702 }
19703}
19704
19705#[derive(Debug, Clone, PartialEq, Eq)]
19707#[non_exhaustive] pub struct UserMembershipInfo {
19709 pub access_type: AccessLevel,
19712 pub user: UserInfo,
19714 pub permissions: Option<Vec<MemberPermission>>,
19717 pub initials: Option<String>,
19719 pub is_inherited: bool,
19721}
19722
19723impl UserMembershipInfo {
19724 pub fn new(access_type: AccessLevel, user: UserInfo) -> Self {
19725 UserMembershipInfo {
19726 access_type,
19727 user,
19728 permissions: None,
19729 initials: None,
19730 is_inherited: false,
19731 }
19732 }
19733
19734 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
19735 self.permissions = Some(value);
19736 self
19737 }
19738
19739 pub fn with_initials(mut self, value: String) -> Self {
19740 self.initials = Some(value);
19741 self
19742 }
19743
19744 pub fn with_is_inherited(mut self, value: bool) -> Self {
19745 self.is_inherited = value;
19746 self
19747 }
19748}
19749
19750const USER_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
19751 "user",
19752 "permissions",
19753 "initials",
19754 "is_inherited"];
19755impl UserMembershipInfo {
19756 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19757 map: V,
19758 ) -> Result<UserMembershipInfo, V::Error> {
19759 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19760 }
19761
19762 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19763 mut map: V,
19764 optional: bool,
19765 ) -> Result<Option<UserMembershipInfo>, V::Error> {
19766 let mut field_access_type = None;
19767 let mut field_user = None;
19768 let mut field_permissions = None;
19769 let mut field_initials = None;
19770 let mut field_is_inherited = None;
19771 let mut nothing = true;
19772 while let Some(key) = map.next_key::<&str>()? {
19773 nothing = false;
19774 match key {
19775 "access_type" => {
19776 if field_access_type.is_some() {
19777 return Err(::serde::de::Error::duplicate_field("access_type"));
19778 }
19779 field_access_type = Some(map.next_value()?);
19780 }
19781 "user" => {
19782 if field_user.is_some() {
19783 return Err(::serde::de::Error::duplicate_field("user"));
19784 }
19785 field_user = Some(map.next_value()?);
19786 }
19787 "permissions" => {
19788 if field_permissions.is_some() {
19789 return Err(::serde::de::Error::duplicate_field("permissions"));
19790 }
19791 field_permissions = Some(map.next_value()?);
19792 }
19793 "initials" => {
19794 if field_initials.is_some() {
19795 return Err(::serde::de::Error::duplicate_field("initials"));
19796 }
19797 field_initials = Some(map.next_value()?);
19798 }
19799 "is_inherited" => {
19800 if field_is_inherited.is_some() {
19801 return Err(::serde::de::Error::duplicate_field("is_inherited"));
19802 }
19803 field_is_inherited = Some(map.next_value()?);
19804 }
19805 _ => {
19806 map.next_value::<::serde_json::Value>()?;
19808 }
19809 }
19810 }
19811 if optional && nothing {
19812 return Ok(None);
19813 }
19814 let result = UserMembershipInfo {
19815 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
19816 user: field_user.ok_or_else(|| ::serde::de::Error::missing_field("user"))?,
19817 permissions: field_permissions.and_then(Option::flatten),
19818 initials: field_initials.and_then(Option::flatten),
19819 is_inherited: field_is_inherited.unwrap_or(false),
19820 };
19821 Ok(Some(result))
19822 }
19823
19824 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19825 &self,
19826 s: &mut S::SerializeStruct,
19827 ) -> Result<(), S::Error> {
19828 use serde::ser::SerializeStruct;
19829 s.serialize_field("access_type", &self.access_type)?;
19830 s.serialize_field("user", &self.user)?;
19831 if let Some(val) = &self.permissions {
19832 s.serialize_field("permissions", val)?;
19833 }
19834 if let Some(val) = &self.initials {
19835 s.serialize_field("initials", val)?;
19836 }
19837 if self.is_inherited {
19838 s.serialize_field("is_inherited", &self.is_inherited)?;
19839 }
19840 Ok(())
19841 }
19842}
19843
19844impl<'de> ::serde::de::Deserialize<'de> for UserMembershipInfo {
19845 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19846 use serde::de::{MapAccess, Visitor};
19848 struct StructVisitor;
19849 impl<'de> Visitor<'de> for StructVisitor {
19850 type Value = UserMembershipInfo;
19851 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19852 f.write_str("a UserMembershipInfo struct")
19853 }
19854 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19855 UserMembershipInfo::internal_deserialize(map)
19856 }
19857 }
19858 deserializer.deserialize_struct("UserMembershipInfo", USER_MEMBERSHIP_INFO_FIELDS, StructVisitor)
19859 }
19860}
19861
19862impl ::serde::ser::Serialize for UserMembershipInfo {
19863 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19864 use serde::ser::SerializeStruct;
19866 let mut s = serializer.serialize_struct("UserMembershipInfo", 5)?;
19867 self.internal_serialize::<S>(&mut s)?;
19868 s.end()
19869 }
19870}
19871
19872impl From<UserMembershipInfo> for MembershipInfo {
19874 fn from(subtype: UserMembershipInfo) -> Self {
19875 Self {
19876 access_type: subtype.access_type,
19877 permissions: subtype.permissions,
19878 initials: subtype.initials,
19879 is_inherited: subtype.is_inherited,
19880 }
19881 }
19882}
19883#[derive(Debug, Clone, PartialEq, Eq)]
19884#[non_exhaustive] pub enum ViewerInfoPolicy {
19886 Enabled,
19888 Disabled,
19890 Other,
19893}
19894
19895impl<'de> ::serde::de::Deserialize<'de> for ViewerInfoPolicy {
19896 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19897 use serde::de::{self, MapAccess, Visitor};
19899 struct EnumVisitor;
19900 impl<'de> Visitor<'de> for EnumVisitor {
19901 type Value = ViewerInfoPolicy;
19902 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19903 f.write_str("a ViewerInfoPolicy structure")
19904 }
19905 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
19906 let tag: &str = match map.next_key()? {
19907 Some(".tag") => map.next_value()?,
19908 _ => return Err(de::Error::missing_field(".tag"))
19909 };
19910 let value = match tag {
19911 "enabled" => ViewerInfoPolicy::Enabled,
19912 "disabled" => ViewerInfoPolicy::Disabled,
19913 _ => ViewerInfoPolicy::Other,
19914 };
19915 crate::eat_json_fields(&mut map)?;
19916 Ok(value)
19917 }
19918 }
19919 const VARIANTS: &[&str] = &["enabled",
19920 "disabled",
19921 "other"];
19922 deserializer.deserialize_struct("ViewerInfoPolicy", VARIANTS, EnumVisitor)
19923 }
19924}
19925
19926impl ::serde::ser::Serialize for ViewerInfoPolicy {
19927 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19928 use serde::ser::SerializeStruct;
19930 match self {
19931 ViewerInfoPolicy::Enabled => {
19932 let mut s = serializer.serialize_struct("ViewerInfoPolicy", 1)?;
19934 s.serialize_field(".tag", "enabled")?;
19935 s.end()
19936 }
19937 ViewerInfoPolicy::Disabled => {
19938 let mut s = serializer.serialize_struct("ViewerInfoPolicy", 1)?;
19940 s.serialize_field(".tag", "disabled")?;
19941 s.end()
19942 }
19943 ViewerInfoPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
19944 }
19945 }
19946}
19947
19948#[derive(Debug, Clone, PartialEq, Eq)]
19951#[non_exhaustive] pub enum Visibility {
19953 Public,
19955 TeamOnly,
19957 Password,
19959 TeamAndPassword,
19961 SharedFolderOnly,
19964 Other,
19967}
19968
19969impl<'de> ::serde::de::Deserialize<'de> for Visibility {
19970 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19971 use serde::de::{self, MapAccess, Visitor};
19973 struct EnumVisitor;
19974 impl<'de> Visitor<'de> for EnumVisitor {
19975 type Value = Visibility;
19976 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19977 f.write_str("a Visibility structure")
19978 }
19979 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
19980 let tag: &str = match map.next_key()? {
19981 Some(".tag") => map.next_value()?,
19982 _ => return Err(de::Error::missing_field(".tag"))
19983 };
19984 let value = match tag {
19985 "public" => Visibility::Public,
19986 "team_only" => Visibility::TeamOnly,
19987 "password" => Visibility::Password,
19988 "team_and_password" => Visibility::TeamAndPassword,
19989 "shared_folder_only" => Visibility::SharedFolderOnly,
19990 _ => Visibility::Other,
19991 };
19992 crate::eat_json_fields(&mut map)?;
19993 Ok(value)
19994 }
19995 }
19996 const VARIANTS: &[&str] = &["public",
19997 "team_only",
19998 "password",
19999 "team_and_password",
20000 "shared_folder_only",
20001 "other"];
20002 deserializer.deserialize_struct("Visibility", VARIANTS, EnumVisitor)
20003 }
20004}
20005
20006impl ::serde::ser::Serialize for Visibility {
20007 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20008 use serde::ser::SerializeStruct;
20010 match self {
20011 Visibility::Public => {
20012 let mut s = serializer.serialize_struct("Visibility", 1)?;
20014 s.serialize_field(".tag", "public")?;
20015 s.end()
20016 }
20017 Visibility::TeamOnly => {
20018 let mut s = serializer.serialize_struct("Visibility", 1)?;
20020 s.serialize_field(".tag", "team_only")?;
20021 s.end()
20022 }
20023 Visibility::Password => {
20024 let mut s = serializer.serialize_struct("Visibility", 1)?;
20026 s.serialize_field(".tag", "password")?;
20027 s.end()
20028 }
20029 Visibility::TeamAndPassword => {
20030 let mut s = serializer.serialize_struct("Visibility", 1)?;
20032 s.serialize_field(".tag", "team_and_password")?;
20033 s.end()
20034 }
20035 Visibility::SharedFolderOnly => {
20036 let mut s = serializer.serialize_struct("Visibility", 1)?;
20038 s.serialize_field(".tag", "shared_folder_only")?;
20039 s.end()
20040 }
20041 Visibility::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
20042 }
20043 }
20044}
20045
20046#[derive(Debug, Clone, PartialEq, Eq)]
20047#[non_exhaustive] pub struct VisibilityPolicy {
20049 pub policy: RequestedVisibility,
20051 pub resolved_policy: AlphaResolvedVisibility,
20055 pub allowed: bool,
20057 pub disallowed_reason: Option<VisibilityPolicyDisallowedReason>,
20060}
20061
20062impl VisibilityPolicy {
20063 pub fn new(
20064 policy: RequestedVisibility,
20065 resolved_policy: AlphaResolvedVisibility,
20066 allowed: bool,
20067 ) -> Self {
20068 VisibilityPolicy {
20069 policy,
20070 resolved_policy,
20071 allowed,
20072 disallowed_reason: None,
20073 }
20074 }
20075
20076 pub fn with_disallowed_reason(mut self, value: VisibilityPolicyDisallowedReason) -> Self {
20077 self.disallowed_reason = Some(value);
20078 self
20079 }
20080}
20081
20082const VISIBILITY_POLICY_FIELDS: &[&str] = &["policy",
20083 "resolved_policy",
20084 "allowed",
20085 "disallowed_reason"];
20086impl VisibilityPolicy {
20087 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
20088 map: V,
20089 ) -> Result<VisibilityPolicy, V::Error> {
20090 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
20091 }
20092
20093 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
20094 mut map: V,
20095 optional: bool,
20096 ) -> Result<Option<VisibilityPolicy>, V::Error> {
20097 let mut field_policy = None;
20098 let mut field_resolved_policy = None;
20099 let mut field_allowed = None;
20100 let mut field_disallowed_reason = None;
20101 let mut nothing = true;
20102 while let Some(key) = map.next_key::<&str>()? {
20103 nothing = false;
20104 match key {
20105 "policy" => {
20106 if field_policy.is_some() {
20107 return Err(::serde::de::Error::duplicate_field("policy"));
20108 }
20109 field_policy = Some(map.next_value()?);
20110 }
20111 "resolved_policy" => {
20112 if field_resolved_policy.is_some() {
20113 return Err(::serde::de::Error::duplicate_field("resolved_policy"));
20114 }
20115 field_resolved_policy = Some(map.next_value()?);
20116 }
20117 "allowed" => {
20118 if field_allowed.is_some() {
20119 return Err(::serde::de::Error::duplicate_field("allowed"));
20120 }
20121 field_allowed = Some(map.next_value()?);
20122 }
20123 "disallowed_reason" => {
20124 if field_disallowed_reason.is_some() {
20125 return Err(::serde::de::Error::duplicate_field("disallowed_reason"));
20126 }
20127 field_disallowed_reason = Some(map.next_value()?);
20128 }
20129 _ => {
20130 map.next_value::<::serde_json::Value>()?;
20132 }
20133 }
20134 }
20135 if optional && nothing {
20136 return Ok(None);
20137 }
20138 let result = VisibilityPolicy {
20139 policy: field_policy.ok_or_else(|| ::serde::de::Error::missing_field("policy"))?,
20140 resolved_policy: field_resolved_policy.ok_or_else(|| ::serde::de::Error::missing_field("resolved_policy"))?,
20141 allowed: field_allowed.ok_or_else(|| ::serde::de::Error::missing_field("allowed"))?,
20142 disallowed_reason: field_disallowed_reason.and_then(Option::flatten),
20143 };
20144 Ok(Some(result))
20145 }
20146
20147 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
20148 &self,
20149 s: &mut S::SerializeStruct,
20150 ) -> Result<(), S::Error> {
20151 use serde::ser::SerializeStruct;
20152 s.serialize_field("policy", &self.policy)?;
20153 s.serialize_field("resolved_policy", &self.resolved_policy)?;
20154 s.serialize_field("allowed", &self.allowed)?;
20155 if let Some(val) = &self.disallowed_reason {
20156 s.serialize_field("disallowed_reason", val)?;
20157 }
20158 Ok(())
20159 }
20160}
20161
20162impl<'de> ::serde::de::Deserialize<'de> for VisibilityPolicy {
20163 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20164 use serde::de::{MapAccess, Visitor};
20166 struct StructVisitor;
20167 impl<'de> Visitor<'de> for StructVisitor {
20168 type Value = VisibilityPolicy;
20169 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20170 f.write_str("a VisibilityPolicy struct")
20171 }
20172 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
20173 VisibilityPolicy::internal_deserialize(map)
20174 }
20175 }
20176 deserializer.deserialize_struct("VisibilityPolicy", VISIBILITY_POLICY_FIELDS, StructVisitor)
20177 }
20178}
20179
20180impl ::serde::ser::Serialize for VisibilityPolicy {
20181 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20182 use serde::ser::SerializeStruct;
20184 let mut s = serializer.serialize_struct("VisibilityPolicy", 4)?;
20185 self.internal_serialize::<S>(&mut s)?;
20186 s.end()
20187 }
20188}
20189
20190#[derive(Debug, Clone, PartialEq, Eq)]
20191#[non_exhaustive] pub enum VisibilityPolicyDisallowedReason {
20193 DeleteAndRecreate,
20195 RestrictedBySharedFolder,
20198 RestrictedByTeam,
20200 UserNotOnTeam,
20202 UserAccountType,
20204 PermissionDenied,
20206 Other,
20209}
20210
20211impl<'de> ::serde::de::Deserialize<'de> for VisibilityPolicyDisallowedReason {
20212 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20213 use serde::de::{self, MapAccess, Visitor};
20215 struct EnumVisitor;
20216 impl<'de> Visitor<'de> for EnumVisitor {
20217 type Value = VisibilityPolicyDisallowedReason;
20218 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20219 f.write_str("a VisibilityPolicyDisallowedReason structure")
20220 }
20221 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
20222 let tag: &str = match map.next_key()? {
20223 Some(".tag") => map.next_value()?,
20224 _ => return Err(de::Error::missing_field(".tag"))
20225 };
20226 let value = match tag {
20227 "delete_and_recreate" => VisibilityPolicyDisallowedReason::DeleteAndRecreate,
20228 "restricted_by_shared_folder" => VisibilityPolicyDisallowedReason::RestrictedBySharedFolder,
20229 "restricted_by_team" => VisibilityPolicyDisallowedReason::RestrictedByTeam,
20230 "user_not_on_team" => VisibilityPolicyDisallowedReason::UserNotOnTeam,
20231 "user_account_type" => VisibilityPolicyDisallowedReason::UserAccountType,
20232 "permission_denied" => VisibilityPolicyDisallowedReason::PermissionDenied,
20233 _ => VisibilityPolicyDisallowedReason::Other,
20234 };
20235 crate::eat_json_fields(&mut map)?;
20236 Ok(value)
20237 }
20238 }
20239 const VARIANTS: &[&str] = &["delete_and_recreate",
20240 "restricted_by_shared_folder",
20241 "restricted_by_team",
20242 "user_not_on_team",
20243 "user_account_type",
20244 "permission_denied",
20245 "other"];
20246 deserializer.deserialize_struct("VisibilityPolicyDisallowedReason", VARIANTS, EnumVisitor)
20247 }
20248}
20249
20250impl ::serde::ser::Serialize for VisibilityPolicyDisallowedReason {
20251 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20252 use serde::ser::SerializeStruct;
20254 match self {
20255 VisibilityPolicyDisallowedReason::DeleteAndRecreate => {
20256 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
20258 s.serialize_field(".tag", "delete_and_recreate")?;
20259 s.end()
20260 }
20261 VisibilityPolicyDisallowedReason::RestrictedBySharedFolder => {
20262 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
20264 s.serialize_field(".tag", "restricted_by_shared_folder")?;
20265 s.end()
20266 }
20267 VisibilityPolicyDisallowedReason::RestrictedByTeam => {
20268 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
20270 s.serialize_field(".tag", "restricted_by_team")?;
20271 s.end()
20272 }
20273 VisibilityPolicyDisallowedReason::UserNotOnTeam => {
20274 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
20276 s.serialize_field(".tag", "user_not_on_team")?;
20277 s.end()
20278 }
20279 VisibilityPolicyDisallowedReason::UserAccountType => {
20280 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
20282 s.serialize_field(".tag", "user_account_type")?;
20283 s.end()
20284 }
20285 VisibilityPolicyDisallowedReason::PermissionDenied => {
20286 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
20288 s.serialize_field(".tag", "permission_denied")?;
20289 s.end()
20290 }
20291 VisibilityPolicyDisallowedReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
20292 }
20293 }
20294}
20295