1#![allow(
5 clippy::too_many_arguments,
6 clippy::large_enum_variant,
7 clippy::result_large_err,
8 clippy::doc_markdown,
9 clippy::doc_lazy_continuation,
10)]
11
12pub type DropboxId = String;
16pub type GetSharedLinkFileArg = GetSharedLinkMetadataArg;
17pub type Id = crate::types::files::Id;
18pub type Path = crate::types::files::Path;
19pub type PathOrId = String;
20pub type ReadPath = crate::types::files::ReadPath;
21pub type Rev = crate::types::files::Rev;
22pub type TeamInfo = crate::types::users::Team;
23
24#[derive(Debug, Clone, PartialEq, Eq)]
26#[non_exhaustive] pub enum AccessInheritance {
28 Inherit,
30 NoInherit,
32 Other,
35}
36
37impl<'de> ::serde::de::Deserialize<'de> for AccessInheritance {
38 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
39 use serde::de::{self, MapAccess, Visitor};
41 struct EnumVisitor;
42 impl<'de> Visitor<'de> for EnumVisitor {
43 type Value = AccessInheritance;
44 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
45 f.write_str("a AccessInheritance structure")
46 }
47 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
48 let tag: &str = match map.next_key()? {
49 Some(".tag") => map.next_value()?,
50 _ => return Err(de::Error::missing_field(".tag"))
51 };
52 let value = match tag {
53 "inherit" => AccessInheritance::Inherit,
54 "no_inherit" => AccessInheritance::NoInherit,
55 _ => AccessInheritance::Other,
56 };
57 crate::eat_json_fields(&mut map)?;
58 Ok(value)
59 }
60 }
61 const VARIANTS: &[&str] = &["inherit",
62 "no_inherit",
63 "other"];
64 deserializer.deserialize_struct("AccessInheritance", VARIANTS, EnumVisitor)
65 }
66}
67
68impl ::serde::ser::Serialize for AccessInheritance {
69 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
70 use serde::ser::SerializeStruct;
72 match self {
73 AccessInheritance::Inherit => {
74 let mut s = serializer.serialize_struct("AccessInheritance", 1)?;
76 s.serialize_field(".tag", "inherit")?;
77 s.end()
78 }
79 AccessInheritance::NoInherit => {
80 let mut s = serializer.serialize_struct("AccessInheritance", 1)?;
82 s.serialize_field(".tag", "no_inherit")?;
83 s.end()
84 }
85 AccessInheritance::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
86 }
87 }
88}
89
90#[derive(Debug, Clone, PartialEq, Eq)]
92#[non_exhaustive] pub enum AccessLevel {
94 Owner,
98 Editor,
100 Viewer,
102 ViewerNoComment,
104 Traverse,
106 NoAccess,
110 Other,
113}
114
115impl<'de> ::serde::de::Deserialize<'de> for AccessLevel {
116 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
117 use serde::de::{self, MapAccess, Visitor};
119 struct EnumVisitor;
120 impl<'de> Visitor<'de> for EnumVisitor {
121 type Value = AccessLevel;
122 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
123 f.write_str("a AccessLevel structure")
124 }
125 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
126 let tag: &str = match map.next_key()? {
127 Some(".tag") => map.next_value()?,
128 _ => return Err(de::Error::missing_field(".tag"))
129 };
130 let value = match tag {
131 "owner" => AccessLevel::Owner,
132 "editor" => AccessLevel::Editor,
133 "viewer" => AccessLevel::Viewer,
134 "viewer_no_comment" => AccessLevel::ViewerNoComment,
135 "traverse" => AccessLevel::Traverse,
136 "no_access" => AccessLevel::NoAccess,
137 _ => AccessLevel::Other,
138 };
139 crate::eat_json_fields(&mut map)?;
140 Ok(value)
141 }
142 }
143 const VARIANTS: &[&str] = &["owner",
144 "editor",
145 "viewer",
146 "viewer_no_comment",
147 "traverse",
148 "no_access",
149 "other"];
150 deserializer.deserialize_struct("AccessLevel", VARIANTS, EnumVisitor)
151 }
152}
153
154impl ::serde::ser::Serialize for AccessLevel {
155 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
156 use serde::ser::SerializeStruct;
158 match self {
159 AccessLevel::Owner => {
160 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
162 s.serialize_field(".tag", "owner")?;
163 s.end()
164 }
165 AccessLevel::Editor => {
166 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
168 s.serialize_field(".tag", "editor")?;
169 s.end()
170 }
171 AccessLevel::Viewer => {
172 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
174 s.serialize_field(".tag", "viewer")?;
175 s.end()
176 }
177 AccessLevel::ViewerNoComment => {
178 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
180 s.serialize_field(".tag", "viewer_no_comment")?;
181 s.end()
182 }
183 AccessLevel::Traverse => {
184 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
186 s.serialize_field(".tag", "traverse")?;
187 s.end()
188 }
189 AccessLevel::NoAccess => {
190 let mut s = serializer.serialize_struct("AccessLevel", 1)?;
192 s.serialize_field(".tag", "no_access")?;
193 s.end()
194 }
195 AccessLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
196 }
197 }
198}
199
200#[derive(Debug, Clone, PartialEq, Eq)]
203#[non_exhaustive] pub enum AclUpdatePolicy {
205 Owner,
207 Editors,
209 Other,
212}
213
214impl<'de> ::serde::de::Deserialize<'de> for AclUpdatePolicy {
215 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
216 use serde::de::{self, MapAccess, Visitor};
218 struct EnumVisitor;
219 impl<'de> Visitor<'de> for EnumVisitor {
220 type Value = AclUpdatePolicy;
221 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
222 f.write_str("a AclUpdatePolicy structure")
223 }
224 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
225 let tag: &str = match map.next_key()? {
226 Some(".tag") => map.next_value()?,
227 _ => return Err(de::Error::missing_field(".tag"))
228 };
229 let value = match tag {
230 "owner" => AclUpdatePolicy::Owner,
231 "editors" => AclUpdatePolicy::Editors,
232 _ => AclUpdatePolicy::Other,
233 };
234 crate::eat_json_fields(&mut map)?;
235 Ok(value)
236 }
237 }
238 const VARIANTS: &[&str] = &["owner",
239 "editors",
240 "other"];
241 deserializer.deserialize_struct("AclUpdatePolicy", VARIANTS, EnumVisitor)
242 }
243}
244
245impl ::serde::ser::Serialize for AclUpdatePolicy {
246 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
247 use serde::ser::SerializeStruct;
249 match self {
250 AclUpdatePolicy::Owner => {
251 let mut s = serializer.serialize_struct("AclUpdatePolicy", 1)?;
253 s.serialize_field(".tag", "owner")?;
254 s.end()
255 }
256 AclUpdatePolicy::Editors => {
257 let mut s = serializer.serialize_struct("AclUpdatePolicy", 1)?;
259 s.serialize_field(".tag", "editors")?;
260 s.end()
261 }
262 AclUpdatePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
263 }
264 }
265}
266
267#[derive(Debug, Clone, PartialEq, Eq)]
269#[non_exhaustive] pub struct AddFileMemberArgs {
271 pub file: PathOrId,
273 pub members: Vec<MemberSelector>,
276 pub custom_message: Option<String>,
278 pub quiet: bool,
281 pub access_level: Option<AccessLevel>,
283 pub add_message_as_comment: bool,
285 pub fp_sealed_result: Option<String>,
287}
288
289impl AddFileMemberArgs {
290 pub fn new(file: PathOrId, members: Vec<MemberSelector>) -> Self {
291 AddFileMemberArgs {
292 file,
293 members,
294 custom_message: None,
295 quiet: false,
296 access_level: None,
297 add_message_as_comment: false,
298 fp_sealed_result: None,
299 }
300 }
301
302 pub fn with_custom_message(mut self, value: String) -> Self {
303 self.custom_message = Some(value);
304 self
305 }
306
307 pub fn with_quiet(mut self, value: bool) -> Self {
308 self.quiet = value;
309 self
310 }
311
312 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
313 self.access_level = Some(value);
314 self
315 }
316
317 pub fn with_add_message_as_comment(mut self, value: bool) -> Self {
318 self.add_message_as_comment = value;
319 self
320 }
321
322 pub fn with_fp_sealed_result(mut self, value: String) -> Self {
323 self.fp_sealed_result = Some(value);
324 self
325 }
326}
327
328const ADD_FILE_MEMBER_ARGS_FIELDS: &[&str] = &["file",
329 "members",
330 "custom_message",
331 "quiet",
332 "access_level",
333 "add_message_as_comment",
334 "fp_sealed_result"];
335impl AddFileMemberArgs {
336 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
337 map: V,
338 ) -> Result<AddFileMemberArgs, V::Error> {
339 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
340 }
341
342 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
343 mut map: V,
344 optional: bool,
345 ) -> Result<Option<AddFileMemberArgs>, V::Error> {
346 let mut field_file = None;
347 let mut field_members = None;
348 let mut field_custom_message = None;
349 let mut field_quiet = None;
350 let mut field_access_level = None;
351 let mut field_add_message_as_comment = None;
352 let mut field_fp_sealed_result = None;
353 let mut nothing = true;
354 while let Some(key) = map.next_key::<&str>()? {
355 nothing = false;
356 match key {
357 "file" => {
358 if field_file.is_some() {
359 return Err(::serde::de::Error::duplicate_field("file"));
360 }
361 field_file = Some(map.next_value()?);
362 }
363 "members" => {
364 if field_members.is_some() {
365 return Err(::serde::de::Error::duplicate_field("members"));
366 }
367 field_members = Some(map.next_value()?);
368 }
369 "custom_message" => {
370 if field_custom_message.is_some() {
371 return Err(::serde::de::Error::duplicate_field("custom_message"));
372 }
373 field_custom_message = Some(map.next_value()?);
374 }
375 "quiet" => {
376 if field_quiet.is_some() {
377 return Err(::serde::de::Error::duplicate_field("quiet"));
378 }
379 field_quiet = Some(map.next_value()?);
380 }
381 "access_level" => {
382 if field_access_level.is_some() {
383 return Err(::serde::de::Error::duplicate_field("access_level"));
384 }
385 field_access_level = Some(map.next_value()?);
386 }
387 "add_message_as_comment" => {
388 if field_add_message_as_comment.is_some() {
389 return Err(::serde::de::Error::duplicate_field("add_message_as_comment"));
390 }
391 field_add_message_as_comment = Some(map.next_value()?);
392 }
393 "fp_sealed_result" => {
394 if field_fp_sealed_result.is_some() {
395 return Err(::serde::de::Error::duplicate_field("fp_sealed_result"));
396 }
397 field_fp_sealed_result = Some(map.next_value()?);
398 }
399 _ => {
400 map.next_value::<::serde_json::Value>()?;
402 }
403 }
404 }
405 if optional && nothing {
406 return Ok(None);
407 }
408 let result = AddFileMemberArgs {
409 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
410 members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?,
411 custom_message: field_custom_message.and_then(Option::flatten),
412 quiet: field_quiet.unwrap_or(false),
413 access_level: field_access_level.and_then(Option::flatten),
414 add_message_as_comment: field_add_message_as_comment.unwrap_or(false),
415 fp_sealed_result: field_fp_sealed_result.and_then(Option::flatten),
416 };
417 Ok(Some(result))
418 }
419
420 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
421 &self,
422 s: &mut S::SerializeStruct,
423 ) -> Result<(), S::Error> {
424 use serde::ser::SerializeStruct;
425 s.serialize_field("file", &self.file)?;
426 s.serialize_field("members", &self.members)?;
427 if let Some(val) = &self.custom_message {
428 s.serialize_field("custom_message", val)?;
429 }
430 if self.quiet {
431 s.serialize_field("quiet", &self.quiet)?;
432 }
433 if let Some(val) = &self.access_level {
434 s.serialize_field("access_level", val)?;
435 }
436 if self.add_message_as_comment {
437 s.serialize_field("add_message_as_comment", &self.add_message_as_comment)?;
438 }
439 if let Some(val) = &self.fp_sealed_result {
440 s.serialize_field("fp_sealed_result", val)?;
441 }
442 Ok(())
443 }
444}
445
446impl<'de> ::serde::de::Deserialize<'de> for AddFileMemberArgs {
447 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
448 use serde::de::{MapAccess, Visitor};
450 struct StructVisitor;
451 impl<'de> Visitor<'de> for StructVisitor {
452 type Value = AddFileMemberArgs;
453 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
454 f.write_str("a AddFileMemberArgs struct")
455 }
456 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
457 AddFileMemberArgs::internal_deserialize(map)
458 }
459 }
460 deserializer.deserialize_struct("AddFileMemberArgs", ADD_FILE_MEMBER_ARGS_FIELDS, StructVisitor)
461 }
462}
463
464impl ::serde::ser::Serialize for AddFileMemberArgs {
465 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
466 use serde::ser::SerializeStruct;
468 let mut s = serializer.serialize_struct("AddFileMemberArgs", 7)?;
469 self.internal_serialize::<S>(&mut s)?;
470 s.end()
471 }
472}
473
474#[derive(Debug, Clone, PartialEq, Eq)]
476#[non_exhaustive] pub enum AddFileMemberError {
478 UserError(SharingUserError),
479 AccessError(SharingFileAccessError),
480 RateLimit,
482 InvalidComment,
484 BannedMember,
486 Other,
489}
490
491impl<'de> ::serde::de::Deserialize<'de> for AddFileMemberError {
492 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
493 use serde::de::{self, MapAccess, Visitor};
495 struct EnumVisitor;
496 impl<'de> Visitor<'de> for EnumVisitor {
497 type Value = AddFileMemberError;
498 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
499 f.write_str("a AddFileMemberError structure")
500 }
501 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
502 let tag: &str = match map.next_key()? {
503 Some(".tag") => map.next_value()?,
504 _ => return Err(de::Error::missing_field(".tag"))
505 };
506 let value = match tag {
507 "user_error" => {
508 match map.next_key()? {
509 Some("user_error") => AddFileMemberError::UserError(map.next_value()?),
510 None => return Err(de::Error::missing_field("user_error")),
511 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
512 }
513 }
514 "access_error" => {
515 match map.next_key()? {
516 Some("access_error") => AddFileMemberError::AccessError(map.next_value()?),
517 None => return Err(de::Error::missing_field("access_error")),
518 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
519 }
520 }
521 "rate_limit" => AddFileMemberError::RateLimit,
522 "invalid_comment" => AddFileMemberError::InvalidComment,
523 "banned_member" => AddFileMemberError::BannedMember,
524 _ => AddFileMemberError::Other,
525 };
526 crate::eat_json_fields(&mut map)?;
527 Ok(value)
528 }
529 }
530 const VARIANTS: &[&str] = &["user_error",
531 "access_error",
532 "rate_limit",
533 "invalid_comment",
534 "banned_member",
535 "other"];
536 deserializer.deserialize_struct("AddFileMemberError", VARIANTS, EnumVisitor)
537 }
538}
539
540impl ::serde::ser::Serialize for AddFileMemberError {
541 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
542 use serde::ser::SerializeStruct;
544 match self {
545 AddFileMemberError::UserError(x) => {
546 let mut s = serializer.serialize_struct("AddFileMemberError", 2)?;
548 s.serialize_field(".tag", "user_error")?;
549 s.serialize_field("user_error", x)?;
550 s.end()
551 }
552 AddFileMemberError::AccessError(x) => {
553 let mut s = serializer.serialize_struct("AddFileMemberError", 2)?;
555 s.serialize_field(".tag", "access_error")?;
556 s.serialize_field("access_error", x)?;
557 s.end()
558 }
559 AddFileMemberError::RateLimit => {
560 let mut s = serializer.serialize_struct("AddFileMemberError", 1)?;
562 s.serialize_field(".tag", "rate_limit")?;
563 s.end()
564 }
565 AddFileMemberError::InvalidComment => {
566 let mut s = serializer.serialize_struct("AddFileMemberError", 1)?;
568 s.serialize_field(".tag", "invalid_comment")?;
569 s.end()
570 }
571 AddFileMemberError::BannedMember => {
572 let mut s = serializer.serialize_struct("AddFileMemberError", 1)?;
574 s.serialize_field(".tag", "banned_member")?;
575 s.end()
576 }
577 AddFileMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
578 }
579 }
580}
581
582impl ::std::error::Error for AddFileMemberError {
583 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
584 match self {
585 AddFileMemberError::UserError(inner) => Some(inner),
586 AddFileMemberError::AccessError(inner) => Some(inner),
587 _ => None,
588 }
589 }
590}
591
592impl ::std::fmt::Display for AddFileMemberError {
593 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
594 match self {
595 AddFileMemberError::UserError(inner) => write!(f, "AddFileMemberError: {}", inner),
596 AddFileMemberError::AccessError(inner) => write!(f, "AddFileMemberError: {}", inner),
597 AddFileMemberError::RateLimit => f.write_str("The user has reached the rate limit for invitations."),
598 AddFileMemberError::InvalidComment => f.write_str("The custom message did not pass comment permissions checks."),
599 AddFileMemberError::BannedMember => f.write_str("The current user has been banned for abuse reasons."),
600 _ => write!(f, "{:?}", *self),
601 }
602 }
603}
604
605#[derive(Debug, Clone, PartialEq, Eq)]
606#[non_exhaustive] pub struct AddFolderMemberArg {
608 pub shared_folder_id: crate::types::common::SharedFolderId,
610 pub members: Vec<AddMember>,
613 pub quiet: bool,
615 pub custom_message: Option<String>,
617 pub fp_sealed_result: Option<String>,
619}
620
621impl AddFolderMemberArg {
622 pub fn new(
623 shared_folder_id: crate::types::common::SharedFolderId,
624 members: Vec<AddMember>,
625 ) -> Self {
626 AddFolderMemberArg {
627 shared_folder_id,
628 members,
629 quiet: false,
630 custom_message: None,
631 fp_sealed_result: None,
632 }
633 }
634
635 pub fn with_quiet(mut self, value: bool) -> Self {
636 self.quiet = value;
637 self
638 }
639
640 pub fn with_custom_message(mut self, value: String) -> Self {
641 self.custom_message = Some(value);
642 self
643 }
644
645 pub fn with_fp_sealed_result(mut self, value: String) -> Self {
646 self.fp_sealed_result = Some(value);
647 self
648 }
649}
650
651const ADD_FOLDER_MEMBER_ARG_FIELDS: &[&str] = &["shared_folder_id",
652 "members",
653 "quiet",
654 "custom_message",
655 "fp_sealed_result"];
656impl AddFolderMemberArg {
657 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
658 map: V,
659 ) -> Result<AddFolderMemberArg, V::Error> {
660 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
661 }
662
663 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
664 mut map: V,
665 optional: bool,
666 ) -> Result<Option<AddFolderMemberArg>, V::Error> {
667 let mut field_shared_folder_id = None;
668 let mut field_members = None;
669 let mut field_quiet = None;
670 let mut field_custom_message = None;
671 let mut field_fp_sealed_result = None;
672 let mut nothing = true;
673 while let Some(key) = map.next_key::<&str>()? {
674 nothing = false;
675 match key {
676 "shared_folder_id" => {
677 if field_shared_folder_id.is_some() {
678 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
679 }
680 field_shared_folder_id = Some(map.next_value()?);
681 }
682 "members" => {
683 if field_members.is_some() {
684 return Err(::serde::de::Error::duplicate_field("members"));
685 }
686 field_members = Some(map.next_value()?);
687 }
688 "quiet" => {
689 if field_quiet.is_some() {
690 return Err(::serde::de::Error::duplicate_field("quiet"));
691 }
692 field_quiet = Some(map.next_value()?);
693 }
694 "custom_message" => {
695 if field_custom_message.is_some() {
696 return Err(::serde::de::Error::duplicate_field("custom_message"));
697 }
698 field_custom_message = Some(map.next_value()?);
699 }
700 "fp_sealed_result" => {
701 if field_fp_sealed_result.is_some() {
702 return Err(::serde::de::Error::duplicate_field("fp_sealed_result"));
703 }
704 field_fp_sealed_result = Some(map.next_value()?);
705 }
706 _ => {
707 map.next_value::<::serde_json::Value>()?;
709 }
710 }
711 }
712 if optional && nothing {
713 return Ok(None);
714 }
715 let result = AddFolderMemberArg {
716 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
717 members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?,
718 quiet: field_quiet.unwrap_or(false),
719 custom_message: field_custom_message.and_then(Option::flatten),
720 fp_sealed_result: field_fp_sealed_result.and_then(Option::flatten),
721 };
722 Ok(Some(result))
723 }
724
725 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
726 &self,
727 s: &mut S::SerializeStruct,
728 ) -> Result<(), S::Error> {
729 use serde::ser::SerializeStruct;
730 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
731 s.serialize_field("members", &self.members)?;
732 if self.quiet {
733 s.serialize_field("quiet", &self.quiet)?;
734 }
735 if let Some(val) = &self.custom_message {
736 s.serialize_field("custom_message", val)?;
737 }
738 if let Some(val) = &self.fp_sealed_result {
739 s.serialize_field("fp_sealed_result", val)?;
740 }
741 Ok(())
742 }
743}
744
745impl<'de> ::serde::de::Deserialize<'de> for AddFolderMemberArg {
746 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
747 use serde::de::{MapAccess, Visitor};
749 struct StructVisitor;
750 impl<'de> Visitor<'de> for StructVisitor {
751 type Value = AddFolderMemberArg;
752 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
753 f.write_str("a AddFolderMemberArg struct")
754 }
755 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
756 AddFolderMemberArg::internal_deserialize(map)
757 }
758 }
759 deserializer.deserialize_struct("AddFolderMemberArg", ADD_FOLDER_MEMBER_ARG_FIELDS, StructVisitor)
760 }
761}
762
763impl ::serde::ser::Serialize for AddFolderMemberArg {
764 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
765 use serde::ser::SerializeStruct;
767 let mut s = serializer.serialize_struct("AddFolderMemberArg", 5)?;
768 self.internal_serialize::<S>(&mut s)?;
769 s.end()
770 }
771}
772
773#[derive(Debug, Clone, PartialEq, Eq)]
774#[non_exhaustive] pub enum AddFolderMemberError {
776 AccessError(SharedFolderAccessError),
778 EmailUnverified,
782 BannedMember,
784 BadMember(AddMemberSelectorError),
786 CantShareOutsideTeam,
788 TooManyMembers(u64),
790 TooManyPendingInvites(u64),
792 RateLimit,
794 TooManyInvitees,
796 InsufficientPlan,
800 TeamFolder,
802 NoPermission,
804 #[deprecated]
806 InvalidSharedFolder,
807 Other,
810}
811
812impl<'de> ::serde::de::Deserialize<'de> for AddFolderMemberError {
813 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
814 use serde::de::{self, MapAccess, Visitor};
816 struct EnumVisitor;
817 impl<'de> Visitor<'de> for EnumVisitor {
818 type Value = AddFolderMemberError;
819 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
820 f.write_str("a AddFolderMemberError structure")
821 }
822 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
823 let tag: &str = match map.next_key()? {
824 Some(".tag") => map.next_value()?,
825 _ => return Err(de::Error::missing_field(".tag"))
826 };
827 let value = match tag {
828 "access_error" => {
829 match map.next_key()? {
830 Some("access_error") => AddFolderMemberError::AccessError(map.next_value()?),
831 None => return Err(de::Error::missing_field("access_error")),
832 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
833 }
834 }
835 "email_unverified" => AddFolderMemberError::EmailUnverified,
836 "banned_member" => AddFolderMemberError::BannedMember,
837 "bad_member" => {
838 match map.next_key()? {
839 Some("bad_member") => AddFolderMemberError::BadMember(map.next_value()?),
840 None => return Err(de::Error::missing_field("bad_member")),
841 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
842 }
843 }
844 "cant_share_outside_team" => AddFolderMemberError::CantShareOutsideTeam,
845 "too_many_members" => {
846 match map.next_key()? {
847 Some("too_many_members") => AddFolderMemberError::TooManyMembers(map.next_value()?),
848 None => return Err(de::Error::missing_field("too_many_members")),
849 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
850 }
851 }
852 "too_many_pending_invites" => {
853 match map.next_key()? {
854 Some("too_many_pending_invites") => AddFolderMemberError::TooManyPendingInvites(map.next_value()?),
855 None => return Err(de::Error::missing_field("too_many_pending_invites")),
856 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
857 }
858 }
859 "rate_limit" => AddFolderMemberError::RateLimit,
860 "too_many_invitees" => AddFolderMemberError::TooManyInvitees,
861 "insufficient_plan" => AddFolderMemberError::InsufficientPlan,
862 "team_folder" => AddFolderMemberError::TeamFolder,
863 "no_permission" => AddFolderMemberError::NoPermission,
864 #[allow(deprecated)]
865 "invalid_shared_folder" => AddFolderMemberError::InvalidSharedFolder,
866 _ => AddFolderMemberError::Other,
867 };
868 crate::eat_json_fields(&mut map)?;
869 Ok(value)
870 }
871 }
872 const VARIANTS: &[&str] = &["access_error",
873 "email_unverified",
874 "banned_member",
875 "bad_member",
876 "cant_share_outside_team",
877 "too_many_members",
878 "too_many_pending_invites",
879 "rate_limit",
880 "too_many_invitees",
881 "insufficient_plan",
882 "team_folder",
883 "no_permission",
884 "invalid_shared_folder",
885 "other"];
886 deserializer.deserialize_struct("AddFolderMemberError", VARIANTS, EnumVisitor)
887 }
888}
889
890impl ::serde::ser::Serialize for AddFolderMemberError {
891 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
892 use serde::ser::SerializeStruct;
894 match self {
895 AddFolderMemberError::AccessError(x) => {
896 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
898 s.serialize_field(".tag", "access_error")?;
899 s.serialize_field("access_error", x)?;
900 s.end()
901 }
902 AddFolderMemberError::EmailUnverified => {
903 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
905 s.serialize_field(".tag", "email_unverified")?;
906 s.end()
907 }
908 AddFolderMemberError::BannedMember => {
909 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
911 s.serialize_field(".tag", "banned_member")?;
912 s.end()
913 }
914 AddFolderMemberError::BadMember(x) => {
915 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
917 s.serialize_field(".tag", "bad_member")?;
918 s.serialize_field("bad_member", x)?;
919 s.end()
920 }
921 AddFolderMemberError::CantShareOutsideTeam => {
922 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
924 s.serialize_field(".tag", "cant_share_outside_team")?;
925 s.end()
926 }
927 AddFolderMemberError::TooManyMembers(x) => {
928 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
930 s.serialize_field(".tag", "too_many_members")?;
931 s.serialize_field("too_many_members", x)?;
932 s.end()
933 }
934 AddFolderMemberError::TooManyPendingInvites(x) => {
935 let mut s = serializer.serialize_struct("AddFolderMemberError", 2)?;
937 s.serialize_field(".tag", "too_many_pending_invites")?;
938 s.serialize_field("too_many_pending_invites", x)?;
939 s.end()
940 }
941 AddFolderMemberError::RateLimit => {
942 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
944 s.serialize_field(".tag", "rate_limit")?;
945 s.end()
946 }
947 AddFolderMemberError::TooManyInvitees => {
948 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
950 s.serialize_field(".tag", "too_many_invitees")?;
951 s.end()
952 }
953 AddFolderMemberError::InsufficientPlan => {
954 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
956 s.serialize_field(".tag", "insufficient_plan")?;
957 s.end()
958 }
959 AddFolderMemberError::TeamFolder => {
960 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
962 s.serialize_field(".tag", "team_folder")?;
963 s.end()
964 }
965 AddFolderMemberError::NoPermission => {
966 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
968 s.serialize_field(".tag", "no_permission")?;
969 s.end()
970 }
971 #[allow(deprecated)]
972 AddFolderMemberError::InvalidSharedFolder => {
973 let mut s = serializer.serialize_struct("AddFolderMemberError", 1)?;
975 s.serialize_field(".tag", "invalid_shared_folder")?;
976 s.end()
977 }
978 AddFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
979 }
980 }
981}
982
983impl ::std::error::Error for AddFolderMemberError {
984 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
985 match self {
986 AddFolderMemberError::AccessError(inner) => Some(inner),
987 AddFolderMemberError::BadMember(inner) => Some(inner),
988 _ => None,
989 }
990 }
991}
992
993impl ::std::fmt::Display for AddFolderMemberError {
994 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
995 match self {
996 AddFolderMemberError::AccessError(inner) => write!(f, "Unable to access shared folder: {}", inner),
997 AddFolderMemberError::BannedMember => f.write_str("The current user has been banned."),
998 AddFolderMemberError::BadMember(inner) => write!(f, "AddFolderMemberError: {}", inner),
999 AddFolderMemberError::CantShareOutsideTeam => f.write_str("Your team policy does not allow sharing outside of the team."),
1000 AddFolderMemberError::TooManyMembers(inner) => write!(f, "The value is the member limit that was reached: {:?}", inner),
1001 AddFolderMemberError::TooManyPendingInvites(inner) => write!(f, "The value is the pending invite limit that was reached: {:?}", inner),
1002 AddFolderMemberError::RateLimit => f.write_str("The current user has hit the limit of invites they can send per day. Try again in 24 hours."),
1003 AddFolderMemberError::TooManyInvitees => f.write_str("The current user is trying to share with too many people at once."),
1004 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."),
1005 AddFolderMemberError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
1006 AddFolderMemberError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
1007 #[allow(deprecated)] AddFolderMemberError::InvalidSharedFolder => f.write_str("Field is deprecated. Invalid shared folder error will be returned as an access_error."),
1008 _ => write!(f, "{:?}", *self),
1009 }
1010 }
1011}
1012
1013#[derive(Debug, Clone, PartialEq, Eq)]
1015#[non_exhaustive] pub struct AddMember {
1017 pub member: MemberSelector,
1019 pub access_level: Option<AccessLevel>,
1022}
1023
1024impl AddMember {
1025 pub fn new(member: MemberSelector) -> Self {
1026 AddMember {
1027 member,
1028 access_level: None,
1029 }
1030 }
1031
1032 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
1033 self.access_level = Some(value);
1034 self
1035 }
1036}
1037
1038const ADD_MEMBER_FIELDS: &[&str] = &["member",
1039 "access_level"];
1040impl AddMember {
1041 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1042 map: V,
1043 ) -> Result<AddMember, V::Error> {
1044 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1045 }
1046
1047 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1048 mut map: V,
1049 optional: bool,
1050 ) -> Result<Option<AddMember>, V::Error> {
1051 let mut field_member = None;
1052 let mut field_access_level = None;
1053 let mut nothing = true;
1054 while let Some(key) = map.next_key::<&str>()? {
1055 nothing = false;
1056 match key {
1057 "member" => {
1058 if field_member.is_some() {
1059 return Err(::serde::de::Error::duplicate_field("member"));
1060 }
1061 field_member = Some(map.next_value()?);
1062 }
1063 "access_level" => {
1064 if field_access_level.is_some() {
1065 return Err(::serde::de::Error::duplicate_field("access_level"));
1066 }
1067 field_access_level = Some(map.next_value()?);
1068 }
1069 _ => {
1070 map.next_value::<::serde_json::Value>()?;
1072 }
1073 }
1074 }
1075 if optional && nothing {
1076 return Ok(None);
1077 }
1078 let result = AddMember {
1079 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
1080 access_level: field_access_level.and_then(Option::flatten),
1081 };
1082 Ok(Some(result))
1083 }
1084
1085 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1086 &self,
1087 s: &mut S::SerializeStruct,
1088 ) -> Result<(), S::Error> {
1089 use serde::ser::SerializeStruct;
1090 s.serialize_field("member", &self.member)?;
1091 if let Some(val) = &self.access_level {
1092 s.serialize_field("access_level", val)?;
1093 }
1094 Ok(())
1095 }
1096}
1097
1098impl<'de> ::serde::de::Deserialize<'de> for AddMember {
1099 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1100 use serde::de::{MapAccess, Visitor};
1102 struct StructVisitor;
1103 impl<'de> Visitor<'de> for StructVisitor {
1104 type Value = AddMember;
1105 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1106 f.write_str("a AddMember struct")
1107 }
1108 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1109 AddMember::internal_deserialize(map)
1110 }
1111 }
1112 deserializer.deserialize_struct("AddMember", ADD_MEMBER_FIELDS, StructVisitor)
1113 }
1114}
1115
1116impl ::serde::ser::Serialize for AddMember {
1117 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1118 use serde::ser::SerializeStruct;
1120 let mut s = serializer.serialize_struct("AddMember", 2)?;
1121 self.internal_serialize::<S>(&mut s)?;
1122 s.end()
1123 }
1124}
1125
1126#[derive(Debug, Clone, PartialEq, Eq)]
1127#[non_exhaustive] pub enum AddMemberSelectorError {
1129 AutomaticGroup,
1131 InvalidDropboxId(DropboxId),
1133 InvalidEmail(crate::types::common::EmailAddress),
1135 InvalidGroup,
1137 UnverifiedDropboxId(DropboxId),
1140 GroupDeleted,
1143 GroupNotOnTeam,
1145 Other,
1148}
1149
1150impl<'de> ::serde::de::Deserialize<'de> for AddMemberSelectorError {
1151 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1152 use serde::de::{self, MapAccess, Visitor};
1154 struct EnumVisitor;
1155 impl<'de> Visitor<'de> for EnumVisitor {
1156 type Value = AddMemberSelectorError;
1157 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1158 f.write_str("a AddMemberSelectorError structure")
1159 }
1160 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1161 let tag: &str = match map.next_key()? {
1162 Some(".tag") => map.next_value()?,
1163 _ => return Err(de::Error::missing_field(".tag"))
1164 };
1165 let value = match tag {
1166 "automatic_group" => AddMemberSelectorError::AutomaticGroup,
1167 "invalid_dropbox_id" => {
1168 match map.next_key()? {
1169 Some("invalid_dropbox_id") => AddMemberSelectorError::InvalidDropboxId(map.next_value()?),
1170 None => return Err(de::Error::missing_field("invalid_dropbox_id")),
1171 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
1172 }
1173 }
1174 "invalid_email" => {
1175 match map.next_key()? {
1176 Some("invalid_email") => AddMemberSelectorError::InvalidEmail(map.next_value()?),
1177 None => return Err(de::Error::missing_field("invalid_email")),
1178 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
1179 }
1180 }
1181 "invalid_group" => AddMemberSelectorError::InvalidGroup,
1182 "unverified_dropbox_id" => {
1183 match map.next_key()? {
1184 Some("unverified_dropbox_id") => AddMemberSelectorError::UnverifiedDropboxId(map.next_value()?),
1185 None => return Err(de::Error::missing_field("unverified_dropbox_id")),
1186 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
1187 }
1188 }
1189 "group_deleted" => AddMemberSelectorError::GroupDeleted,
1190 "group_not_on_team" => AddMemberSelectorError::GroupNotOnTeam,
1191 _ => AddMemberSelectorError::Other,
1192 };
1193 crate::eat_json_fields(&mut map)?;
1194 Ok(value)
1195 }
1196 }
1197 const VARIANTS: &[&str] = &["automatic_group",
1198 "invalid_dropbox_id",
1199 "invalid_email",
1200 "invalid_group",
1201 "unverified_dropbox_id",
1202 "group_deleted",
1203 "group_not_on_team",
1204 "other"];
1205 deserializer.deserialize_struct("AddMemberSelectorError", VARIANTS, EnumVisitor)
1206 }
1207}
1208
1209impl ::serde::ser::Serialize for AddMemberSelectorError {
1210 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1211 use serde::ser::SerializeStruct;
1213 match self {
1214 AddMemberSelectorError::AutomaticGroup => {
1215 let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?;
1217 s.serialize_field(".tag", "automatic_group")?;
1218 s.end()
1219 }
1220 AddMemberSelectorError::InvalidDropboxId(x) => {
1221 let mut s = serializer.serialize_struct("AddMemberSelectorError", 2)?;
1223 s.serialize_field(".tag", "invalid_dropbox_id")?;
1224 s.serialize_field("invalid_dropbox_id", x)?;
1225 s.end()
1226 }
1227 AddMemberSelectorError::InvalidEmail(x) => {
1228 let mut s = serializer.serialize_struct("AddMemberSelectorError", 2)?;
1230 s.serialize_field(".tag", "invalid_email")?;
1231 s.serialize_field("invalid_email", x)?;
1232 s.end()
1233 }
1234 AddMemberSelectorError::InvalidGroup => {
1235 let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?;
1237 s.serialize_field(".tag", "invalid_group")?;
1238 s.end()
1239 }
1240 AddMemberSelectorError::UnverifiedDropboxId(x) => {
1241 let mut s = serializer.serialize_struct("AddMemberSelectorError", 2)?;
1243 s.serialize_field(".tag", "unverified_dropbox_id")?;
1244 s.serialize_field("unverified_dropbox_id", x)?;
1245 s.end()
1246 }
1247 AddMemberSelectorError::GroupDeleted => {
1248 let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?;
1250 s.serialize_field(".tag", "group_deleted")?;
1251 s.end()
1252 }
1253 AddMemberSelectorError::GroupNotOnTeam => {
1254 let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?;
1256 s.serialize_field(".tag", "group_not_on_team")?;
1257 s.end()
1258 }
1259 AddMemberSelectorError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1260 }
1261 }
1262}
1263
1264impl ::std::error::Error for AddMemberSelectorError {
1265}
1266
1267impl ::std::fmt::Display for AddMemberSelectorError {
1268 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1269 match self {
1270 AddMemberSelectorError::AutomaticGroup => f.write_str("Automatically created groups can only be added to team folders."),
1271 AddMemberSelectorError::InvalidDropboxId(inner) => write!(f, "The value is the ID that could not be identified: {:?}", inner),
1272 AddMemberSelectorError::InvalidEmail(inner) => write!(f, "The value is the e-email address that is malformed: {:?}", inner),
1273 AddMemberSelectorError::InvalidGroup => f.write_str("Provided group is invalid."),
1274 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),
1275 AddMemberSelectorError::GroupNotOnTeam => f.write_str("Sharing to a group that is not on the current user's team."),
1276 _ => write!(f, "{:?}", *self),
1277 }
1278 }
1279}
1280
1281#[derive(Debug, Clone, PartialEq, Eq)]
1283#[non_exhaustive] pub enum AlphaResolvedVisibility {
1285 Public,
1287 TeamOnly,
1289 Password,
1291 TeamAndPassword,
1294 SharedFolderOnly,
1297 NoOne,
1301 OnlyYou,
1303 Other,
1306}
1307
1308impl<'de> ::serde::de::Deserialize<'de> for AlphaResolvedVisibility {
1309 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1310 use serde::de::{self, MapAccess, Visitor};
1312 struct EnumVisitor;
1313 impl<'de> Visitor<'de> for EnumVisitor {
1314 type Value = AlphaResolvedVisibility;
1315 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1316 f.write_str("a AlphaResolvedVisibility structure")
1317 }
1318 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1319 let tag: &str = match map.next_key()? {
1320 Some(".tag") => map.next_value()?,
1321 _ => return Err(de::Error::missing_field(".tag"))
1322 };
1323 let value = match tag {
1324 "public" => AlphaResolvedVisibility::Public,
1325 "team_only" => AlphaResolvedVisibility::TeamOnly,
1326 "password" => AlphaResolvedVisibility::Password,
1327 "team_and_password" => AlphaResolvedVisibility::TeamAndPassword,
1328 "shared_folder_only" => AlphaResolvedVisibility::SharedFolderOnly,
1329 "no_one" => AlphaResolvedVisibility::NoOne,
1330 "only_you" => AlphaResolvedVisibility::OnlyYou,
1331 _ => AlphaResolvedVisibility::Other,
1332 };
1333 crate::eat_json_fields(&mut map)?;
1334 Ok(value)
1335 }
1336 }
1337 const VARIANTS: &[&str] = &["public",
1338 "team_only",
1339 "password",
1340 "team_and_password",
1341 "shared_folder_only",
1342 "no_one",
1343 "only_you",
1344 "other"];
1345 deserializer.deserialize_struct("AlphaResolvedVisibility", VARIANTS, EnumVisitor)
1346 }
1347}
1348
1349impl ::serde::ser::Serialize for AlphaResolvedVisibility {
1350 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1351 use serde::ser::SerializeStruct;
1353 match self {
1354 AlphaResolvedVisibility::Public => {
1355 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1357 s.serialize_field(".tag", "public")?;
1358 s.end()
1359 }
1360 AlphaResolvedVisibility::TeamOnly => {
1361 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1363 s.serialize_field(".tag", "team_only")?;
1364 s.end()
1365 }
1366 AlphaResolvedVisibility::Password => {
1367 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1369 s.serialize_field(".tag", "password")?;
1370 s.end()
1371 }
1372 AlphaResolvedVisibility::TeamAndPassword => {
1373 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1375 s.serialize_field(".tag", "team_and_password")?;
1376 s.end()
1377 }
1378 AlphaResolvedVisibility::SharedFolderOnly => {
1379 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1381 s.serialize_field(".tag", "shared_folder_only")?;
1382 s.end()
1383 }
1384 AlphaResolvedVisibility::NoOne => {
1385 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1387 s.serialize_field(".tag", "no_one")?;
1388 s.end()
1389 }
1390 AlphaResolvedVisibility::OnlyYou => {
1391 let mut s = serializer.serialize_struct("AlphaResolvedVisibility", 1)?;
1393 s.serialize_field(".tag", "only_you")?;
1394 s.end()
1395 }
1396 AlphaResolvedVisibility::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1397 }
1398 }
1399}
1400
1401impl From<ResolvedVisibility> for AlphaResolvedVisibility {
1403 fn from(parent: ResolvedVisibility) -> Self {
1404 match parent {
1405 ResolvedVisibility::Public => AlphaResolvedVisibility::Public,
1406 ResolvedVisibility::TeamOnly => AlphaResolvedVisibility::TeamOnly,
1407 ResolvedVisibility::Password => AlphaResolvedVisibility::Password,
1408 ResolvedVisibility::TeamAndPassword => AlphaResolvedVisibility::TeamAndPassword,
1409 ResolvedVisibility::SharedFolderOnly => AlphaResolvedVisibility::SharedFolderOnly,
1410 ResolvedVisibility::NoOne => AlphaResolvedVisibility::NoOne,
1411 ResolvedVisibility::OnlyYou => AlphaResolvedVisibility::OnlyYou,
1412 ResolvedVisibility::Other => AlphaResolvedVisibility::Other,
1413 }
1414 }
1415}
1416#[derive(Debug, Clone, PartialEq, Eq)]
1418#[non_exhaustive] pub struct AudienceExceptionContentInfo {
1420 pub name: String,
1422}
1423
1424impl AudienceExceptionContentInfo {
1425 pub fn new(name: String) -> Self {
1426 AudienceExceptionContentInfo {
1427 name,
1428 }
1429 }
1430}
1431
1432const AUDIENCE_EXCEPTION_CONTENT_INFO_FIELDS: &[&str] = &["name"];
1433impl AudienceExceptionContentInfo {
1434 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1435 map: V,
1436 ) -> Result<AudienceExceptionContentInfo, V::Error> {
1437 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1438 }
1439
1440 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1441 mut map: V,
1442 optional: bool,
1443 ) -> Result<Option<AudienceExceptionContentInfo>, V::Error> {
1444 let mut field_name = None;
1445 let mut nothing = true;
1446 while let Some(key) = map.next_key::<&str>()? {
1447 nothing = false;
1448 match key {
1449 "name" => {
1450 if field_name.is_some() {
1451 return Err(::serde::de::Error::duplicate_field("name"));
1452 }
1453 field_name = Some(map.next_value()?);
1454 }
1455 _ => {
1456 map.next_value::<::serde_json::Value>()?;
1458 }
1459 }
1460 }
1461 if optional && nothing {
1462 return Ok(None);
1463 }
1464 let result = AudienceExceptionContentInfo {
1465 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
1466 };
1467 Ok(Some(result))
1468 }
1469
1470 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1471 &self,
1472 s: &mut S::SerializeStruct,
1473 ) -> Result<(), S::Error> {
1474 use serde::ser::SerializeStruct;
1475 s.serialize_field("name", &self.name)?;
1476 Ok(())
1477 }
1478}
1479
1480impl<'de> ::serde::de::Deserialize<'de> for AudienceExceptionContentInfo {
1481 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1482 use serde::de::{MapAccess, Visitor};
1484 struct StructVisitor;
1485 impl<'de> Visitor<'de> for StructVisitor {
1486 type Value = AudienceExceptionContentInfo;
1487 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1488 f.write_str("a AudienceExceptionContentInfo struct")
1489 }
1490 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1491 AudienceExceptionContentInfo::internal_deserialize(map)
1492 }
1493 }
1494 deserializer.deserialize_struct("AudienceExceptionContentInfo", AUDIENCE_EXCEPTION_CONTENT_INFO_FIELDS, StructVisitor)
1495 }
1496}
1497
1498impl ::serde::ser::Serialize for AudienceExceptionContentInfo {
1499 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1500 use serde::ser::SerializeStruct;
1502 let mut s = serializer.serialize_struct("AudienceExceptionContentInfo", 1)?;
1503 self.internal_serialize::<S>(&mut s)?;
1504 s.end()
1505 }
1506}
1507
1508#[derive(Debug, Clone, PartialEq, Eq)]
1511#[non_exhaustive] pub struct AudienceExceptions {
1513 pub count: u32,
1514 pub exceptions: Vec<AudienceExceptionContentInfo>,
1518}
1519
1520impl AudienceExceptions {
1521 pub fn new(count: u32, exceptions: Vec<AudienceExceptionContentInfo>) -> Self {
1522 AudienceExceptions {
1523 count,
1524 exceptions,
1525 }
1526 }
1527}
1528
1529const AUDIENCE_EXCEPTIONS_FIELDS: &[&str] = &["count",
1530 "exceptions"];
1531impl AudienceExceptions {
1532 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1533 map: V,
1534 ) -> Result<AudienceExceptions, V::Error> {
1535 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1536 }
1537
1538 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1539 mut map: V,
1540 optional: bool,
1541 ) -> Result<Option<AudienceExceptions>, V::Error> {
1542 let mut field_count = None;
1543 let mut field_exceptions = None;
1544 let mut nothing = true;
1545 while let Some(key) = map.next_key::<&str>()? {
1546 nothing = false;
1547 match key {
1548 "count" => {
1549 if field_count.is_some() {
1550 return Err(::serde::de::Error::duplicate_field("count"));
1551 }
1552 field_count = Some(map.next_value()?);
1553 }
1554 "exceptions" => {
1555 if field_exceptions.is_some() {
1556 return Err(::serde::de::Error::duplicate_field("exceptions"));
1557 }
1558 field_exceptions = Some(map.next_value()?);
1559 }
1560 _ => {
1561 map.next_value::<::serde_json::Value>()?;
1563 }
1564 }
1565 }
1566 if optional && nothing {
1567 return Ok(None);
1568 }
1569 let result = AudienceExceptions {
1570 count: field_count.ok_or_else(|| ::serde::de::Error::missing_field("count"))?,
1571 exceptions: field_exceptions.ok_or_else(|| ::serde::de::Error::missing_field("exceptions"))?,
1572 };
1573 Ok(Some(result))
1574 }
1575
1576 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1577 &self,
1578 s: &mut S::SerializeStruct,
1579 ) -> Result<(), S::Error> {
1580 use serde::ser::SerializeStruct;
1581 s.serialize_field("count", &self.count)?;
1582 s.serialize_field("exceptions", &self.exceptions)?;
1583 Ok(())
1584 }
1585}
1586
1587impl<'de> ::serde::de::Deserialize<'de> for AudienceExceptions {
1588 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1589 use serde::de::{MapAccess, Visitor};
1591 struct StructVisitor;
1592 impl<'de> Visitor<'de> for StructVisitor {
1593 type Value = AudienceExceptions;
1594 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1595 f.write_str("a AudienceExceptions struct")
1596 }
1597 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1598 AudienceExceptions::internal_deserialize(map)
1599 }
1600 }
1601 deserializer.deserialize_struct("AudienceExceptions", AUDIENCE_EXCEPTIONS_FIELDS, StructVisitor)
1602 }
1603}
1604
1605impl ::serde::ser::Serialize for AudienceExceptions {
1606 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1607 use serde::ser::SerializeStruct;
1609 let mut s = serializer.serialize_struct("AudienceExceptions", 2)?;
1610 self.internal_serialize::<S>(&mut s)?;
1611 s.end()
1612 }
1613}
1614
1615#[derive(Debug, Clone, PartialEq, Eq)]
1618#[non_exhaustive] pub struct AudienceRestrictingSharedFolder {
1620 pub shared_folder_id: crate::types::common::SharedFolderId,
1622 pub name: String,
1624 pub audience: LinkAudience,
1626}
1627
1628impl AudienceRestrictingSharedFolder {
1629 pub fn new(
1630 shared_folder_id: crate::types::common::SharedFolderId,
1631 name: String,
1632 audience: LinkAudience,
1633 ) -> Self {
1634 AudienceRestrictingSharedFolder {
1635 shared_folder_id,
1636 name,
1637 audience,
1638 }
1639 }
1640}
1641
1642const AUDIENCE_RESTRICTING_SHARED_FOLDER_FIELDS: &[&str] = &["shared_folder_id",
1643 "name",
1644 "audience"];
1645impl AudienceRestrictingSharedFolder {
1646 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1647 map: V,
1648 ) -> Result<AudienceRestrictingSharedFolder, V::Error> {
1649 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1650 }
1651
1652 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1653 mut map: V,
1654 optional: bool,
1655 ) -> Result<Option<AudienceRestrictingSharedFolder>, V::Error> {
1656 let mut field_shared_folder_id = None;
1657 let mut field_name = None;
1658 let mut field_audience = None;
1659 let mut nothing = true;
1660 while let Some(key) = map.next_key::<&str>()? {
1661 nothing = false;
1662 match key {
1663 "shared_folder_id" => {
1664 if field_shared_folder_id.is_some() {
1665 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
1666 }
1667 field_shared_folder_id = Some(map.next_value()?);
1668 }
1669 "name" => {
1670 if field_name.is_some() {
1671 return Err(::serde::de::Error::duplicate_field("name"));
1672 }
1673 field_name = Some(map.next_value()?);
1674 }
1675 "audience" => {
1676 if field_audience.is_some() {
1677 return Err(::serde::de::Error::duplicate_field("audience"));
1678 }
1679 field_audience = Some(map.next_value()?);
1680 }
1681 _ => {
1682 map.next_value::<::serde_json::Value>()?;
1684 }
1685 }
1686 }
1687 if optional && nothing {
1688 return Ok(None);
1689 }
1690 let result = AudienceRestrictingSharedFolder {
1691 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
1692 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
1693 audience: field_audience.ok_or_else(|| ::serde::de::Error::missing_field("audience"))?,
1694 };
1695 Ok(Some(result))
1696 }
1697
1698 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1699 &self,
1700 s: &mut S::SerializeStruct,
1701 ) -> Result<(), S::Error> {
1702 use serde::ser::SerializeStruct;
1703 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
1704 s.serialize_field("name", &self.name)?;
1705 s.serialize_field("audience", &self.audience)?;
1706 Ok(())
1707 }
1708}
1709
1710impl<'de> ::serde::de::Deserialize<'de> for AudienceRestrictingSharedFolder {
1711 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1712 use serde::de::{MapAccess, Visitor};
1714 struct StructVisitor;
1715 impl<'de> Visitor<'de> for StructVisitor {
1716 type Value = AudienceRestrictingSharedFolder;
1717 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1718 f.write_str("a AudienceRestrictingSharedFolder struct")
1719 }
1720 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1721 AudienceRestrictingSharedFolder::internal_deserialize(map)
1722 }
1723 }
1724 deserializer.deserialize_struct("AudienceRestrictingSharedFolder", AUDIENCE_RESTRICTING_SHARED_FOLDER_FIELDS, StructVisitor)
1725 }
1726}
1727
1728impl ::serde::ser::Serialize for AudienceRestrictingSharedFolder {
1729 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1730 use serde::ser::SerializeStruct;
1732 let mut s = serializer.serialize_struct("AudienceRestrictingSharedFolder", 3)?;
1733 self.internal_serialize::<S>(&mut s)?;
1734 s.end()
1735 }
1736}
1737
1738#[derive(Debug, Clone, PartialEq, Eq)]
1740#[non_exhaustive] pub enum ChangeLinkExpirationPolicy {
1742 Allowed,
1743 NotAllowed,
1744 Other,
1747}
1748
1749impl<'de> ::serde::de::Deserialize<'de> for ChangeLinkExpirationPolicy {
1750 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1751 use serde::de::{self, MapAccess, Visitor};
1753 struct EnumVisitor;
1754 impl<'de> Visitor<'de> for EnumVisitor {
1755 type Value = ChangeLinkExpirationPolicy;
1756 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1757 f.write_str("a ChangeLinkExpirationPolicy structure")
1758 }
1759 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
1760 let tag: &str = match map.next_key()? {
1761 Some(".tag") => map.next_value()?,
1762 _ => return Err(de::Error::missing_field(".tag"))
1763 };
1764 let value = match tag {
1765 "allowed" => ChangeLinkExpirationPolicy::Allowed,
1766 "not_allowed" => ChangeLinkExpirationPolicy::NotAllowed,
1767 _ => ChangeLinkExpirationPolicy::Other,
1768 };
1769 crate::eat_json_fields(&mut map)?;
1770 Ok(value)
1771 }
1772 }
1773 const VARIANTS: &[&str] = &["allowed",
1774 "not_allowed",
1775 "other"];
1776 deserializer.deserialize_struct("ChangeLinkExpirationPolicy", VARIANTS, EnumVisitor)
1777 }
1778}
1779
1780impl ::serde::ser::Serialize for ChangeLinkExpirationPolicy {
1781 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1782 use serde::ser::SerializeStruct;
1784 match self {
1785 ChangeLinkExpirationPolicy::Allowed => {
1786 let mut s = serializer.serialize_struct("ChangeLinkExpirationPolicy", 1)?;
1788 s.serialize_field(".tag", "allowed")?;
1789 s.end()
1790 }
1791 ChangeLinkExpirationPolicy::NotAllowed => {
1792 let mut s = serializer.serialize_struct("ChangeLinkExpirationPolicy", 1)?;
1794 s.serialize_field(".tag", "not_allowed")?;
1795 s.end()
1796 }
1797 ChangeLinkExpirationPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
1798 }
1799 }
1800}
1801
1802#[derive(Debug, Clone, PartialEq, Eq)]
1804#[non_exhaustive] pub struct CollectionLinkMetadata {
1806 pub url: String,
1808 pub visibility: Visibility,
1810 pub expires: Option<crate::types::common::DropboxTimestamp>,
1812}
1813
1814impl CollectionLinkMetadata {
1815 pub fn new(url: String, visibility: Visibility) -> Self {
1816 CollectionLinkMetadata {
1817 url,
1818 visibility,
1819 expires: None,
1820 }
1821 }
1822
1823 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
1824 self.expires = Some(value);
1825 self
1826 }
1827}
1828
1829const COLLECTION_LINK_METADATA_FIELDS: &[&str] = &["url",
1830 "visibility",
1831 "expires"];
1832impl CollectionLinkMetadata {
1833 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1834 map: V,
1835 ) -> Result<CollectionLinkMetadata, V::Error> {
1836 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1837 }
1838
1839 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1840 mut map: V,
1841 optional: bool,
1842 ) -> Result<Option<CollectionLinkMetadata>, V::Error> {
1843 let mut field_url = None;
1844 let mut field_visibility = None;
1845 let mut field_expires = None;
1846 let mut nothing = true;
1847 while let Some(key) = map.next_key::<&str>()? {
1848 nothing = false;
1849 match key {
1850 "url" => {
1851 if field_url.is_some() {
1852 return Err(::serde::de::Error::duplicate_field("url"));
1853 }
1854 field_url = Some(map.next_value()?);
1855 }
1856 "visibility" => {
1857 if field_visibility.is_some() {
1858 return Err(::serde::de::Error::duplicate_field("visibility"));
1859 }
1860 field_visibility = Some(map.next_value()?);
1861 }
1862 "expires" => {
1863 if field_expires.is_some() {
1864 return Err(::serde::de::Error::duplicate_field("expires"));
1865 }
1866 field_expires = Some(map.next_value()?);
1867 }
1868 _ => {
1869 map.next_value::<::serde_json::Value>()?;
1871 }
1872 }
1873 }
1874 if optional && nothing {
1875 return Ok(None);
1876 }
1877 let result = CollectionLinkMetadata {
1878 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
1879 visibility: field_visibility.ok_or_else(|| ::serde::de::Error::missing_field("visibility"))?,
1880 expires: field_expires.and_then(Option::flatten),
1881 };
1882 Ok(Some(result))
1883 }
1884
1885 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
1886 &self,
1887 s: &mut S::SerializeStruct,
1888 ) -> Result<(), S::Error> {
1889 use serde::ser::SerializeStruct;
1890 s.serialize_field("url", &self.url)?;
1891 s.serialize_field("visibility", &self.visibility)?;
1892 if let Some(val) = &self.expires {
1893 s.serialize_field("expires", val)?;
1894 }
1895 Ok(())
1896 }
1897}
1898
1899impl<'de> ::serde::de::Deserialize<'de> for CollectionLinkMetadata {
1900 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1901 use serde::de::{MapAccess, Visitor};
1903 struct StructVisitor;
1904 impl<'de> Visitor<'de> for StructVisitor {
1905 type Value = CollectionLinkMetadata;
1906 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1907 f.write_str("a CollectionLinkMetadata struct")
1908 }
1909 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
1910 CollectionLinkMetadata::internal_deserialize(map)
1911 }
1912 }
1913 deserializer.deserialize_struct("CollectionLinkMetadata", COLLECTION_LINK_METADATA_FIELDS, StructVisitor)
1914 }
1915}
1916
1917impl ::serde::ser::Serialize for CollectionLinkMetadata {
1918 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1919 use serde::ser::SerializeStruct;
1921 let mut s = serializer.serialize_struct("CollectionLinkMetadata", 3)?;
1922 self.internal_serialize::<S>(&mut s)?;
1923 s.end()
1924 }
1925}
1926
1927impl From<CollectionLinkMetadata> for LinkMetadata {
1929 fn from(subtype: CollectionLinkMetadata) -> Self {
1930 LinkMetadata::Collection(subtype)
1931 }
1932}
1933#[derive(Debug, Clone, PartialEq, Eq)]
1934#[non_exhaustive] pub struct CreateSharedLinkArg {
1936 pub path: String,
1938 #[deprecated]
1940 pub short_url: bool,
1941 pub pending_upload: Option<PendingUploadMode>,
1945}
1946
1947impl CreateSharedLinkArg {
1948 pub fn new(path: String) -> Self {
1949 CreateSharedLinkArg {
1950 path,
1951 #[allow(deprecated)] short_url: false,
1952 pending_upload: None,
1953 }
1954 }
1955
1956 #[deprecated]
1957 #[allow(deprecated)]
1958 pub fn with_short_url(mut self, value: bool) -> Self {
1959 self.short_url = value;
1960 self
1961 }
1962
1963 pub fn with_pending_upload(mut self, value: PendingUploadMode) -> Self {
1964 self.pending_upload = Some(value);
1965 self
1966 }
1967}
1968
1969const CREATE_SHARED_LINK_ARG_FIELDS: &[&str] = &["path",
1970 "short_url",
1971 "pending_upload"];
1972impl CreateSharedLinkArg {
1973 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
1974 map: V,
1975 ) -> Result<CreateSharedLinkArg, V::Error> {
1976 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
1977 }
1978
1979 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
1980 mut map: V,
1981 optional: bool,
1982 ) -> Result<Option<CreateSharedLinkArg>, V::Error> {
1983 let mut field_path = None;
1984 let mut field_short_url = None;
1985 let mut field_pending_upload = None;
1986 let mut nothing = true;
1987 while let Some(key) = map.next_key::<&str>()? {
1988 nothing = false;
1989 match key {
1990 "path" => {
1991 if field_path.is_some() {
1992 return Err(::serde::de::Error::duplicate_field("path"));
1993 }
1994 field_path = Some(map.next_value()?);
1995 }
1996 "short_url" => {
1997 if field_short_url.is_some() {
1998 return Err(::serde::de::Error::duplicate_field("short_url"));
1999 }
2000 field_short_url = Some(map.next_value()?);
2001 }
2002 "pending_upload" => {
2003 if field_pending_upload.is_some() {
2004 return Err(::serde::de::Error::duplicate_field("pending_upload"));
2005 }
2006 field_pending_upload = Some(map.next_value()?);
2007 }
2008 _ => {
2009 map.next_value::<::serde_json::Value>()?;
2011 }
2012 }
2013 }
2014 if optional && nothing {
2015 return Ok(None);
2016 }
2017 let result = CreateSharedLinkArg {
2018 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
2019 #[allow(deprecated)] short_url: field_short_url.unwrap_or(false),
2020 pending_upload: field_pending_upload.and_then(Option::flatten),
2021 };
2022 Ok(Some(result))
2023 }
2024
2025 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2026 &self,
2027 s: &mut S::SerializeStruct,
2028 ) -> Result<(), S::Error> {
2029 use serde::ser::SerializeStruct;
2030 s.serialize_field("path", &self.path)?;
2031 #[allow(deprecated)]
2032 if self.short_url {
2033 s.serialize_field("short_url", &self.short_url)?;
2034 }
2035 if let Some(val) = &self.pending_upload {
2036 s.serialize_field("pending_upload", val)?;
2037 }
2038 Ok(())
2039 }
2040}
2041
2042impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkArg {
2043 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2044 use serde::de::{MapAccess, Visitor};
2046 struct StructVisitor;
2047 impl<'de> Visitor<'de> for StructVisitor {
2048 type Value = CreateSharedLinkArg;
2049 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2050 f.write_str("a CreateSharedLinkArg struct")
2051 }
2052 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2053 CreateSharedLinkArg::internal_deserialize(map)
2054 }
2055 }
2056 deserializer.deserialize_struct("CreateSharedLinkArg", CREATE_SHARED_LINK_ARG_FIELDS, StructVisitor)
2057 }
2058}
2059
2060impl ::serde::ser::Serialize for CreateSharedLinkArg {
2061 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2062 use serde::ser::SerializeStruct;
2064 let mut s = serializer.serialize_struct("CreateSharedLinkArg", 3)?;
2065 self.internal_serialize::<S>(&mut s)?;
2066 s.end()
2067 }
2068}
2069
2070#[derive(Debug, Clone, PartialEq, Eq)]
2071#[non_exhaustive] pub enum CreateSharedLinkError {
2073 Path(crate::types::files::LookupError),
2074 Other,
2077}
2078
2079impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkError {
2080 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2081 use serde::de::{self, MapAccess, Visitor};
2083 struct EnumVisitor;
2084 impl<'de> Visitor<'de> for EnumVisitor {
2085 type Value = CreateSharedLinkError;
2086 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2087 f.write_str("a CreateSharedLinkError structure")
2088 }
2089 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2090 let tag: &str = match map.next_key()? {
2091 Some(".tag") => map.next_value()?,
2092 _ => return Err(de::Error::missing_field(".tag"))
2093 };
2094 let value = match tag {
2095 "path" => {
2096 match map.next_key()? {
2097 Some("path") => CreateSharedLinkError::Path(map.next_value()?),
2098 None => return Err(de::Error::missing_field("path")),
2099 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2100 }
2101 }
2102 _ => CreateSharedLinkError::Other,
2103 };
2104 crate::eat_json_fields(&mut map)?;
2105 Ok(value)
2106 }
2107 }
2108 const VARIANTS: &[&str] = &["path",
2109 "other"];
2110 deserializer.deserialize_struct("CreateSharedLinkError", VARIANTS, EnumVisitor)
2111 }
2112}
2113
2114impl ::serde::ser::Serialize for CreateSharedLinkError {
2115 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2116 use serde::ser::SerializeStruct;
2118 match self {
2119 CreateSharedLinkError::Path(x) => {
2120 let mut s = serializer.serialize_struct("CreateSharedLinkError", 2)?;
2122 s.serialize_field(".tag", "path")?;
2123 s.serialize_field("path", x)?;
2124 s.end()
2125 }
2126 CreateSharedLinkError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
2127 }
2128 }
2129}
2130
2131impl ::std::error::Error for CreateSharedLinkError {
2132 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
2133 match self {
2134 CreateSharedLinkError::Path(inner) => Some(inner),
2135 _ => None,
2136 }
2137 }
2138}
2139
2140impl ::std::fmt::Display for CreateSharedLinkError {
2141 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2142 match self {
2143 CreateSharedLinkError::Path(inner) => write!(f, "CreateSharedLinkError: {}", inner),
2144 _ => write!(f, "{:?}", *self),
2145 }
2146 }
2147}
2148
2149#[derive(Debug, Clone, PartialEq, Eq)]
2150#[non_exhaustive] pub struct CreateSharedLinkWithSettingsArg {
2152 pub path: ReadPath,
2154 pub settings: Option<SharedLinkSettings>,
2156}
2157
2158impl CreateSharedLinkWithSettingsArg {
2159 pub fn new(path: ReadPath) -> Self {
2160 CreateSharedLinkWithSettingsArg {
2161 path,
2162 settings: None,
2163 }
2164 }
2165
2166 pub fn with_settings(mut self, value: SharedLinkSettings) -> Self {
2167 self.settings = Some(value);
2168 self
2169 }
2170}
2171
2172const CREATE_SHARED_LINK_WITH_SETTINGS_ARG_FIELDS: &[&str] = &["path",
2173 "settings"];
2174impl CreateSharedLinkWithSettingsArg {
2175 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2176 map: V,
2177 ) -> Result<CreateSharedLinkWithSettingsArg, V::Error> {
2178 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2179 }
2180
2181 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2182 mut map: V,
2183 optional: bool,
2184 ) -> Result<Option<CreateSharedLinkWithSettingsArg>, V::Error> {
2185 let mut field_path = None;
2186 let mut field_settings = None;
2187 let mut nothing = true;
2188 while let Some(key) = map.next_key::<&str>()? {
2189 nothing = false;
2190 match key {
2191 "path" => {
2192 if field_path.is_some() {
2193 return Err(::serde::de::Error::duplicate_field("path"));
2194 }
2195 field_path = Some(map.next_value()?);
2196 }
2197 "settings" => {
2198 if field_settings.is_some() {
2199 return Err(::serde::de::Error::duplicate_field("settings"));
2200 }
2201 field_settings = Some(map.next_value()?);
2202 }
2203 _ => {
2204 map.next_value::<::serde_json::Value>()?;
2206 }
2207 }
2208 }
2209 if optional && nothing {
2210 return Ok(None);
2211 }
2212 let result = CreateSharedLinkWithSettingsArg {
2213 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
2214 settings: field_settings.and_then(Option::flatten),
2215 };
2216 Ok(Some(result))
2217 }
2218
2219 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2220 &self,
2221 s: &mut S::SerializeStruct,
2222 ) -> Result<(), S::Error> {
2223 use serde::ser::SerializeStruct;
2224 s.serialize_field("path", &self.path)?;
2225 if let Some(val) = &self.settings {
2226 s.serialize_field("settings", val)?;
2227 }
2228 Ok(())
2229 }
2230}
2231
2232impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkWithSettingsArg {
2233 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2234 use serde::de::{MapAccess, Visitor};
2236 struct StructVisitor;
2237 impl<'de> Visitor<'de> for StructVisitor {
2238 type Value = CreateSharedLinkWithSettingsArg;
2239 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2240 f.write_str("a CreateSharedLinkWithSettingsArg struct")
2241 }
2242 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2243 CreateSharedLinkWithSettingsArg::internal_deserialize(map)
2244 }
2245 }
2246 deserializer.deserialize_struct("CreateSharedLinkWithSettingsArg", CREATE_SHARED_LINK_WITH_SETTINGS_ARG_FIELDS, StructVisitor)
2247 }
2248}
2249
2250impl ::serde::ser::Serialize for CreateSharedLinkWithSettingsArg {
2251 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2252 use serde::ser::SerializeStruct;
2254 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsArg", 2)?;
2255 self.internal_serialize::<S>(&mut s)?;
2256 s.end()
2257 }
2258}
2259
2260#[derive(Debug, Clone, PartialEq, Eq)]
2261pub enum CreateSharedLinkWithSettingsError {
2262 Path(crate::types::files::LookupError),
2263 EmailNotVerified,
2267 SharedLinkAlreadyExists(Option<SharedLinkAlreadyExistsMetadata>),
2273 SettingsError(SharedLinkSettingsError),
2275 AccessDenied,
2279 BannedMember,
2282 TooManySharedFolders,
2285}
2286
2287impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkWithSettingsError {
2288 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2289 use serde::de::{self, MapAccess, Visitor};
2291 struct EnumVisitor;
2292 impl<'de> Visitor<'de> for EnumVisitor {
2293 type Value = CreateSharedLinkWithSettingsError;
2294 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2295 f.write_str("a CreateSharedLinkWithSettingsError structure")
2296 }
2297 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2298 let tag: &str = match map.next_key()? {
2299 Some(".tag") => map.next_value()?,
2300 _ => return Err(de::Error::missing_field(".tag"))
2301 };
2302 let value = match tag {
2303 "path" => {
2304 match map.next_key()? {
2305 Some("path") => CreateSharedLinkWithSettingsError::Path(map.next_value()?),
2306 None => return Err(de::Error::missing_field("path")),
2307 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2308 }
2309 }
2310 "email_not_verified" => CreateSharedLinkWithSettingsError::EmailNotVerified,
2311 "shared_link_already_exists" => {
2312 match map.next_key()? {
2313 Some("shared_link_already_exists") => CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(map.next_value()?),
2314 None => CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(None),
2315 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2316 }
2317 }
2318 "settings_error" => {
2319 match map.next_key()? {
2320 Some("settings_error") => CreateSharedLinkWithSettingsError::SettingsError(map.next_value()?),
2321 None => return Err(de::Error::missing_field("settings_error")),
2322 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2323 }
2324 }
2325 "access_denied" => CreateSharedLinkWithSettingsError::AccessDenied,
2326 "banned_member" => CreateSharedLinkWithSettingsError::BannedMember,
2327 "too_many_shared_folders" => CreateSharedLinkWithSettingsError::TooManySharedFolders,
2328 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
2329 };
2330 crate::eat_json_fields(&mut map)?;
2331 Ok(value)
2332 }
2333 }
2334 const VARIANTS: &[&str] = &["path",
2335 "email_not_verified",
2336 "shared_link_already_exists",
2337 "settings_error",
2338 "access_denied",
2339 "banned_member",
2340 "too_many_shared_folders"];
2341 deserializer.deserialize_struct("CreateSharedLinkWithSettingsError", VARIANTS, EnumVisitor)
2342 }
2343}
2344
2345impl ::serde::ser::Serialize for CreateSharedLinkWithSettingsError {
2346 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2347 use serde::ser::SerializeStruct;
2349 match self {
2350 CreateSharedLinkWithSettingsError::Path(x) => {
2351 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 2)?;
2353 s.serialize_field(".tag", "path")?;
2354 s.serialize_field("path", x)?;
2355 s.end()
2356 }
2357 CreateSharedLinkWithSettingsError::EmailNotVerified => {
2358 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?;
2360 s.serialize_field(".tag", "email_not_verified")?;
2361 s.end()
2362 }
2363 CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(x) => {
2364 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 2)?;
2366 s.serialize_field(".tag", "shared_link_already_exists")?;
2367 s.serialize_field("shared_link_already_exists", x)?;
2368 s.end()
2369 }
2370 CreateSharedLinkWithSettingsError::SettingsError(x) => {
2371 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 2)?;
2373 s.serialize_field(".tag", "settings_error")?;
2374 s.serialize_field("settings_error", x)?;
2375 s.end()
2376 }
2377 CreateSharedLinkWithSettingsError::AccessDenied => {
2378 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?;
2380 s.serialize_field(".tag", "access_denied")?;
2381 s.end()
2382 }
2383 CreateSharedLinkWithSettingsError::BannedMember => {
2384 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?;
2386 s.serialize_field(".tag", "banned_member")?;
2387 s.end()
2388 }
2389 CreateSharedLinkWithSettingsError::TooManySharedFolders => {
2390 let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?;
2392 s.serialize_field(".tag", "too_many_shared_folders")?;
2393 s.end()
2394 }
2395 }
2396 }
2397}
2398
2399impl ::std::error::Error for CreateSharedLinkWithSettingsError {
2400 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
2401 match self {
2402 CreateSharedLinkWithSettingsError::Path(inner) => Some(inner),
2403 CreateSharedLinkWithSettingsError::SettingsError(inner) => Some(inner),
2404 _ => None,
2405 }
2406 }
2407}
2408
2409impl ::std::fmt::Display for CreateSharedLinkWithSettingsError {
2410 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2411 match self {
2412 CreateSharedLinkWithSettingsError::Path(inner) => write!(f, "CreateSharedLinkWithSettingsError: {}", inner),
2413 CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(None) => f.write_str("shared_link_already_exists"),
2414 CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(Some(inner)) => write!(f, "shared_link_already_exists: {:?}", inner),
2415 CreateSharedLinkWithSettingsError::SettingsError(inner) => write!(f, "There is an error with the given settings: {}", inner),
2416 CreateSharedLinkWithSettingsError::TooManySharedFolders => f.write_str("Your Dropbox folder will have too many shared folders after the operation. https://help.dropbox.com/share/shared-folder-faq#Is-there-a-limit-to-the-number-of-shared-folders-I-can-create"),
2417 _ => write!(f, "{:?}", *self),
2418 }
2419 }
2420}
2421
2422#[derive(Debug, Clone, PartialEq, Eq)]
2425#[non_exhaustive] pub struct ExpectedSharedContentLinkMetadata {
2427 pub audience_options: Vec<LinkAudience>,
2432 pub current_audience: LinkAudience,
2434 pub link_permissions: Vec<LinkPermission>,
2436 pub password_protected: bool,
2438 pub access_level: Option<AccessLevel>,
2440 pub audience_restricting_shared_folder: Option<AudienceRestrictingSharedFolder>,
2442 pub expiry: Option<crate::types::common::DropboxTimestamp>,
2445}
2446
2447impl ExpectedSharedContentLinkMetadata {
2448 pub fn new(
2449 audience_options: Vec<LinkAudience>,
2450 current_audience: LinkAudience,
2451 link_permissions: Vec<LinkPermission>,
2452 password_protected: bool,
2453 ) -> Self {
2454 ExpectedSharedContentLinkMetadata {
2455 audience_options,
2456 current_audience,
2457 link_permissions,
2458 password_protected,
2459 access_level: None,
2460 audience_restricting_shared_folder: None,
2461 expiry: None,
2462 }
2463 }
2464
2465 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
2466 self.access_level = Some(value);
2467 self
2468 }
2469
2470 pub fn with_audience_restricting_shared_folder(
2471 mut self,
2472 value: AudienceRestrictingSharedFolder,
2473 ) -> Self {
2474 self.audience_restricting_shared_folder = Some(value);
2475 self
2476 }
2477
2478 pub fn with_expiry(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
2479 self.expiry = Some(value);
2480 self
2481 }
2482}
2483
2484const EXPECTED_SHARED_CONTENT_LINK_METADATA_FIELDS: &[&str] = &["audience_options",
2485 "current_audience",
2486 "link_permissions",
2487 "password_protected",
2488 "access_level",
2489 "audience_restricting_shared_folder",
2490 "expiry"];
2491impl ExpectedSharedContentLinkMetadata {
2492 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
2493 map: V,
2494 ) -> Result<ExpectedSharedContentLinkMetadata, V::Error> {
2495 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
2496 }
2497
2498 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
2499 mut map: V,
2500 optional: bool,
2501 ) -> Result<Option<ExpectedSharedContentLinkMetadata>, V::Error> {
2502 let mut field_audience_options = None;
2503 let mut field_current_audience = None;
2504 let mut field_link_permissions = None;
2505 let mut field_password_protected = None;
2506 let mut field_access_level = None;
2507 let mut field_audience_restricting_shared_folder = None;
2508 let mut field_expiry = None;
2509 let mut nothing = true;
2510 while let Some(key) = map.next_key::<&str>()? {
2511 nothing = false;
2512 match key {
2513 "audience_options" => {
2514 if field_audience_options.is_some() {
2515 return Err(::serde::de::Error::duplicate_field("audience_options"));
2516 }
2517 field_audience_options = Some(map.next_value()?);
2518 }
2519 "current_audience" => {
2520 if field_current_audience.is_some() {
2521 return Err(::serde::de::Error::duplicate_field("current_audience"));
2522 }
2523 field_current_audience = Some(map.next_value()?);
2524 }
2525 "link_permissions" => {
2526 if field_link_permissions.is_some() {
2527 return Err(::serde::de::Error::duplicate_field("link_permissions"));
2528 }
2529 field_link_permissions = Some(map.next_value()?);
2530 }
2531 "password_protected" => {
2532 if field_password_protected.is_some() {
2533 return Err(::serde::de::Error::duplicate_field("password_protected"));
2534 }
2535 field_password_protected = Some(map.next_value()?);
2536 }
2537 "access_level" => {
2538 if field_access_level.is_some() {
2539 return Err(::serde::de::Error::duplicate_field("access_level"));
2540 }
2541 field_access_level = Some(map.next_value()?);
2542 }
2543 "audience_restricting_shared_folder" => {
2544 if field_audience_restricting_shared_folder.is_some() {
2545 return Err(::serde::de::Error::duplicate_field("audience_restricting_shared_folder"));
2546 }
2547 field_audience_restricting_shared_folder = Some(map.next_value()?);
2548 }
2549 "expiry" => {
2550 if field_expiry.is_some() {
2551 return Err(::serde::de::Error::duplicate_field("expiry"));
2552 }
2553 field_expiry = Some(map.next_value()?);
2554 }
2555 _ => {
2556 map.next_value::<::serde_json::Value>()?;
2558 }
2559 }
2560 }
2561 if optional && nothing {
2562 return Ok(None);
2563 }
2564 let result = ExpectedSharedContentLinkMetadata {
2565 audience_options: field_audience_options.ok_or_else(|| ::serde::de::Error::missing_field("audience_options"))?,
2566 current_audience: field_current_audience.ok_or_else(|| ::serde::de::Error::missing_field("current_audience"))?,
2567 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
2568 password_protected: field_password_protected.ok_or_else(|| ::serde::de::Error::missing_field("password_protected"))?,
2569 access_level: field_access_level.and_then(Option::flatten),
2570 audience_restricting_shared_folder: field_audience_restricting_shared_folder.and_then(Option::flatten),
2571 expiry: field_expiry.and_then(Option::flatten),
2572 };
2573 Ok(Some(result))
2574 }
2575
2576 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
2577 &self,
2578 s: &mut S::SerializeStruct,
2579 ) -> Result<(), S::Error> {
2580 use serde::ser::SerializeStruct;
2581 s.serialize_field("audience_options", &self.audience_options)?;
2582 s.serialize_field("current_audience", &self.current_audience)?;
2583 s.serialize_field("link_permissions", &self.link_permissions)?;
2584 s.serialize_field("password_protected", &self.password_protected)?;
2585 if let Some(val) = &self.access_level {
2586 s.serialize_field("access_level", val)?;
2587 }
2588 if let Some(val) = &self.audience_restricting_shared_folder {
2589 s.serialize_field("audience_restricting_shared_folder", val)?;
2590 }
2591 if let Some(val) = &self.expiry {
2592 s.serialize_field("expiry", val)?;
2593 }
2594 Ok(())
2595 }
2596}
2597
2598impl<'de> ::serde::de::Deserialize<'de> for ExpectedSharedContentLinkMetadata {
2599 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2600 use serde::de::{MapAccess, Visitor};
2602 struct StructVisitor;
2603 impl<'de> Visitor<'de> for StructVisitor {
2604 type Value = ExpectedSharedContentLinkMetadata;
2605 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2606 f.write_str("a ExpectedSharedContentLinkMetadata struct")
2607 }
2608 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
2609 ExpectedSharedContentLinkMetadata::internal_deserialize(map)
2610 }
2611 }
2612 deserializer.deserialize_struct("ExpectedSharedContentLinkMetadata", EXPECTED_SHARED_CONTENT_LINK_METADATA_FIELDS, StructVisitor)
2613 }
2614}
2615
2616impl ::serde::ser::Serialize for ExpectedSharedContentLinkMetadata {
2617 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2618 use serde::ser::SerializeStruct;
2620 let mut s = serializer.serialize_struct("ExpectedSharedContentLinkMetadata", 7)?;
2621 self.internal_serialize::<S>(&mut s)?;
2622 s.end()
2623 }
2624}
2625
2626impl From<ExpectedSharedContentLinkMetadata> for SharedContentLinkMetadataBase {
2628 fn from(subtype: ExpectedSharedContentLinkMetadata) -> Self {
2629 Self {
2630 audience_options: subtype.audience_options,
2631 current_audience: subtype.current_audience,
2632 link_permissions: subtype.link_permissions,
2633 password_protected: subtype.password_protected,
2634 access_level: subtype.access_level,
2635 audience_restricting_shared_folder: subtype.audience_restricting_shared_folder,
2636 expiry: subtype.expiry,
2637 }
2638 }
2639}
2640#[derive(Debug, Clone, PartialEq, Eq)]
2642#[non_exhaustive] pub enum FileAction {
2644 DisableViewerInfo,
2646 EditContents,
2648 EnableViewerInfo,
2650 InviteViewer,
2652 InviteViewerNoComment,
2654 InviteEditor,
2656 Unshare,
2658 RelinquishMembership,
2660 #[deprecated]
2662 ShareLink,
2663 #[deprecated]
2665 CreateLink,
2666 CreateViewLink,
2668 CreateEditLink,
2670 Other,
2673}
2674
2675impl<'de> ::serde::de::Deserialize<'de> for FileAction {
2676 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2677 use serde::de::{self, MapAccess, Visitor};
2679 struct EnumVisitor;
2680 impl<'de> Visitor<'de> for EnumVisitor {
2681 type Value = FileAction;
2682 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2683 f.write_str("a FileAction structure")
2684 }
2685 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2686 let tag: &str = match map.next_key()? {
2687 Some(".tag") => map.next_value()?,
2688 _ => return Err(de::Error::missing_field(".tag"))
2689 };
2690 let value = match tag {
2691 "disable_viewer_info" => FileAction::DisableViewerInfo,
2692 "edit_contents" => FileAction::EditContents,
2693 "enable_viewer_info" => FileAction::EnableViewerInfo,
2694 "invite_viewer" => FileAction::InviteViewer,
2695 "invite_viewer_no_comment" => FileAction::InviteViewerNoComment,
2696 "invite_editor" => FileAction::InviteEditor,
2697 "unshare" => FileAction::Unshare,
2698 "relinquish_membership" => FileAction::RelinquishMembership,
2699 #[allow(deprecated)]
2700 "share_link" => FileAction::ShareLink,
2701 #[allow(deprecated)]
2702 "create_link" => FileAction::CreateLink,
2703 "create_view_link" => FileAction::CreateViewLink,
2704 "create_edit_link" => FileAction::CreateEditLink,
2705 _ => FileAction::Other,
2706 };
2707 crate::eat_json_fields(&mut map)?;
2708 Ok(value)
2709 }
2710 }
2711 const VARIANTS: &[&str] = &["disable_viewer_info",
2712 "edit_contents",
2713 "enable_viewer_info",
2714 "invite_viewer",
2715 "invite_viewer_no_comment",
2716 "invite_editor",
2717 "unshare",
2718 "relinquish_membership",
2719 "share_link",
2720 "create_link",
2721 "create_view_link",
2722 "create_edit_link",
2723 "other"];
2724 deserializer.deserialize_struct("FileAction", VARIANTS, EnumVisitor)
2725 }
2726}
2727
2728impl ::serde::ser::Serialize for FileAction {
2729 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2730 use serde::ser::SerializeStruct;
2732 match self {
2733 FileAction::DisableViewerInfo => {
2734 let mut s = serializer.serialize_struct("FileAction", 1)?;
2736 s.serialize_field(".tag", "disable_viewer_info")?;
2737 s.end()
2738 }
2739 FileAction::EditContents => {
2740 let mut s = serializer.serialize_struct("FileAction", 1)?;
2742 s.serialize_field(".tag", "edit_contents")?;
2743 s.end()
2744 }
2745 FileAction::EnableViewerInfo => {
2746 let mut s = serializer.serialize_struct("FileAction", 1)?;
2748 s.serialize_field(".tag", "enable_viewer_info")?;
2749 s.end()
2750 }
2751 FileAction::InviteViewer => {
2752 let mut s = serializer.serialize_struct("FileAction", 1)?;
2754 s.serialize_field(".tag", "invite_viewer")?;
2755 s.end()
2756 }
2757 FileAction::InviteViewerNoComment => {
2758 let mut s = serializer.serialize_struct("FileAction", 1)?;
2760 s.serialize_field(".tag", "invite_viewer_no_comment")?;
2761 s.end()
2762 }
2763 FileAction::InviteEditor => {
2764 let mut s = serializer.serialize_struct("FileAction", 1)?;
2766 s.serialize_field(".tag", "invite_editor")?;
2767 s.end()
2768 }
2769 FileAction::Unshare => {
2770 let mut s = serializer.serialize_struct("FileAction", 1)?;
2772 s.serialize_field(".tag", "unshare")?;
2773 s.end()
2774 }
2775 FileAction::RelinquishMembership => {
2776 let mut s = serializer.serialize_struct("FileAction", 1)?;
2778 s.serialize_field(".tag", "relinquish_membership")?;
2779 s.end()
2780 }
2781 #[allow(deprecated)]
2782 FileAction::ShareLink => {
2783 let mut s = serializer.serialize_struct("FileAction", 1)?;
2785 s.serialize_field(".tag", "share_link")?;
2786 s.end()
2787 }
2788 #[allow(deprecated)]
2789 FileAction::CreateLink => {
2790 let mut s = serializer.serialize_struct("FileAction", 1)?;
2792 s.serialize_field(".tag", "create_link")?;
2793 s.end()
2794 }
2795 FileAction::CreateViewLink => {
2796 let mut s = serializer.serialize_struct("FileAction", 1)?;
2798 s.serialize_field(".tag", "create_view_link")?;
2799 s.end()
2800 }
2801 FileAction::CreateEditLink => {
2802 let mut s = serializer.serialize_struct("FileAction", 1)?;
2804 s.serialize_field(".tag", "create_edit_link")?;
2805 s.end()
2806 }
2807 FileAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
2808 }
2809 }
2810}
2811
2812#[derive(Debug, Clone, PartialEq, Eq)]
2813#[non_exhaustive] pub enum FileErrorResult {
2815 FileNotFoundError(crate::types::files::Id),
2817 InvalidFileActionError(crate::types::files::Id),
2819 PermissionDeniedError(crate::types::files::Id),
2821 Other,
2824}
2825
2826impl<'de> ::serde::de::Deserialize<'de> for FileErrorResult {
2827 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2828 use serde::de::{self, MapAccess, Visitor};
2830 struct EnumVisitor;
2831 impl<'de> Visitor<'de> for EnumVisitor {
2832 type Value = FileErrorResult;
2833 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2834 f.write_str("a FileErrorResult structure")
2835 }
2836 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
2837 let tag: &str = match map.next_key()? {
2838 Some(".tag") => map.next_value()?,
2839 _ => return Err(de::Error::missing_field(".tag"))
2840 };
2841 let value = match tag {
2842 "file_not_found_error" => {
2843 match map.next_key()? {
2844 Some("file_not_found_error") => FileErrorResult::FileNotFoundError(map.next_value()?),
2845 None => return Err(de::Error::missing_field("file_not_found_error")),
2846 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2847 }
2848 }
2849 "invalid_file_action_error" => {
2850 match map.next_key()? {
2851 Some("invalid_file_action_error") => FileErrorResult::InvalidFileActionError(map.next_value()?),
2852 None => return Err(de::Error::missing_field("invalid_file_action_error")),
2853 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2854 }
2855 }
2856 "permission_denied_error" => {
2857 match map.next_key()? {
2858 Some("permission_denied_error") => FileErrorResult::PermissionDeniedError(map.next_value()?),
2859 None => return Err(de::Error::missing_field("permission_denied_error")),
2860 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
2861 }
2862 }
2863 _ => FileErrorResult::Other,
2864 };
2865 crate::eat_json_fields(&mut map)?;
2866 Ok(value)
2867 }
2868 }
2869 const VARIANTS: &[&str] = &["file_not_found_error",
2870 "invalid_file_action_error",
2871 "permission_denied_error",
2872 "other"];
2873 deserializer.deserialize_struct("FileErrorResult", VARIANTS, EnumVisitor)
2874 }
2875}
2876
2877impl ::serde::ser::Serialize for FileErrorResult {
2878 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2879 use serde::ser::SerializeStruct;
2881 match self {
2882 FileErrorResult::FileNotFoundError(x) => {
2883 let mut s = serializer.serialize_struct("FileErrorResult", 2)?;
2885 s.serialize_field(".tag", "file_not_found_error")?;
2886 s.serialize_field("file_not_found_error", x)?;
2887 s.end()
2888 }
2889 FileErrorResult::InvalidFileActionError(x) => {
2890 let mut s = serializer.serialize_struct("FileErrorResult", 2)?;
2892 s.serialize_field(".tag", "invalid_file_action_error")?;
2893 s.serialize_field("invalid_file_action_error", x)?;
2894 s.end()
2895 }
2896 FileErrorResult::PermissionDeniedError(x) => {
2897 let mut s = serializer.serialize_struct("FileErrorResult", 2)?;
2899 s.serialize_field(".tag", "permission_denied_error")?;
2900 s.serialize_field("permission_denied_error", x)?;
2901 s.end()
2902 }
2903 FileErrorResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
2904 }
2905 }
2906}
2907
2908#[derive(Debug, Clone, PartialEq, Eq)]
2910#[non_exhaustive] pub struct FileLinkMetadata {
2912 pub url: String,
2914 pub name: String,
2916 pub link_permissions: LinkPermissions,
2918 pub client_modified: crate::types::common::DropboxTimestamp,
2923 pub server_modified: crate::types::common::DropboxTimestamp,
2925 pub rev: Rev,
2928 pub size: u64,
2930 pub id: Option<Id>,
2932 pub expires: Option<crate::types::common::DropboxTimestamp>,
2934 pub path_lower: Option<String>,
2938 pub team_member_info: Option<TeamMemberInfo>,
2941 pub content_owner_team_info: Option<TeamInfo>,
2945}
2946
2947impl FileLinkMetadata {
2948 pub fn new(
2949 url: String,
2950 name: String,
2951 link_permissions: LinkPermissions,
2952 client_modified: crate::types::common::DropboxTimestamp,
2953 server_modified: crate::types::common::DropboxTimestamp,
2954 rev: Rev,
2955 size: u64,
2956 ) -> Self {
2957 FileLinkMetadata {
2958 url,
2959 name,
2960 link_permissions,
2961 client_modified,
2962 server_modified,
2963 rev,
2964 size,
2965 id: None,
2966 expires: None,
2967 path_lower: None,
2968 team_member_info: None,
2969 content_owner_team_info: None,
2970 }
2971 }
2972
2973 pub fn with_id(mut self, value: Id) -> Self {
2974 self.id = Some(value);
2975 self
2976 }
2977
2978 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
2979 self.expires = Some(value);
2980 self
2981 }
2982
2983 pub fn with_path_lower(mut self, value: String) -> Self {
2984 self.path_lower = Some(value);
2985 self
2986 }
2987
2988 pub fn with_team_member_info(mut self, value: TeamMemberInfo) -> Self {
2989 self.team_member_info = Some(value);
2990 self
2991 }
2992
2993 pub fn with_content_owner_team_info(mut self, value: TeamInfo) -> Self {
2994 self.content_owner_team_info = Some(value);
2995 self
2996 }
2997}
2998
2999const FILE_LINK_METADATA_FIELDS: &[&str] = &["url",
3000 "name",
3001 "link_permissions",
3002 "client_modified",
3003 "server_modified",
3004 "rev",
3005 "size",
3006 "id",
3007 "expires",
3008 "path_lower",
3009 "team_member_info",
3010 "content_owner_team_info"];
3011impl FileLinkMetadata {
3012 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3013 map: V,
3014 ) -> Result<FileLinkMetadata, V::Error> {
3015 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3016 }
3017
3018 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3019 mut map: V,
3020 optional: bool,
3021 ) -> Result<Option<FileLinkMetadata>, V::Error> {
3022 let mut field_url = None;
3023 let mut field_name = None;
3024 let mut field_link_permissions = None;
3025 let mut field_client_modified = None;
3026 let mut field_server_modified = None;
3027 let mut field_rev = None;
3028 let mut field_size = None;
3029 let mut field_id = None;
3030 let mut field_expires = None;
3031 let mut field_path_lower = None;
3032 let mut field_team_member_info = None;
3033 let mut field_content_owner_team_info = None;
3034 let mut nothing = true;
3035 while let Some(key) = map.next_key::<&str>()? {
3036 nothing = false;
3037 match key {
3038 "url" => {
3039 if field_url.is_some() {
3040 return Err(::serde::de::Error::duplicate_field("url"));
3041 }
3042 field_url = Some(map.next_value()?);
3043 }
3044 "name" => {
3045 if field_name.is_some() {
3046 return Err(::serde::de::Error::duplicate_field("name"));
3047 }
3048 field_name = Some(map.next_value()?);
3049 }
3050 "link_permissions" => {
3051 if field_link_permissions.is_some() {
3052 return Err(::serde::de::Error::duplicate_field("link_permissions"));
3053 }
3054 field_link_permissions = Some(map.next_value()?);
3055 }
3056 "client_modified" => {
3057 if field_client_modified.is_some() {
3058 return Err(::serde::de::Error::duplicate_field("client_modified"));
3059 }
3060 field_client_modified = Some(map.next_value()?);
3061 }
3062 "server_modified" => {
3063 if field_server_modified.is_some() {
3064 return Err(::serde::de::Error::duplicate_field("server_modified"));
3065 }
3066 field_server_modified = Some(map.next_value()?);
3067 }
3068 "rev" => {
3069 if field_rev.is_some() {
3070 return Err(::serde::de::Error::duplicate_field("rev"));
3071 }
3072 field_rev = Some(map.next_value()?);
3073 }
3074 "size" => {
3075 if field_size.is_some() {
3076 return Err(::serde::de::Error::duplicate_field("size"));
3077 }
3078 field_size = Some(map.next_value()?);
3079 }
3080 "id" => {
3081 if field_id.is_some() {
3082 return Err(::serde::de::Error::duplicate_field("id"));
3083 }
3084 field_id = Some(map.next_value()?);
3085 }
3086 "expires" => {
3087 if field_expires.is_some() {
3088 return Err(::serde::de::Error::duplicate_field("expires"));
3089 }
3090 field_expires = Some(map.next_value()?);
3091 }
3092 "path_lower" => {
3093 if field_path_lower.is_some() {
3094 return Err(::serde::de::Error::duplicate_field("path_lower"));
3095 }
3096 field_path_lower = Some(map.next_value()?);
3097 }
3098 "team_member_info" => {
3099 if field_team_member_info.is_some() {
3100 return Err(::serde::de::Error::duplicate_field("team_member_info"));
3101 }
3102 field_team_member_info = Some(map.next_value()?);
3103 }
3104 "content_owner_team_info" => {
3105 if field_content_owner_team_info.is_some() {
3106 return Err(::serde::de::Error::duplicate_field("content_owner_team_info"));
3107 }
3108 field_content_owner_team_info = Some(map.next_value()?);
3109 }
3110 _ => {
3111 map.next_value::<::serde_json::Value>()?;
3113 }
3114 }
3115 }
3116 if optional && nothing {
3117 return Ok(None);
3118 }
3119 let result = FileLinkMetadata {
3120 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
3121 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
3122 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
3123 client_modified: field_client_modified.ok_or_else(|| ::serde::de::Error::missing_field("client_modified"))?,
3124 server_modified: field_server_modified.ok_or_else(|| ::serde::de::Error::missing_field("server_modified"))?,
3125 rev: field_rev.ok_or_else(|| ::serde::de::Error::missing_field("rev"))?,
3126 size: field_size.ok_or_else(|| ::serde::de::Error::missing_field("size"))?,
3127 id: field_id.and_then(Option::flatten),
3128 expires: field_expires.and_then(Option::flatten),
3129 path_lower: field_path_lower.and_then(Option::flatten),
3130 team_member_info: field_team_member_info.and_then(Option::flatten),
3131 content_owner_team_info: field_content_owner_team_info.and_then(Option::flatten),
3132 };
3133 Ok(Some(result))
3134 }
3135
3136 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3137 &self,
3138 s: &mut S::SerializeStruct,
3139 ) -> Result<(), S::Error> {
3140 use serde::ser::SerializeStruct;
3141 s.serialize_field("url", &self.url)?;
3142 s.serialize_field("name", &self.name)?;
3143 s.serialize_field("link_permissions", &self.link_permissions)?;
3144 s.serialize_field("client_modified", &self.client_modified)?;
3145 s.serialize_field("server_modified", &self.server_modified)?;
3146 s.serialize_field("rev", &self.rev)?;
3147 s.serialize_field("size", &self.size)?;
3148 if let Some(val) = &self.id {
3149 s.serialize_field("id", val)?;
3150 }
3151 if let Some(val) = &self.expires {
3152 s.serialize_field("expires", val)?;
3153 }
3154 if let Some(val) = &self.path_lower {
3155 s.serialize_field("path_lower", val)?;
3156 }
3157 if let Some(val) = &self.team_member_info {
3158 s.serialize_field("team_member_info", val)?;
3159 }
3160 if let Some(val) = &self.content_owner_team_info {
3161 s.serialize_field("content_owner_team_info", val)?;
3162 }
3163 Ok(())
3164 }
3165}
3166
3167impl<'de> ::serde::de::Deserialize<'de> for FileLinkMetadata {
3168 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3169 use serde::de::{MapAccess, Visitor};
3171 struct StructVisitor;
3172 impl<'de> Visitor<'de> for StructVisitor {
3173 type Value = FileLinkMetadata;
3174 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3175 f.write_str("a FileLinkMetadata struct")
3176 }
3177 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3178 FileLinkMetadata::internal_deserialize(map)
3179 }
3180 }
3181 deserializer.deserialize_struct("FileLinkMetadata", FILE_LINK_METADATA_FIELDS, StructVisitor)
3182 }
3183}
3184
3185impl ::serde::ser::Serialize for FileLinkMetadata {
3186 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3187 use serde::ser::SerializeStruct;
3189 let mut s = serializer.serialize_struct("FileLinkMetadata", 12)?;
3190 self.internal_serialize::<S>(&mut s)?;
3191 s.end()
3192 }
3193}
3194
3195impl From<FileLinkMetadata> for SharedLinkMetadata {
3197 fn from(subtype: FileLinkMetadata) -> Self {
3198 SharedLinkMetadata::File(subtype)
3199 }
3200}
3201#[derive(Debug, Clone, PartialEq, Eq)]
3202#[non_exhaustive] pub enum FileMemberActionError {
3204 InvalidMember,
3206 NoPermission,
3208 AccessError(SharingFileAccessError),
3210 NoExplicitAccess(MemberAccessLevelResult),
3214 Other,
3217}
3218
3219impl<'de> ::serde::de::Deserialize<'de> for FileMemberActionError {
3220 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3221 use serde::de::{self, MapAccess, Visitor};
3223 struct EnumVisitor;
3224 impl<'de> Visitor<'de> for EnumVisitor {
3225 type Value = FileMemberActionError;
3226 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3227 f.write_str("a FileMemberActionError structure")
3228 }
3229 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3230 let tag: &str = match map.next_key()? {
3231 Some(".tag") => map.next_value()?,
3232 _ => return Err(de::Error::missing_field(".tag"))
3233 };
3234 let value = match tag {
3235 "invalid_member" => FileMemberActionError::InvalidMember,
3236 "no_permission" => FileMemberActionError::NoPermission,
3237 "access_error" => {
3238 match map.next_key()? {
3239 Some("access_error") => FileMemberActionError::AccessError(map.next_value()?),
3240 None => return Err(de::Error::missing_field("access_error")),
3241 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3242 }
3243 }
3244 "no_explicit_access" => FileMemberActionError::NoExplicitAccess(MemberAccessLevelResult::internal_deserialize(&mut map)?),
3245 _ => FileMemberActionError::Other,
3246 };
3247 crate::eat_json_fields(&mut map)?;
3248 Ok(value)
3249 }
3250 }
3251 const VARIANTS: &[&str] = &["invalid_member",
3252 "no_permission",
3253 "access_error",
3254 "no_explicit_access",
3255 "other"];
3256 deserializer.deserialize_struct("FileMemberActionError", VARIANTS, EnumVisitor)
3257 }
3258}
3259
3260impl ::serde::ser::Serialize for FileMemberActionError {
3261 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3262 use serde::ser::SerializeStruct;
3264 match self {
3265 FileMemberActionError::InvalidMember => {
3266 let mut s = serializer.serialize_struct("FileMemberActionError", 1)?;
3268 s.serialize_field(".tag", "invalid_member")?;
3269 s.end()
3270 }
3271 FileMemberActionError::NoPermission => {
3272 let mut s = serializer.serialize_struct("FileMemberActionError", 1)?;
3274 s.serialize_field(".tag", "no_permission")?;
3275 s.end()
3276 }
3277 FileMemberActionError::AccessError(x) => {
3278 let mut s = serializer.serialize_struct("FileMemberActionError", 2)?;
3280 s.serialize_field(".tag", "access_error")?;
3281 s.serialize_field("access_error", x)?;
3282 s.end()
3283 }
3284 FileMemberActionError::NoExplicitAccess(x) => {
3285 let mut s = serializer.serialize_struct("FileMemberActionError", 4)?;
3287 s.serialize_field(".tag", "no_explicit_access")?;
3288 x.internal_serialize::<S>(&mut s)?;
3289 s.end()
3290 }
3291 FileMemberActionError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3292 }
3293 }
3294}
3295
3296impl ::std::error::Error for FileMemberActionError {
3297 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
3298 match self {
3299 FileMemberActionError::AccessError(inner) => Some(inner),
3300 _ => None,
3301 }
3302 }
3303}
3304
3305impl ::std::fmt::Display for FileMemberActionError {
3306 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3307 match self {
3308 FileMemberActionError::InvalidMember => f.write_str("Specified member was not found."),
3309 FileMemberActionError::NoPermission => f.write_str("User does not have permission to perform this action on this member."),
3310 FileMemberActionError::AccessError(inner) => write!(f, "Specified file was invalid or user does not have access: {}", inner),
3311 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),
3312 _ => write!(f, "{:?}", *self),
3313 }
3314 }
3315}
3316
3317#[derive(Debug, Clone, PartialEq, Eq)]
3318pub enum FileMemberActionIndividualResult {
3319 Success(Option<AccessLevel>),
3324 MemberError(FileMemberActionError),
3326}
3327
3328impl<'de> ::serde::de::Deserialize<'de> for FileMemberActionIndividualResult {
3329 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3330 use serde::de::{self, MapAccess, Visitor};
3332 struct EnumVisitor;
3333 impl<'de> Visitor<'de> for EnumVisitor {
3334 type Value = FileMemberActionIndividualResult;
3335 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3336 f.write_str("a FileMemberActionIndividualResult structure")
3337 }
3338 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3339 let tag: &str = match map.next_key()? {
3340 Some(".tag") => map.next_value()?,
3341 _ => return Err(de::Error::missing_field(".tag"))
3342 };
3343 let value = match tag {
3344 "success" => {
3345 match map.next_key()? {
3346 Some("success") => FileMemberActionIndividualResult::Success(map.next_value()?),
3347 None => FileMemberActionIndividualResult::Success(None),
3348 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3349 }
3350 }
3351 "member_error" => {
3352 match map.next_key()? {
3353 Some("member_error") => FileMemberActionIndividualResult::MemberError(map.next_value()?),
3354 None => return Err(de::Error::missing_field("member_error")),
3355 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3356 }
3357 }
3358 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
3359 };
3360 crate::eat_json_fields(&mut map)?;
3361 Ok(value)
3362 }
3363 }
3364 const VARIANTS: &[&str] = &["success",
3365 "member_error"];
3366 deserializer.deserialize_struct("FileMemberActionIndividualResult", VARIANTS, EnumVisitor)
3367 }
3368}
3369
3370impl ::serde::ser::Serialize for FileMemberActionIndividualResult {
3371 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3372 use serde::ser::SerializeStruct;
3374 match self {
3375 FileMemberActionIndividualResult::Success(x) => {
3376 let mut s = serializer.serialize_struct("FileMemberActionIndividualResult", 2)?;
3378 s.serialize_field(".tag", "success")?;
3379 s.serialize_field("success", x)?;
3380 s.end()
3381 }
3382 FileMemberActionIndividualResult::MemberError(x) => {
3383 let mut s = serializer.serialize_struct("FileMemberActionIndividualResult", 2)?;
3385 s.serialize_field(".tag", "member_error")?;
3386 s.serialize_field("member_error", x)?;
3387 s.end()
3388 }
3389 }
3390 }
3391}
3392
3393#[derive(Debug, Clone, PartialEq, Eq)]
3395#[non_exhaustive] pub struct FileMemberActionResult {
3397 pub member: MemberSelector,
3399 pub result: FileMemberActionIndividualResult,
3401 pub sckey_sha1: Option<String>,
3403 pub invitation_signature: Option<Vec<String>>,
3406}
3407
3408impl FileMemberActionResult {
3409 pub fn new(member: MemberSelector, result: FileMemberActionIndividualResult) -> Self {
3410 FileMemberActionResult {
3411 member,
3412 result,
3413 sckey_sha1: None,
3414 invitation_signature: None,
3415 }
3416 }
3417
3418 pub fn with_sckey_sha1(mut self, value: String) -> Self {
3419 self.sckey_sha1 = Some(value);
3420 self
3421 }
3422
3423 pub fn with_invitation_signature(mut self, value: Vec<String>) -> Self {
3424 self.invitation_signature = Some(value);
3425 self
3426 }
3427}
3428
3429const FILE_MEMBER_ACTION_RESULT_FIELDS: &[&str] = &["member",
3430 "result",
3431 "sckey_sha1",
3432 "invitation_signature"];
3433impl FileMemberActionResult {
3434 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3435 map: V,
3436 ) -> Result<FileMemberActionResult, V::Error> {
3437 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3438 }
3439
3440 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3441 mut map: V,
3442 optional: bool,
3443 ) -> Result<Option<FileMemberActionResult>, V::Error> {
3444 let mut field_member = None;
3445 let mut field_result = None;
3446 let mut field_sckey_sha1 = None;
3447 let mut field_invitation_signature = None;
3448 let mut nothing = true;
3449 while let Some(key) = map.next_key::<&str>()? {
3450 nothing = false;
3451 match key {
3452 "member" => {
3453 if field_member.is_some() {
3454 return Err(::serde::de::Error::duplicate_field("member"));
3455 }
3456 field_member = Some(map.next_value()?);
3457 }
3458 "result" => {
3459 if field_result.is_some() {
3460 return Err(::serde::de::Error::duplicate_field("result"));
3461 }
3462 field_result = Some(map.next_value()?);
3463 }
3464 "sckey_sha1" => {
3465 if field_sckey_sha1.is_some() {
3466 return Err(::serde::de::Error::duplicate_field("sckey_sha1"));
3467 }
3468 field_sckey_sha1 = Some(map.next_value()?);
3469 }
3470 "invitation_signature" => {
3471 if field_invitation_signature.is_some() {
3472 return Err(::serde::de::Error::duplicate_field("invitation_signature"));
3473 }
3474 field_invitation_signature = Some(map.next_value()?);
3475 }
3476 _ => {
3477 map.next_value::<::serde_json::Value>()?;
3479 }
3480 }
3481 }
3482 if optional && nothing {
3483 return Ok(None);
3484 }
3485 let result = FileMemberActionResult {
3486 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
3487 result: field_result.ok_or_else(|| ::serde::de::Error::missing_field("result"))?,
3488 sckey_sha1: field_sckey_sha1.and_then(Option::flatten),
3489 invitation_signature: field_invitation_signature.and_then(Option::flatten),
3490 };
3491 Ok(Some(result))
3492 }
3493
3494 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3495 &self,
3496 s: &mut S::SerializeStruct,
3497 ) -> Result<(), S::Error> {
3498 use serde::ser::SerializeStruct;
3499 s.serialize_field("member", &self.member)?;
3500 s.serialize_field("result", &self.result)?;
3501 if let Some(val) = &self.sckey_sha1 {
3502 s.serialize_field("sckey_sha1", val)?;
3503 }
3504 if let Some(val) = &self.invitation_signature {
3505 s.serialize_field("invitation_signature", val)?;
3506 }
3507 Ok(())
3508 }
3509}
3510
3511impl<'de> ::serde::de::Deserialize<'de> for FileMemberActionResult {
3512 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3513 use serde::de::{MapAccess, Visitor};
3515 struct StructVisitor;
3516 impl<'de> Visitor<'de> for StructVisitor {
3517 type Value = FileMemberActionResult;
3518 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3519 f.write_str("a FileMemberActionResult struct")
3520 }
3521 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3522 FileMemberActionResult::internal_deserialize(map)
3523 }
3524 }
3525 deserializer.deserialize_struct("FileMemberActionResult", FILE_MEMBER_ACTION_RESULT_FIELDS, StructVisitor)
3526 }
3527}
3528
3529impl ::serde::ser::Serialize for FileMemberActionResult {
3530 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3531 use serde::ser::SerializeStruct;
3533 let mut s = serializer.serialize_struct("FileMemberActionResult", 4)?;
3534 self.internal_serialize::<S>(&mut s)?;
3535 s.end()
3536 }
3537}
3538
3539#[derive(Debug, Clone, PartialEq, Eq)]
3540#[non_exhaustive] pub enum FileMemberRemoveActionResult {
3542 Success(MemberAccessLevelResult),
3544 MemberError(FileMemberActionError),
3546 Other,
3549}
3550
3551impl<'de> ::serde::de::Deserialize<'de> for FileMemberRemoveActionResult {
3552 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3553 use serde::de::{self, MapAccess, Visitor};
3555 struct EnumVisitor;
3556 impl<'de> Visitor<'de> for EnumVisitor {
3557 type Value = FileMemberRemoveActionResult;
3558 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3559 f.write_str("a FileMemberRemoveActionResult structure")
3560 }
3561 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3562 let tag: &str = match map.next_key()? {
3563 Some(".tag") => map.next_value()?,
3564 _ => return Err(de::Error::missing_field(".tag"))
3565 };
3566 let value = match tag {
3567 "success" => FileMemberRemoveActionResult::Success(MemberAccessLevelResult::internal_deserialize(&mut map)?),
3568 "member_error" => {
3569 match map.next_key()? {
3570 Some("member_error") => FileMemberRemoveActionResult::MemberError(map.next_value()?),
3571 None => return Err(de::Error::missing_field("member_error")),
3572 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
3573 }
3574 }
3575 _ => FileMemberRemoveActionResult::Other,
3576 };
3577 crate::eat_json_fields(&mut map)?;
3578 Ok(value)
3579 }
3580 }
3581 const VARIANTS: &[&str] = &["success",
3582 "member_error",
3583 "other"];
3584 deserializer.deserialize_struct("FileMemberRemoveActionResult", VARIANTS, EnumVisitor)
3585 }
3586}
3587
3588impl ::serde::ser::Serialize for FileMemberRemoveActionResult {
3589 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3590 use serde::ser::SerializeStruct;
3592 match self {
3593 FileMemberRemoveActionResult::Success(x) => {
3594 let mut s = serializer.serialize_struct("FileMemberRemoveActionResult", 4)?;
3596 s.serialize_field(".tag", "success")?;
3597 x.internal_serialize::<S>(&mut s)?;
3598 s.end()
3599 }
3600 FileMemberRemoveActionResult::MemberError(x) => {
3601 let mut s = serializer.serialize_struct("FileMemberRemoveActionResult", 2)?;
3603 s.serialize_field(".tag", "member_error")?;
3604 s.serialize_field("member_error", x)?;
3605 s.end()
3606 }
3607 FileMemberRemoveActionResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3608 }
3609 }
3610}
3611
3612#[derive(Debug, Clone, PartialEq, Eq)]
3614#[non_exhaustive] pub struct FilePermission {
3616 pub action: FileAction,
3618 pub allow: bool,
3620 pub reason: Option<PermissionDeniedReason>,
3622}
3623
3624impl FilePermission {
3625 pub fn new(action: FileAction, allow: bool) -> Self {
3626 FilePermission {
3627 action,
3628 allow,
3629 reason: None,
3630 }
3631 }
3632
3633 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
3634 self.reason = Some(value);
3635 self
3636 }
3637}
3638
3639const FILE_PERMISSION_FIELDS: &[&str] = &["action",
3640 "allow",
3641 "reason"];
3642impl FilePermission {
3643 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
3644 map: V,
3645 ) -> Result<FilePermission, V::Error> {
3646 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
3647 }
3648
3649 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
3650 mut map: V,
3651 optional: bool,
3652 ) -> Result<Option<FilePermission>, V::Error> {
3653 let mut field_action = None;
3654 let mut field_allow = None;
3655 let mut field_reason = None;
3656 let mut nothing = true;
3657 while let Some(key) = map.next_key::<&str>()? {
3658 nothing = false;
3659 match key {
3660 "action" => {
3661 if field_action.is_some() {
3662 return Err(::serde::de::Error::duplicate_field("action"));
3663 }
3664 field_action = Some(map.next_value()?);
3665 }
3666 "allow" => {
3667 if field_allow.is_some() {
3668 return Err(::serde::de::Error::duplicate_field("allow"));
3669 }
3670 field_allow = Some(map.next_value()?);
3671 }
3672 "reason" => {
3673 if field_reason.is_some() {
3674 return Err(::serde::de::Error::duplicate_field("reason"));
3675 }
3676 field_reason = Some(map.next_value()?);
3677 }
3678 _ => {
3679 map.next_value::<::serde_json::Value>()?;
3681 }
3682 }
3683 }
3684 if optional && nothing {
3685 return Ok(None);
3686 }
3687 let result = FilePermission {
3688 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
3689 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
3690 reason: field_reason.and_then(Option::flatten),
3691 };
3692 Ok(Some(result))
3693 }
3694
3695 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
3696 &self,
3697 s: &mut S::SerializeStruct,
3698 ) -> Result<(), S::Error> {
3699 use serde::ser::SerializeStruct;
3700 s.serialize_field("action", &self.action)?;
3701 s.serialize_field("allow", &self.allow)?;
3702 if let Some(val) = &self.reason {
3703 s.serialize_field("reason", val)?;
3704 }
3705 Ok(())
3706 }
3707}
3708
3709impl<'de> ::serde::de::Deserialize<'de> for FilePermission {
3710 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3711 use serde::de::{MapAccess, Visitor};
3713 struct StructVisitor;
3714 impl<'de> Visitor<'de> for StructVisitor {
3715 type Value = FilePermission;
3716 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3717 f.write_str("a FilePermission struct")
3718 }
3719 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
3720 FilePermission::internal_deserialize(map)
3721 }
3722 }
3723 deserializer.deserialize_struct("FilePermission", FILE_PERMISSION_FIELDS, StructVisitor)
3724 }
3725}
3726
3727impl ::serde::ser::Serialize for FilePermission {
3728 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3729 use serde::ser::SerializeStruct;
3731 let mut s = serializer.serialize_struct("FilePermission", 3)?;
3732 self.internal_serialize::<S>(&mut s)?;
3733 s.end()
3734 }
3735}
3736
3737#[derive(Debug, Clone, PartialEq, Eq)]
3739#[non_exhaustive] pub enum FolderAction {
3741 ChangeOptions,
3743 DisableViewerInfo,
3745 EditContents,
3747 EnableViewerInfo,
3749 InviteEditor,
3751 InviteViewer,
3753 InviteViewerNoComment,
3755 RelinquishMembership,
3757 Unmount,
3759 Unshare,
3761 LeaveACopy,
3763 #[deprecated]
3765 ShareLink,
3766 #[deprecated]
3768 CreateLink,
3769 CreateViewLink,
3771 CreateEditLink,
3773 SetAccessInheritance,
3775 Other,
3778}
3779
3780impl<'de> ::serde::de::Deserialize<'de> for FolderAction {
3781 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3782 use serde::de::{self, MapAccess, Visitor};
3784 struct EnumVisitor;
3785 impl<'de> Visitor<'de> for EnumVisitor {
3786 type Value = FolderAction;
3787 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3788 f.write_str("a FolderAction structure")
3789 }
3790 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
3791 let tag: &str = match map.next_key()? {
3792 Some(".tag") => map.next_value()?,
3793 _ => return Err(de::Error::missing_field(".tag"))
3794 };
3795 let value = match tag {
3796 "change_options" => FolderAction::ChangeOptions,
3797 "disable_viewer_info" => FolderAction::DisableViewerInfo,
3798 "edit_contents" => FolderAction::EditContents,
3799 "enable_viewer_info" => FolderAction::EnableViewerInfo,
3800 "invite_editor" => FolderAction::InviteEditor,
3801 "invite_viewer" => FolderAction::InviteViewer,
3802 "invite_viewer_no_comment" => FolderAction::InviteViewerNoComment,
3803 "relinquish_membership" => FolderAction::RelinquishMembership,
3804 "unmount" => FolderAction::Unmount,
3805 "unshare" => FolderAction::Unshare,
3806 "leave_a_copy" => FolderAction::LeaveACopy,
3807 #[allow(deprecated)]
3808 "share_link" => FolderAction::ShareLink,
3809 #[allow(deprecated)]
3810 "create_link" => FolderAction::CreateLink,
3811 "create_view_link" => FolderAction::CreateViewLink,
3812 "create_edit_link" => FolderAction::CreateEditLink,
3813 "set_access_inheritance" => FolderAction::SetAccessInheritance,
3814 _ => FolderAction::Other,
3815 };
3816 crate::eat_json_fields(&mut map)?;
3817 Ok(value)
3818 }
3819 }
3820 const VARIANTS: &[&str] = &["change_options",
3821 "disable_viewer_info",
3822 "edit_contents",
3823 "enable_viewer_info",
3824 "invite_editor",
3825 "invite_viewer",
3826 "invite_viewer_no_comment",
3827 "relinquish_membership",
3828 "unmount",
3829 "unshare",
3830 "leave_a_copy",
3831 "share_link",
3832 "create_link",
3833 "create_view_link",
3834 "create_edit_link",
3835 "set_access_inheritance",
3836 "other"];
3837 deserializer.deserialize_struct("FolderAction", VARIANTS, EnumVisitor)
3838 }
3839}
3840
3841impl ::serde::ser::Serialize for FolderAction {
3842 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3843 use serde::ser::SerializeStruct;
3845 match self {
3846 FolderAction::ChangeOptions => {
3847 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3849 s.serialize_field(".tag", "change_options")?;
3850 s.end()
3851 }
3852 FolderAction::DisableViewerInfo => {
3853 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3855 s.serialize_field(".tag", "disable_viewer_info")?;
3856 s.end()
3857 }
3858 FolderAction::EditContents => {
3859 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3861 s.serialize_field(".tag", "edit_contents")?;
3862 s.end()
3863 }
3864 FolderAction::EnableViewerInfo => {
3865 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3867 s.serialize_field(".tag", "enable_viewer_info")?;
3868 s.end()
3869 }
3870 FolderAction::InviteEditor => {
3871 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3873 s.serialize_field(".tag", "invite_editor")?;
3874 s.end()
3875 }
3876 FolderAction::InviteViewer => {
3877 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3879 s.serialize_field(".tag", "invite_viewer")?;
3880 s.end()
3881 }
3882 FolderAction::InviteViewerNoComment => {
3883 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3885 s.serialize_field(".tag", "invite_viewer_no_comment")?;
3886 s.end()
3887 }
3888 FolderAction::RelinquishMembership => {
3889 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3891 s.serialize_field(".tag", "relinquish_membership")?;
3892 s.end()
3893 }
3894 FolderAction::Unmount => {
3895 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3897 s.serialize_field(".tag", "unmount")?;
3898 s.end()
3899 }
3900 FolderAction::Unshare => {
3901 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3903 s.serialize_field(".tag", "unshare")?;
3904 s.end()
3905 }
3906 FolderAction::LeaveACopy => {
3907 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3909 s.serialize_field(".tag", "leave_a_copy")?;
3910 s.end()
3911 }
3912 #[allow(deprecated)]
3913 FolderAction::ShareLink => {
3914 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3916 s.serialize_field(".tag", "share_link")?;
3917 s.end()
3918 }
3919 #[allow(deprecated)]
3920 FolderAction::CreateLink => {
3921 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3923 s.serialize_field(".tag", "create_link")?;
3924 s.end()
3925 }
3926 FolderAction::CreateViewLink => {
3927 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3929 s.serialize_field(".tag", "create_view_link")?;
3930 s.end()
3931 }
3932 FolderAction::CreateEditLink => {
3933 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3935 s.serialize_field(".tag", "create_edit_link")?;
3936 s.end()
3937 }
3938 FolderAction::SetAccessInheritance => {
3939 let mut s = serializer.serialize_struct("FolderAction", 1)?;
3941 s.serialize_field(".tag", "set_access_inheritance")?;
3942 s.end()
3943 }
3944 FolderAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
3945 }
3946 }
3947}
3948
3949#[derive(Debug, Clone, PartialEq, Eq)]
3951#[non_exhaustive] pub struct FolderLinkMetadata {
3953 pub url: String,
3955 pub name: String,
3957 pub link_permissions: LinkPermissions,
3959 pub id: Option<Id>,
3961 pub expires: Option<crate::types::common::DropboxTimestamp>,
3963 pub path_lower: Option<String>,
3967 pub team_member_info: Option<TeamMemberInfo>,
3970 pub content_owner_team_info: Option<TeamInfo>,
3974}
3975
3976impl FolderLinkMetadata {
3977 pub fn new(url: String, name: String, link_permissions: LinkPermissions) -> Self {
3978 FolderLinkMetadata {
3979 url,
3980 name,
3981 link_permissions,
3982 id: None,
3983 expires: None,
3984 path_lower: None,
3985 team_member_info: None,
3986 content_owner_team_info: None,
3987 }
3988 }
3989
3990 pub fn with_id(mut self, value: Id) -> Self {
3991 self.id = Some(value);
3992 self
3993 }
3994
3995 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
3996 self.expires = Some(value);
3997 self
3998 }
3999
4000 pub fn with_path_lower(mut self, value: String) -> Self {
4001 self.path_lower = Some(value);
4002 self
4003 }
4004
4005 pub fn with_team_member_info(mut self, value: TeamMemberInfo) -> Self {
4006 self.team_member_info = Some(value);
4007 self
4008 }
4009
4010 pub fn with_content_owner_team_info(mut self, value: TeamInfo) -> Self {
4011 self.content_owner_team_info = Some(value);
4012 self
4013 }
4014}
4015
4016const FOLDER_LINK_METADATA_FIELDS: &[&str] = &["url",
4017 "name",
4018 "link_permissions",
4019 "id",
4020 "expires",
4021 "path_lower",
4022 "team_member_info",
4023 "content_owner_team_info"];
4024impl FolderLinkMetadata {
4025 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4026 map: V,
4027 ) -> Result<FolderLinkMetadata, V::Error> {
4028 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4029 }
4030
4031 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4032 mut map: V,
4033 optional: bool,
4034 ) -> Result<Option<FolderLinkMetadata>, V::Error> {
4035 let mut field_url = None;
4036 let mut field_name = None;
4037 let mut field_link_permissions = None;
4038 let mut field_id = None;
4039 let mut field_expires = None;
4040 let mut field_path_lower = None;
4041 let mut field_team_member_info = None;
4042 let mut field_content_owner_team_info = None;
4043 let mut nothing = true;
4044 while let Some(key) = map.next_key::<&str>()? {
4045 nothing = false;
4046 match key {
4047 "url" => {
4048 if field_url.is_some() {
4049 return Err(::serde::de::Error::duplicate_field("url"));
4050 }
4051 field_url = Some(map.next_value()?);
4052 }
4053 "name" => {
4054 if field_name.is_some() {
4055 return Err(::serde::de::Error::duplicate_field("name"));
4056 }
4057 field_name = Some(map.next_value()?);
4058 }
4059 "link_permissions" => {
4060 if field_link_permissions.is_some() {
4061 return Err(::serde::de::Error::duplicate_field("link_permissions"));
4062 }
4063 field_link_permissions = Some(map.next_value()?);
4064 }
4065 "id" => {
4066 if field_id.is_some() {
4067 return Err(::serde::de::Error::duplicate_field("id"));
4068 }
4069 field_id = Some(map.next_value()?);
4070 }
4071 "expires" => {
4072 if field_expires.is_some() {
4073 return Err(::serde::de::Error::duplicate_field("expires"));
4074 }
4075 field_expires = Some(map.next_value()?);
4076 }
4077 "path_lower" => {
4078 if field_path_lower.is_some() {
4079 return Err(::serde::de::Error::duplicate_field("path_lower"));
4080 }
4081 field_path_lower = Some(map.next_value()?);
4082 }
4083 "team_member_info" => {
4084 if field_team_member_info.is_some() {
4085 return Err(::serde::de::Error::duplicate_field("team_member_info"));
4086 }
4087 field_team_member_info = Some(map.next_value()?);
4088 }
4089 "content_owner_team_info" => {
4090 if field_content_owner_team_info.is_some() {
4091 return Err(::serde::de::Error::duplicate_field("content_owner_team_info"));
4092 }
4093 field_content_owner_team_info = Some(map.next_value()?);
4094 }
4095 _ => {
4096 map.next_value::<::serde_json::Value>()?;
4098 }
4099 }
4100 }
4101 if optional && nothing {
4102 return Ok(None);
4103 }
4104 let result = FolderLinkMetadata {
4105 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
4106 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
4107 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
4108 id: field_id.and_then(Option::flatten),
4109 expires: field_expires.and_then(Option::flatten),
4110 path_lower: field_path_lower.and_then(Option::flatten),
4111 team_member_info: field_team_member_info.and_then(Option::flatten),
4112 content_owner_team_info: field_content_owner_team_info.and_then(Option::flatten),
4113 };
4114 Ok(Some(result))
4115 }
4116
4117 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4118 &self,
4119 s: &mut S::SerializeStruct,
4120 ) -> Result<(), S::Error> {
4121 use serde::ser::SerializeStruct;
4122 s.serialize_field("url", &self.url)?;
4123 s.serialize_field("name", &self.name)?;
4124 s.serialize_field("link_permissions", &self.link_permissions)?;
4125 if let Some(val) = &self.id {
4126 s.serialize_field("id", val)?;
4127 }
4128 if let Some(val) = &self.expires {
4129 s.serialize_field("expires", val)?;
4130 }
4131 if let Some(val) = &self.path_lower {
4132 s.serialize_field("path_lower", val)?;
4133 }
4134 if let Some(val) = &self.team_member_info {
4135 s.serialize_field("team_member_info", val)?;
4136 }
4137 if let Some(val) = &self.content_owner_team_info {
4138 s.serialize_field("content_owner_team_info", val)?;
4139 }
4140 Ok(())
4141 }
4142}
4143
4144impl<'de> ::serde::de::Deserialize<'de> for FolderLinkMetadata {
4145 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4146 use serde::de::{MapAccess, Visitor};
4148 struct StructVisitor;
4149 impl<'de> Visitor<'de> for StructVisitor {
4150 type Value = FolderLinkMetadata;
4151 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4152 f.write_str("a FolderLinkMetadata struct")
4153 }
4154 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4155 FolderLinkMetadata::internal_deserialize(map)
4156 }
4157 }
4158 deserializer.deserialize_struct("FolderLinkMetadata", FOLDER_LINK_METADATA_FIELDS, StructVisitor)
4159 }
4160}
4161
4162impl ::serde::ser::Serialize for FolderLinkMetadata {
4163 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4164 use serde::ser::SerializeStruct;
4166 let mut s = serializer.serialize_struct("FolderLinkMetadata", 8)?;
4167 self.internal_serialize::<S>(&mut s)?;
4168 s.end()
4169 }
4170}
4171
4172impl From<FolderLinkMetadata> for SharedLinkMetadata {
4174 fn from(subtype: FolderLinkMetadata) -> Self {
4175 SharedLinkMetadata::Folder(subtype)
4176 }
4177}
4178#[derive(Debug, Clone, PartialEq, Eq)]
4180#[non_exhaustive] pub struct FolderPermission {
4182 pub action: FolderAction,
4184 pub allow: bool,
4186 pub reason: Option<PermissionDeniedReason>,
4189}
4190
4191impl FolderPermission {
4192 pub fn new(action: FolderAction, allow: bool) -> Self {
4193 FolderPermission {
4194 action,
4195 allow,
4196 reason: None,
4197 }
4198 }
4199
4200 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
4201 self.reason = Some(value);
4202 self
4203 }
4204}
4205
4206const FOLDER_PERMISSION_FIELDS: &[&str] = &["action",
4207 "allow",
4208 "reason"];
4209impl FolderPermission {
4210 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4211 map: V,
4212 ) -> Result<FolderPermission, V::Error> {
4213 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4214 }
4215
4216 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4217 mut map: V,
4218 optional: bool,
4219 ) -> Result<Option<FolderPermission>, V::Error> {
4220 let mut field_action = None;
4221 let mut field_allow = None;
4222 let mut field_reason = None;
4223 let mut nothing = true;
4224 while let Some(key) = map.next_key::<&str>()? {
4225 nothing = false;
4226 match key {
4227 "action" => {
4228 if field_action.is_some() {
4229 return Err(::serde::de::Error::duplicate_field("action"));
4230 }
4231 field_action = Some(map.next_value()?);
4232 }
4233 "allow" => {
4234 if field_allow.is_some() {
4235 return Err(::serde::de::Error::duplicate_field("allow"));
4236 }
4237 field_allow = Some(map.next_value()?);
4238 }
4239 "reason" => {
4240 if field_reason.is_some() {
4241 return Err(::serde::de::Error::duplicate_field("reason"));
4242 }
4243 field_reason = Some(map.next_value()?);
4244 }
4245 _ => {
4246 map.next_value::<::serde_json::Value>()?;
4248 }
4249 }
4250 }
4251 if optional && nothing {
4252 return Ok(None);
4253 }
4254 let result = FolderPermission {
4255 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
4256 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
4257 reason: field_reason.and_then(Option::flatten),
4258 };
4259 Ok(Some(result))
4260 }
4261
4262 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4263 &self,
4264 s: &mut S::SerializeStruct,
4265 ) -> Result<(), S::Error> {
4266 use serde::ser::SerializeStruct;
4267 s.serialize_field("action", &self.action)?;
4268 s.serialize_field("allow", &self.allow)?;
4269 if let Some(val) = &self.reason {
4270 s.serialize_field("reason", val)?;
4271 }
4272 Ok(())
4273 }
4274}
4275
4276impl<'de> ::serde::de::Deserialize<'de> for FolderPermission {
4277 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4278 use serde::de::{MapAccess, Visitor};
4280 struct StructVisitor;
4281 impl<'de> Visitor<'de> for StructVisitor {
4282 type Value = FolderPermission;
4283 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4284 f.write_str("a FolderPermission struct")
4285 }
4286 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4287 FolderPermission::internal_deserialize(map)
4288 }
4289 }
4290 deserializer.deserialize_struct("FolderPermission", FOLDER_PERMISSION_FIELDS, StructVisitor)
4291 }
4292}
4293
4294impl ::serde::ser::Serialize for FolderPermission {
4295 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4296 use serde::ser::SerializeStruct;
4298 let mut s = serializer.serialize_struct("FolderPermission", 3)?;
4299 self.internal_serialize::<S>(&mut s)?;
4300 s.end()
4301 }
4302}
4303
4304#[derive(Debug, Clone, PartialEq, Eq)]
4306#[non_exhaustive] pub struct FolderPolicy {
4308 pub acl_update_policy: AclUpdatePolicy,
4310 pub shared_link_policy: SharedLinkPolicy,
4312 pub member_policy: Option<MemberPolicy>,
4316 pub resolved_member_policy: Option<MemberPolicy>,
4320 pub viewer_info_policy: Option<ViewerInfoPolicy>,
4322}
4323
4324impl FolderPolicy {
4325 pub fn new(acl_update_policy: AclUpdatePolicy, shared_link_policy: SharedLinkPolicy) -> Self {
4326 FolderPolicy {
4327 acl_update_policy,
4328 shared_link_policy,
4329 member_policy: None,
4330 resolved_member_policy: None,
4331 viewer_info_policy: None,
4332 }
4333 }
4334
4335 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
4336 self.member_policy = Some(value);
4337 self
4338 }
4339
4340 pub fn with_resolved_member_policy(mut self, value: MemberPolicy) -> Self {
4341 self.resolved_member_policy = Some(value);
4342 self
4343 }
4344
4345 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
4346 self.viewer_info_policy = Some(value);
4347 self
4348 }
4349}
4350
4351const FOLDER_POLICY_FIELDS: &[&str] = &["acl_update_policy",
4352 "shared_link_policy",
4353 "member_policy",
4354 "resolved_member_policy",
4355 "viewer_info_policy"];
4356impl FolderPolicy {
4357 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4358 map: V,
4359 ) -> Result<FolderPolicy, V::Error> {
4360 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4361 }
4362
4363 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4364 mut map: V,
4365 optional: bool,
4366 ) -> Result<Option<FolderPolicy>, V::Error> {
4367 let mut field_acl_update_policy = None;
4368 let mut field_shared_link_policy = None;
4369 let mut field_member_policy = None;
4370 let mut field_resolved_member_policy = None;
4371 let mut field_viewer_info_policy = None;
4372 let mut nothing = true;
4373 while let Some(key) = map.next_key::<&str>()? {
4374 nothing = false;
4375 match key {
4376 "acl_update_policy" => {
4377 if field_acl_update_policy.is_some() {
4378 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
4379 }
4380 field_acl_update_policy = Some(map.next_value()?);
4381 }
4382 "shared_link_policy" => {
4383 if field_shared_link_policy.is_some() {
4384 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
4385 }
4386 field_shared_link_policy = Some(map.next_value()?);
4387 }
4388 "member_policy" => {
4389 if field_member_policy.is_some() {
4390 return Err(::serde::de::Error::duplicate_field("member_policy"));
4391 }
4392 field_member_policy = Some(map.next_value()?);
4393 }
4394 "resolved_member_policy" => {
4395 if field_resolved_member_policy.is_some() {
4396 return Err(::serde::de::Error::duplicate_field("resolved_member_policy"));
4397 }
4398 field_resolved_member_policy = Some(map.next_value()?);
4399 }
4400 "viewer_info_policy" => {
4401 if field_viewer_info_policy.is_some() {
4402 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
4403 }
4404 field_viewer_info_policy = Some(map.next_value()?);
4405 }
4406 _ => {
4407 map.next_value::<::serde_json::Value>()?;
4409 }
4410 }
4411 }
4412 if optional && nothing {
4413 return Ok(None);
4414 }
4415 let result = FolderPolicy {
4416 acl_update_policy: field_acl_update_policy.ok_or_else(|| ::serde::de::Error::missing_field("acl_update_policy"))?,
4417 shared_link_policy: field_shared_link_policy.ok_or_else(|| ::serde::de::Error::missing_field("shared_link_policy"))?,
4418 member_policy: field_member_policy.and_then(Option::flatten),
4419 resolved_member_policy: field_resolved_member_policy.and_then(Option::flatten),
4420 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
4421 };
4422 Ok(Some(result))
4423 }
4424
4425 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4426 &self,
4427 s: &mut S::SerializeStruct,
4428 ) -> Result<(), S::Error> {
4429 use serde::ser::SerializeStruct;
4430 s.serialize_field("acl_update_policy", &self.acl_update_policy)?;
4431 s.serialize_field("shared_link_policy", &self.shared_link_policy)?;
4432 if let Some(val) = &self.member_policy {
4433 s.serialize_field("member_policy", val)?;
4434 }
4435 if let Some(val) = &self.resolved_member_policy {
4436 s.serialize_field("resolved_member_policy", val)?;
4437 }
4438 if let Some(val) = &self.viewer_info_policy {
4439 s.serialize_field("viewer_info_policy", val)?;
4440 }
4441 Ok(())
4442 }
4443}
4444
4445impl<'de> ::serde::de::Deserialize<'de> for FolderPolicy {
4446 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4447 use serde::de::{MapAccess, Visitor};
4449 struct StructVisitor;
4450 impl<'de> Visitor<'de> for StructVisitor {
4451 type Value = FolderPolicy;
4452 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4453 f.write_str("a FolderPolicy struct")
4454 }
4455 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4456 FolderPolicy::internal_deserialize(map)
4457 }
4458 }
4459 deserializer.deserialize_struct("FolderPolicy", FOLDER_POLICY_FIELDS, StructVisitor)
4460 }
4461}
4462
4463impl ::serde::ser::Serialize for FolderPolicy {
4464 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4465 use serde::ser::SerializeStruct;
4467 let mut s = serializer.serialize_struct("FolderPolicy", 5)?;
4468 self.internal_serialize::<S>(&mut s)?;
4469 s.end()
4470 }
4471}
4472
4473#[derive(Debug, Clone, PartialEq, Eq)]
4475#[non_exhaustive] pub struct GetFileMetadataArg {
4477 pub file: PathOrId,
4479 pub actions: Option<Vec<FileAction>>,
4483}
4484
4485impl GetFileMetadataArg {
4486 pub fn new(file: PathOrId) -> Self {
4487 GetFileMetadataArg {
4488 file,
4489 actions: None,
4490 }
4491 }
4492
4493 pub fn with_actions(mut self, value: Vec<FileAction>) -> Self {
4494 self.actions = Some(value);
4495 self
4496 }
4497}
4498
4499const GET_FILE_METADATA_ARG_FIELDS: &[&str] = &["file",
4500 "actions"];
4501impl GetFileMetadataArg {
4502 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4503 map: V,
4504 ) -> Result<GetFileMetadataArg, V::Error> {
4505 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4506 }
4507
4508 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4509 mut map: V,
4510 optional: bool,
4511 ) -> Result<Option<GetFileMetadataArg>, V::Error> {
4512 let mut field_file = None;
4513 let mut field_actions = None;
4514 let mut nothing = true;
4515 while let Some(key) = map.next_key::<&str>()? {
4516 nothing = false;
4517 match key {
4518 "file" => {
4519 if field_file.is_some() {
4520 return Err(::serde::de::Error::duplicate_field("file"));
4521 }
4522 field_file = Some(map.next_value()?);
4523 }
4524 "actions" => {
4525 if field_actions.is_some() {
4526 return Err(::serde::de::Error::duplicate_field("actions"));
4527 }
4528 field_actions = Some(map.next_value()?);
4529 }
4530 _ => {
4531 map.next_value::<::serde_json::Value>()?;
4533 }
4534 }
4535 }
4536 if optional && nothing {
4537 return Ok(None);
4538 }
4539 let result = GetFileMetadataArg {
4540 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
4541 actions: field_actions.and_then(Option::flatten),
4542 };
4543 Ok(Some(result))
4544 }
4545
4546 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4547 &self,
4548 s: &mut S::SerializeStruct,
4549 ) -> Result<(), S::Error> {
4550 use serde::ser::SerializeStruct;
4551 s.serialize_field("file", &self.file)?;
4552 if let Some(val) = &self.actions {
4553 s.serialize_field("actions", val)?;
4554 }
4555 Ok(())
4556 }
4557}
4558
4559impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataArg {
4560 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4561 use serde::de::{MapAccess, Visitor};
4563 struct StructVisitor;
4564 impl<'de> Visitor<'de> for StructVisitor {
4565 type Value = GetFileMetadataArg;
4566 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4567 f.write_str("a GetFileMetadataArg struct")
4568 }
4569 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4570 GetFileMetadataArg::internal_deserialize(map)
4571 }
4572 }
4573 deserializer.deserialize_struct("GetFileMetadataArg", GET_FILE_METADATA_ARG_FIELDS, StructVisitor)
4574 }
4575}
4576
4577impl ::serde::ser::Serialize for GetFileMetadataArg {
4578 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4579 use serde::ser::SerializeStruct;
4581 let mut s = serializer.serialize_struct("GetFileMetadataArg", 2)?;
4582 self.internal_serialize::<S>(&mut s)?;
4583 s.end()
4584 }
4585}
4586
4587#[derive(Debug, Clone, PartialEq, Eq)]
4589#[non_exhaustive] pub struct GetFileMetadataBatchArg {
4591 pub files: Vec<PathOrId>,
4593 pub actions: Option<Vec<FileAction>>,
4597}
4598
4599impl GetFileMetadataBatchArg {
4600 pub fn new(files: Vec<PathOrId>) -> Self {
4601 GetFileMetadataBatchArg {
4602 files,
4603 actions: None,
4604 }
4605 }
4606
4607 pub fn with_actions(mut self, value: Vec<FileAction>) -> Self {
4608 self.actions = Some(value);
4609 self
4610 }
4611}
4612
4613const GET_FILE_METADATA_BATCH_ARG_FIELDS: &[&str] = &["files",
4614 "actions"];
4615impl GetFileMetadataBatchArg {
4616 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4617 map: V,
4618 ) -> Result<GetFileMetadataBatchArg, V::Error> {
4619 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4620 }
4621
4622 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4623 mut map: V,
4624 optional: bool,
4625 ) -> Result<Option<GetFileMetadataBatchArg>, V::Error> {
4626 let mut field_files = None;
4627 let mut field_actions = None;
4628 let mut nothing = true;
4629 while let Some(key) = map.next_key::<&str>()? {
4630 nothing = false;
4631 match key {
4632 "files" => {
4633 if field_files.is_some() {
4634 return Err(::serde::de::Error::duplicate_field("files"));
4635 }
4636 field_files = Some(map.next_value()?);
4637 }
4638 "actions" => {
4639 if field_actions.is_some() {
4640 return Err(::serde::de::Error::duplicate_field("actions"));
4641 }
4642 field_actions = Some(map.next_value()?);
4643 }
4644 _ => {
4645 map.next_value::<::serde_json::Value>()?;
4647 }
4648 }
4649 }
4650 if optional && nothing {
4651 return Ok(None);
4652 }
4653 let result = GetFileMetadataBatchArg {
4654 files: field_files.ok_or_else(|| ::serde::de::Error::missing_field("files"))?,
4655 actions: field_actions.and_then(Option::flatten),
4656 };
4657 Ok(Some(result))
4658 }
4659
4660 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4661 &self,
4662 s: &mut S::SerializeStruct,
4663 ) -> Result<(), S::Error> {
4664 use serde::ser::SerializeStruct;
4665 s.serialize_field("files", &self.files)?;
4666 if let Some(val) = &self.actions {
4667 s.serialize_field("actions", val)?;
4668 }
4669 Ok(())
4670 }
4671}
4672
4673impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataBatchArg {
4674 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4675 use serde::de::{MapAccess, Visitor};
4677 struct StructVisitor;
4678 impl<'de> Visitor<'de> for StructVisitor {
4679 type Value = GetFileMetadataBatchArg;
4680 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4681 f.write_str("a GetFileMetadataBatchArg struct")
4682 }
4683 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4684 GetFileMetadataBatchArg::internal_deserialize(map)
4685 }
4686 }
4687 deserializer.deserialize_struct("GetFileMetadataBatchArg", GET_FILE_METADATA_BATCH_ARG_FIELDS, StructVisitor)
4688 }
4689}
4690
4691impl ::serde::ser::Serialize for GetFileMetadataBatchArg {
4692 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4693 use serde::ser::SerializeStruct;
4695 let mut s = serializer.serialize_struct("GetFileMetadataBatchArg", 2)?;
4696 self.internal_serialize::<S>(&mut s)?;
4697 s.end()
4698 }
4699}
4700
4701#[derive(Debug, Clone, PartialEq, Eq)]
4703#[non_exhaustive] pub struct GetFileMetadataBatchResult {
4705 pub file: PathOrId,
4708 pub result: GetFileMetadataIndividualResult,
4710}
4711
4712impl GetFileMetadataBatchResult {
4713 pub fn new(file: PathOrId, result: GetFileMetadataIndividualResult) -> Self {
4714 GetFileMetadataBatchResult {
4715 file,
4716 result,
4717 }
4718 }
4719}
4720
4721const GET_FILE_METADATA_BATCH_RESULT_FIELDS: &[&str] = &["file",
4722 "result"];
4723impl GetFileMetadataBatchResult {
4724 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
4725 map: V,
4726 ) -> Result<GetFileMetadataBatchResult, V::Error> {
4727 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
4728 }
4729
4730 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
4731 mut map: V,
4732 optional: bool,
4733 ) -> Result<Option<GetFileMetadataBatchResult>, V::Error> {
4734 let mut field_file = None;
4735 let mut field_result = None;
4736 let mut nothing = true;
4737 while let Some(key) = map.next_key::<&str>()? {
4738 nothing = false;
4739 match key {
4740 "file" => {
4741 if field_file.is_some() {
4742 return Err(::serde::de::Error::duplicate_field("file"));
4743 }
4744 field_file = Some(map.next_value()?);
4745 }
4746 "result" => {
4747 if field_result.is_some() {
4748 return Err(::serde::de::Error::duplicate_field("result"));
4749 }
4750 field_result = Some(map.next_value()?);
4751 }
4752 _ => {
4753 map.next_value::<::serde_json::Value>()?;
4755 }
4756 }
4757 }
4758 if optional && nothing {
4759 return Ok(None);
4760 }
4761 let result = GetFileMetadataBatchResult {
4762 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
4763 result: field_result.ok_or_else(|| ::serde::de::Error::missing_field("result"))?,
4764 };
4765 Ok(Some(result))
4766 }
4767
4768 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
4769 &self,
4770 s: &mut S::SerializeStruct,
4771 ) -> Result<(), S::Error> {
4772 use serde::ser::SerializeStruct;
4773 s.serialize_field("file", &self.file)?;
4774 s.serialize_field("result", &self.result)?;
4775 Ok(())
4776 }
4777}
4778
4779impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataBatchResult {
4780 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4781 use serde::de::{MapAccess, Visitor};
4783 struct StructVisitor;
4784 impl<'de> Visitor<'de> for StructVisitor {
4785 type Value = GetFileMetadataBatchResult;
4786 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4787 f.write_str("a GetFileMetadataBatchResult struct")
4788 }
4789 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
4790 GetFileMetadataBatchResult::internal_deserialize(map)
4791 }
4792 }
4793 deserializer.deserialize_struct("GetFileMetadataBatchResult", GET_FILE_METADATA_BATCH_RESULT_FIELDS, StructVisitor)
4794 }
4795}
4796
4797impl ::serde::ser::Serialize for GetFileMetadataBatchResult {
4798 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4799 use serde::ser::SerializeStruct;
4801 let mut s = serializer.serialize_struct("GetFileMetadataBatchResult", 2)?;
4802 self.internal_serialize::<S>(&mut s)?;
4803 s.end()
4804 }
4805}
4806
4807#[derive(Debug, Clone, PartialEq, Eq)]
4809#[non_exhaustive] pub enum GetFileMetadataError {
4811 UserError(SharingUserError),
4812 AccessError(SharingFileAccessError),
4813 Other,
4816}
4817
4818impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataError {
4819 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4820 use serde::de::{self, MapAccess, Visitor};
4822 struct EnumVisitor;
4823 impl<'de> Visitor<'de> for EnumVisitor {
4824 type Value = GetFileMetadataError;
4825 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4826 f.write_str("a GetFileMetadataError structure")
4827 }
4828 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4829 let tag: &str = match map.next_key()? {
4830 Some(".tag") => map.next_value()?,
4831 _ => return Err(de::Error::missing_field(".tag"))
4832 };
4833 let value = match tag {
4834 "user_error" => {
4835 match map.next_key()? {
4836 Some("user_error") => GetFileMetadataError::UserError(map.next_value()?),
4837 None => return Err(de::Error::missing_field("user_error")),
4838 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
4839 }
4840 }
4841 "access_error" => {
4842 match map.next_key()? {
4843 Some("access_error") => GetFileMetadataError::AccessError(map.next_value()?),
4844 None => return Err(de::Error::missing_field("access_error")),
4845 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
4846 }
4847 }
4848 _ => GetFileMetadataError::Other,
4849 };
4850 crate::eat_json_fields(&mut map)?;
4851 Ok(value)
4852 }
4853 }
4854 const VARIANTS: &[&str] = &["user_error",
4855 "access_error",
4856 "other"];
4857 deserializer.deserialize_struct("GetFileMetadataError", VARIANTS, EnumVisitor)
4858 }
4859}
4860
4861impl ::serde::ser::Serialize for GetFileMetadataError {
4862 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4863 use serde::ser::SerializeStruct;
4865 match self {
4866 GetFileMetadataError::UserError(x) => {
4867 let mut s = serializer.serialize_struct("GetFileMetadataError", 2)?;
4869 s.serialize_field(".tag", "user_error")?;
4870 s.serialize_field("user_error", x)?;
4871 s.end()
4872 }
4873 GetFileMetadataError::AccessError(x) => {
4874 let mut s = serializer.serialize_struct("GetFileMetadataError", 2)?;
4876 s.serialize_field(".tag", "access_error")?;
4877 s.serialize_field("access_error", x)?;
4878 s.end()
4879 }
4880 GetFileMetadataError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
4881 }
4882 }
4883}
4884
4885impl ::std::error::Error for GetFileMetadataError {
4886 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
4887 match self {
4888 GetFileMetadataError::UserError(inner) => Some(inner),
4889 GetFileMetadataError::AccessError(inner) => Some(inner),
4890 _ => None,
4891 }
4892 }
4893}
4894
4895impl ::std::fmt::Display for GetFileMetadataError {
4896 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4897 match self {
4898 GetFileMetadataError::UserError(inner) => write!(f, "GetFileMetadataError: {}", inner),
4899 GetFileMetadataError::AccessError(inner) => write!(f, "GetFileMetadataError: {}", inner),
4900 _ => write!(f, "{:?}", *self),
4901 }
4902 }
4903}
4904
4905#[derive(Debug, Clone, PartialEq, Eq)]
4906#[non_exhaustive] pub enum GetFileMetadataIndividualResult {
4908 Metadata(SharedFileMetadata),
4910 AccessError(SharingFileAccessError),
4912 Other,
4915}
4916
4917impl<'de> ::serde::de::Deserialize<'de> for GetFileMetadataIndividualResult {
4918 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4919 use serde::de::{self, MapAccess, Visitor};
4921 struct EnumVisitor;
4922 impl<'de> Visitor<'de> for EnumVisitor {
4923 type Value = GetFileMetadataIndividualResult;
4924 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4925 f.write_str("a GetFileMetadataIndividualResult structure")
4926 }
4927 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
4928 let tag: &str = match map.next_key()? {
4929 Some(".tag") => map.next_value()?,
4930 _ => return Err(de::Error::missing_field(".tag"))
4931 };
4932 let value = match tag {
4933 "metadata" => GetFileMetadataIndividualResult::Metadata(SharedFileMetadata::internal_deserialize(&mut map)?),
4934 "access_error" => {
4935 match map.next_key()? {
4936 Some("access_error") => GetFileMetadataIndividualResult::AccessError(map.next_value()?),
4937 None => return Err(de::Error::missing_field("access_error")),
4938 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
4939 }
4940 }
4941 _ => GetFileMetadataIndividualResult::Other,
4942 };
4943 crate::eat_json_fields(&mut map)?;
4944 Ok(value)
4945 }
4946 }
4947 const VARIANTS: &[&str] = &["metadata",
4948 "access_error",
4949 "other"];
4950 deserializer.deserialize_struct("GetFileMetadataIndividualResult", VARIANTS, EnumVisitor)
4951 }
4952}
4953
4954impl ::serde::ser::Serialize for GetFileMetadataIndividualResult {
4955 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4956 use serde::ser::SerializeStruct;
4958 match self {
4959 GetFileMetadataIndividualResult::Metadata(x) => {
4960 let mut s = serializer.serialize_struct("GetFileMetadataIndividualResult", 15)?;
4962 s.serialize_field(".tag", "metadata")?;
4963 x.internal_serialize::<S>(&mut s)?;
4964 s.end()
4965 }
4966 GetFileMetadataIndividualResult::AccessError(x) => {
4967 let mut s = serializer.serialize_struct("GetFileMetadataIndividualResult", 2)?;
4969 s.serialize_field(".tag", "access_error")?;
4970 s.serialize_field("access_error", x)?;
4971 s.end()
4972 }
4973 GetFileMetadataIndividualResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
4974 }
4975 }
4976}
4977
4978#[derive(Debug, Clone, PartialEq, Eq)]
4979#[non_exhaustive] pub struct GetMetadataArgs {
4981 pub shared_folder_id: crate::types::common::SharedFolderId,
4983 pub actions: Option<Vec<FolderAction>>,
4987}
4988
4989impl GetMetadataArgs {
4990 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
4991 GetMetadataArgs {
4992 shared_folder_id,
4993 actions: None,
4994 }
4995 }
4996
4997 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
4998 self.actions = Some(value);
4999 self
5000 }
5001}
5002
5003const GET_METADATA_ARGS_FIELDS: &[&str] = &["shared_folder_id",
5004 "actions"];
5005impl GetMetadataArgs {
5006 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5007 map: V,
5008 ) -> Result<GetMetadataArgs, V::Error> {
5009 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5010 }
5011
5012 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5013 mut map: V,
5014 optional: bool,
5015 ) -> Result<Option<GetMetadataArgs>, V::Error> {
5016 let mut field_shared_folder_id = None;
5017 let mut field_actions = None;
5018 let mut nothing = true;
5019 while let Some(key) = map.next_key::<&str>()? {
5020 nothing = false;
5021 match key {
5022 "shared_folder_id" => {
5023 if field_shared_folder_id.is_some() {
5024 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
5025 }
5026 field_shared_folder_id = Some(map.next_value()?);
5027 }
5028 "actions" => {
5029 if field_actions.is_some() {
5030 return Err(::serde::de::Error::duplicate_field("actions"));
5031 }
5032 field_actions = Some(map.next_value()?);
5033 }
5034 _ => {
5035 map.next_value::<::serde_json::Value>()?;
5037 }
5038 }
5039 }
5040 if optional && nothing {
5041 return Ok(None);
5042 }
5043 let result = GetMetadataArgs {
5044 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
5045 actions: field_actions.and_then(Option::flatten),
5046 };
5047 Ok(Some(result))
5048 }
5049
5050 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5051 &self,
5052 s: &mut S::SerializeStruct,
5053 ) -> Result<(), S::Error> {
5054 use serde::ser::SerializeStruct;
5055 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
5056 if let Some(val) = &self.actions {
5057 s.serialize_field("actions", val)?;
5058 }
5059 Ok(())
5060 }
5061}
5062
5063impl<'de> ::serde::de::Deserialize<'de> for GetMetadataArgs {
5064 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5065 use serde::de::{MapAccess, Visitor};
5067 struct StructVisitor;
5068 impl<'de> Visitor<'de> for StructVisitor {
5069 type Value = GetMetadataArgs;
5070 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5071 f.write_str("a GetMetadataArgs struct")
5072 }
5073 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5074 GetMetadataArgs::internal_deserialize(map)
5075 }
5076 }
5077 deserializer.deserialize_struct("GetMetadataArgs", GET_METADATA_ARGS_FIELDS, StructVisitor)
5078 }
5079}
5080
5081impl ::serde::ser::Serialize for GetMetadataArgs {
5082 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5083 use serde::ser::SerializeStruct;
5085 let mut s = serializer.serialize_struct("GetMetadataArgs", 2)?;
5086 self.internal_serialize::<S>(&mut s)?;
5087 s.end()
5088 }
5089}
5090
5091#[derive(Debug, Clone, PartialEq, Eq)]
5092#[non_exhaustive] pub enum GetSharedLinkFileError {
5094 SharedLinkNotFound,
5096 SharedLinkAccessDenied,
5098 UnsupportedLinkType,
5100 UnsupportedParameterField,
5102 SharedLinkIsDirectory,
5104 Other,
5107}
5108
5109impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinkFileError {
5110 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5111 use serde::de::{self, MapAccess, Visitor};
5113 struct EnumVisitor;
5114 impl<'de> Visitor<'de> for EnumVisitor {
5115 type Value = GetSharedLinkFileError;
5116 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5117 f.write_str("a GetSharedLinkFileError structure")
5118 }
5119 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
5120 let tag: &str = match map.next_key()? {
5121 Some(".tag") => map.next_value()?,
5122 _ => return Err(de::Error::missing_field(".tag"))
5123 };
5124 let value = match tag {
5125 "shared_link_not_found" => GetSharedLinkFileError::SharedLinkNotFound,
5126 "shared_link_access_denied" => GetSharedLinkFileError::SharedLinkAccessDenied,
5127 "unsupported_link_type" => GetSharedLinkFileError::UnsupportedLinkType,
5128 "unsupported_parameter_field" => GetSharedLinkFileError::UnsupportedParameterField,
5129 "shared_link_is_directory" => GetSharedLinkFileError::SharedLinkIsDirectory,
5130 _ => GetSharedLinkFileError::Other,
5131 };
5132 crate::eat_json_fields(&mut map)?;
5133 Ok(value)
5134 }
5135 }
5136 const VARIANTS: &[&str] = &["shared_link_not_found",
5137 "shared_link_access_denied",
5138 "unsupported_link_type",
5139 "unsupported_parameter_field",
5140 "other",
5141 "shared_link_is_directory"];
5142 deserializer.deserialize_struct("GetSharedLinkFileError", VARIANTS, EnumVisitor)
5143 }
5144}
5145
5146impl ::serde::ser::Serialize for GetSharedLinkFileError {
5147 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5148 use serde::ser::SerializeStruct;
5150 match self {
5151 GetSharedLinkFileError::SharedLinkNotFound => {
5152 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
5154 s.serialize_field(".tag", "shared_link_not_found")?;
5155 s.end()
5156 }
5157 GetSharedLinkFileError::SharedLinkAccessDenied => {
5158 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
5160 s.serialize_field(".tag", "shared_link_access_denied")?;
5161 s.end()
5162 }
5163 GetSharedLinkFileError::UnsupportedLinkType => {
5164 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
5166 s.serialize_field(".tag", "unsupported_link_type")?;
5167 s.end()
5168 }
5169 GetSharedLinkFileError::UnsupportedParameterField => {
5170 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
5172 s.serialize_field(".tag", "unsupported_parameter_field")?;
5173 s.end()
5174 }
5175 GetSharedLinkFileError::SharedLinkIsDirectory => {
5176 let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?;
5178 s.serialize_field(".tag", "shared_link_is_directory")?;
5179 s.end()
5180 }
5181 GetSharedLinkFileError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
5182 }
5183 }
5184}
5185
5186impl ::std::error::Error for GetSharedLinkFileError {
5187}
5188
5189impl ::std::fmt::Display for GetSharedLinkFileError {
5190 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5191 match self {
5192 GetSharedLinkFileError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
5193 GetSharedLinkFileError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
5194 GetSharedLinkFileError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."),
5195 GetSharedLinkFileError::SharedLinkIsDirectory => f.write_str("Directories cannot be retrieved by this endpoint."),
5196 _ => write!(f, "{:?}", *self),
5197 }
5198 }
5199}
5200
5201impl From<SharedLinkError> for GetSharedLinkFileError {
5203 fn from(parent: SharedLinkError) -> Self {
5204 match parent {
5205 SharedLinkError::SharedLinkNotFound => GetSharedLinkFileError::SharedLinkNotFound,
5206 SharedLinkError::SharedLinkAccessDenied => GetSharedLinkFileError::SharedLinkAccessDenied,
5207 SharedLinkError::UnsupportedLinkType => GetSharedLinkFileError::UnsupportedLinkType,
5208 SharedLinkError::UnsupportedParameterField => GetSharedLinkFileError::UnsupportedParameterField,
5209 SharedLinkError::Other => GetSharedLinkFileError::Other,
5210 }
5211 }
5212}
5213#[derive(Debug, Clone, PartialEq, Eq)]
5214#[non_exhaustive] pub struct GetSharedLinkMetadataArg {
5216 pub url: String,
5218 pub path: Option<Path>,
5221 pub link_password: Option<String>,
5223}
5224
5225impl GetSharedLinkMetadataArg {
5226 pub fn new(url: String) -> Self {
5227 GetSharedLinkMetadataArg {
5228 url,
5229 path: None,
5230 link_password: None,
5231 }
5232 }
5233
5234 pub fn with_path(mut self, value: Path) -> Self {
5235 self.path = Some(value);
5236 self
5237 }
5238
5239 pub fn with_link_password(mut self, value: String) -> Self {
5240 self.link_password = Some(value);
5241 self
5242 }
5243}
5244
5245const GET_SHARED_LINK_METADATA_ARG_FIELDS: &[&str] = &["url",
5246 "path",
5247 "link_password"];
5248impl GetSharedLinkMetadataArg {
5249 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5250 map: V,
5251 ) -> Result<GetSharedLinkMetadataArg, V::Error> {
5252 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5253 }
5254
5255 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5256 mut map: V,
5257 optional: bool,
5258 ) -> Result<Option<GetSharedLinkMetadataArg>, V::Error> {
5259 let mut field_url = None;
5260 let mut field_path = None;
5261 let mut field_link_password = None;
5262 let mut nothing = true;
5263 while let Some(key) = map.next_key::<&str>()? {
5264 nothing = false;
5265 match key {
5266 "url" => {
5267 if field_url.is_some() {
5268 return Err(::serde::de::Error::duplicate_field("url"));
5269 }
5270 field_url = Some(map.next_value()?);
5271 }
5272 "path" => {
5273 if field_path.is_some() {
5274 return Err(::serde::de::Error::duplicate_field("path"));
5275 }
5276 field_path = Some(map.next_value()?);
5277 }
5278 "link_password" => {
5279 if field_link_password.is_some() {
5280 return Err(::serde::de::Error::duplicate_field("link_password"));
5281 }
5282 field_link_password = Some(map.next_value()?);
5283 }
5284 _ => {
5285 map.next_value::<::serde_json::Value>()?;
5287 }
5288 }
5289 }
5290 if optional && nothing {
5291 return Ok(None);
5292 }
5293 let result = GetSharedLinkMetadataArg {
5294 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
5295 path: field_path.and_then(Option::flatten),
5296 link_password: field_link_password.and_then(Option::flatten),
5297 };
5298 Ok(Some(result))
5299 }
5300
5301 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5302 &self,
5303 s: &mut S::SerializeStruct,
5304 ) -> Result<(), S::Error> {
5305 use serde::ser::SerializeStruct;
5306 s.serialize_field("url", &self.url)?;
5307 if let Some(val) = &self.path {
5308 s.serialize_field("path", val)?;
5309 }
5310 if let Some(val) = &self.link_password {
5311 s.serialize_field("link_password", val)?;
5312 }
5313 Ok(())
5314 }
5315}
5316
5317impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinkMetadataArg {
5318 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5319 use serde::de::{MapAccess, Visitor};
5321 struct StructVisitor;
5322 impl<'de> Visitor<'de> for StructVisitor {
5323 type Value = GetSharedLinkMetadataArg;
5324 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5325 f.write_str("a GetSharedLinkMetadataArg struct")
5326 }
5327 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5328 GetSharedLinkMetadataArg::internal_deserialize(map)
5329 }
5330 }
5331 deserializer.deserialize_struct("GetSharedLinkMetadataArg", GET_SHARED_LINK_METADATA_ARG_FIELDS, StructVisitor)
5332 }
5333}
5334
5335impl ::serde::ser::Serialize for GetSharedLinkMetadataArg {
5336 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5337 use serde::ser::SerializeStruct;
5339 let mut s = serializer.serialize_struct("GetSharedLinkMetadataArg", 3)?;
5340 self.internal_serialize::<S>(&mut s)?;
5341 s.end()
5342 }
5343}
5344
5345#[derive(Debug, Clone, PartialEq, Eq, Default)]
5346#[non_exhaustive] pub struct GetSharedLinksArg {
5348 pub path: Option<String>,
5350}
5351
5352impl GetSharedLinksArg {
5353 pub fn with_path(mut self, value: String) -> Self {
5354 self.path = Some(value);
5355 self
5356 }
5357}
5358
5359const GET_SHARED_LINKS_ARG_FIELDS: &[&str] = &["path"];
5360impl GetSharedLinksArg {
5361 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5363 mut map: V,
5364 ) -> Result<GetSharedLinksArg, V::Error> {
5365 let mut field_path = None;
5366 while let Some(key) = map.next_key::<&str>()? {
5367 match key {
5368 "path" => {
5369 if field_path.is_some() {
5370 return Err(::serde::de::Error::duplicate_field("path"));
5371 }
5372 field_path = Some(map.next_value()?);
5373 }
5374 _ => {
5375 map.next_value::<::serde_json::Value>()?;
5377 }
5378 }
5379 }
5380 let result = GetSharedLinksArg {
5381 path: field_path.and_then(Option::flatten),
5382 };
5383 Ok(result)
5384 }
5385
5386 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5387 &self,
5388 s: &mut S::SerializeStruct,
5389 ) -> Result<(), S::Error> {
5390 use serde::ser::SerializeStruct;
5391 if let Some(val) = &self.path {
5392 s.serialize_field("path", val)?;
5393 }
5394 Ok(())
5395 }
5396}
5397
5398impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinksArg {
5399 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5400 use serde::de::{MapAccess, Visitor};
5402 struct StructVisitor;
5403 impl<'de> Visitor<'de> for StructVisitor {
5404 type Value = GetSharedLinksArg;
5405 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5406 f.write_str("a GetSharedLinksArg struct")
5407 }
5408 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5409 GetSharedLinksArg::internal_deserialize(map)
5410 }
5411 }
5412 deserializer.deserialize_struct("GetSharedLinksArg", GET_SHARED_LINKS_ARG_FIELDS, StructVisitor)
5413 }
5414}
5415
5416impl ::serde::ser::Serialize for GetSharedLinksArg {
5417 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5418 use serde::ser::SerializeStruct;
5420 let mut s = serializer.serialize_struct("GetSharedLinksArg", 1)?;
5421 self.internal_serialize::<S>(&mut s)?;
5422 s.end()
5423 }
5424}
5425
5426#[derive(Debug, Clone, PartialEq, Eq)]
5427#[non_exhaustive] pub enum GetSharedLinksError {
5429 Path(crate::types::files::MalformedPathError),
5430 Other,
5433}
5434
5435impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinksError {
5436 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5437 use serde::de::{self, MapAccess, Visitor};
5439 struct EnumVisitor;
5440 impl<'de> Visitor<'de> for EnumVisitor {
5441 type Value = GetSharedLinksError;
5442 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5443 f.write_str("a GetSharedLinksError structure")
5444 }
5445 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
5446 let tag: &str = match map.next_key()? {
5447 Some(".tag") => map.next_value()?,
5448 _ => return Err(de::Error::missing_field(".tag"))
5449 };
5450 let value = match tag {
5451 "path" => {
5452 match map.next_key()? {
5453 Some("path") => GetSharedLinksError::Path(map.next_value()?),
5454 None => GetSharedLinksError::Path(None),
5455 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
5456 }
5457 }
5458 _ => GetSharedLinksError::Other,
5459 };
5460 crate::eat_json_fields(&mut map)?;
5461 Ok(value)
5462 }
5463 }
5464 const VARIANTS: &[&str] = &["path",
5465 "other"];
5466 deserializer.deserialize_struct("GetSharedLinksError", VARIANTS, EnumVisitor)
5467 }
5468}
5469
5470impl ::serde::ser::Serialize for GetSharedLinksError {
5471 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5472 use serde::ser::SerializeStruct;
5474 match self {
5475 GetSharedLinksError::Path(x) => {
5476 let n = if x.is_some() { 2 } else { 1 };
5478 let mut s = serializer.serialize_struct("GetSharedLinksError", n)?;
5479 s.serialize_field(".tag", "path")?;
5480 if let Some(x) = x {
5481 s.serialize_field("path", &x)?;
5482 }
5483 s.end()
5484 }
5485 GetSharedLinksError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
5486 }
5487 }
5488}
5489
5490impl ::std::error::Error for GetSharedLinksError {
5491}
5492
5493impl ::std::fmt::Display for GetSharedLinksError {
5494 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5495 match self {
5496 GetSharedLinksError::Path(inner) => write!(f, "path: {:?}", inner),
5497 _ => write!(f, "{:?}", *self),
5498 }
5499 }
5500}
5501
5502#[derive(Debug, Clone, PartialEq, Eq)]
5503#[non_exhaustive] pub struct GetSharedLinksResult {
5505 pub links: Vec<LinkMetadata>,
5507}
5508
5509impl GetSharedLinksResult {
5510 pub fn new(links: Vec<LinkMetadata>) -> Self {
5511 GetSharedLinksResult {
5512 links,
5513 }
5514 }
5515}
5516
5517const GET_SHARED_LINKS_RESULT_FIELDS: &[&str] = &["links"];
5518impl GetSharedLinksResult {
5519 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5520 map: V,
5521 ) -> Result<GetSharedLinksResult, V::Error> {
5522 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5523 }
5524
5525 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5526 mut map: V,
5527 optional: bool,
5528 ) -> Result<Option<GetSharedLinksResult>, V::Error> {
5529 let mut field_links = None;
5530 let mut nothing = true;
5531 while let Some(key) = map.next_key::<&str>()? {
5532 nothing = false;
5533 match key {
5534 "links" => {
5535 if field_links.is_some() {
5536 return Err(::serde::de::Error::duplicate_field("links"));
5537 }
5538 field_links = Some(map.next_value()?);
5539 }
5540 _ => {
5541 map.next_value::<::serde_json::Value>()?;
5543 }
5544 }
5545 }
5546 if optional && nothing {
5547 return Ok(None);
5548 }
5549 let result = GetSharedLinksResult {
5550 links: field_links.ok_or_else(|| ::serde::de::Error::missing_field("links"))?,
5551 };
5552 Ok(Some(result))
5553 }
5554
5555 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5556 &self,
5557 s: &mut S::SerializeStruct,
5558 ) -> Result<(), S::Error> {
5559 use serde::ser::SerializeStruct;
5560 s.serialize_field("links", &self.links)?;
5561 Ok(())
5562 }
5563}
5564
5565impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinksResult {
5566 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5567 use serde::de::{MapAccess, Visitor};
5569 struct StructVisitor;
5570 impl<'de> Visitor<'de> for StructVisitor {
5571 type Value = GetSharedLinksResult;
5572 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5573 f.write_str("a GetSharedLinksResult struct")
5574 }
5575 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5576 GetSharedLinksResult::internal_deserialize(map)
5577 }
5578 }
5579 deserializer.deserialize_struct("GetSharedLinksResult", GET_SHARED_LINKS_RESULT_FIELDS, StructVisitor)
5580 }
5581}
5582
5583impl ::serde::ser::Serialize for GetSharedLinksResult {
5584 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5585 use serde::ser::SerializeStruct;
5587 let mut s = serializer.serialize_struct("GetSharedLinksResult", 1)?;
5588 self.internal_serialize::<S>(&mut s)?;
5589 s.end()
5590 }
5591}
5592
5593#[derive(Debug, Clone, PartialEq, Eq)]
5596#[non_exhaustive] pub struct GroupInfo {
5598 pub group_name: String,
5599 pub group_id: crate::types::team_common::GroupId,
5600 pub group_management_type: crate::types::team_common::GroupManagementType,
5602 #[deprecated]
5604 pub group_type: crate::types::team_common::GroupType,
5605 pub is_member: bool,
5607 pub is_owner: bool,
5609 pub same_team: bool,
5611 pub group_external_id: Option<crate::types::team_common::GroupExternalId>,
5613 pub member_count: Option<u32>,
5615}
5616
5617impl GroupInfo {
5618 pub fn new(
5619 group_name: String,
5620 group_id: crate::types::team_common::GroupId,
5621 group_management_type: crate::types::team_common::GroupManagementType,
5622 group_type: crate::types::team_common::GroupType,
5623 is_member: bool,
5624 is_owner: bool,
5625 same_team: bool,
5626 ) -> Self {
5627 GroupInfo {
5628 group_name,
5629 group_id,
5630 group_management_type,
5631 #[allow(deprecated)] group_type,
5632 is_member,
5633 is_owner,
5634 same_team,
5635 group_external_id: None,
5636 member_count: None,
5637 }
5638 }
5639
5640 pub fn with_group_external_id(
5641 mut self,
5642 value: crate::types::team_common::GroupExternalId,
5643 ) -> Self {
5644 self.group_external_id = Some(value);
5645 self
5646 }
5647
5648 pub fn with_member_count(mut self, value: u32) -> Self {
5649 self.member_count = Some(value);
5650 self
5651 }
5652}
5653
5654const GROUP_INFO_FIELDS: &[&str] = &["group_name",
5655 "group_id",
5656 "group_management_type",
5657 "group_type",
5658 "is_member",
5659 "is_owner",
5660 "same_team",
5661 "group_external_id",
5662 "member_count"];
5663impl GroupInfo {
5664 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5665 map: V,
5666 ) -> Result<GroupInfo, V::Error> {
5667 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5668 }
5669
5670 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5671 mut map: V,
5672 optional: bool,
5673 ) -> Result<Option<GroupInfo>, V::Error> {
5674 let mut field_group_name = None;
5675 let mut field_group_id = None;
5676 let mut field_group_management_type = None;
5677 let mut field_group_type = None;
5678 let mut field_is_member = None;
5679 let mut field_is_owner = None;
5680 let mut field_same_team = None;
5681 let mut field_group_external_id = None;
5682 let mut field_member_count = None;
5683 let mut nothing = true;
5684 while let Some(key) = map.next_key::<&str>()? {
5685 nothing = false;
5686 match key {
5687 "group_name" => {
5688 if field_group_name.is_some() {
5689 return Err(::serde::de::Error::duplicate_field("group_name"));
5690 }
5691 field_group_name = Some(map.next_value()?);
5692 }
5693 "group_id" => {
5694 if field_group_id.is_some() {
5695 return Err(::serde::de::Error::duplicate_field("group_id"));
5696 }
5697 field_group_id = Some(map.next_value()?);
5698 }
5699 "group_management_type" => {
5700 if field_group_management_type.is_some() {
5701 return Err(::serde::de::Error::duplicate_field("group_management_type"));
5702 }
5703 field_group_management_type = Some(map.next_value()?);
5704 }
5705 "group_type" => {
5706 if field_group_type.is_some() {
5707 return Err(::serde::de::Error::duplicate_field("group_type"));
5708 }
5709 field_group_type = Some(map.next_value()?);
5710 }
5711 "is_member" => {
5712 if field_is_member.is_some() {
5713 return Err(::serde::de::Error::duplicate_field("is_member"));
5714 }
5715 field_is_member = Some(map.next_value()?);
5716 }
5717 "is_owner" => {
5718 if field_is_owner.is_some() {
5719 return Err(::serde::de::Error::duplicate_field("is_owner"));
5720 }
5721 field_is_owner = Some(map.next_value()?);
5722 }
5723 "same_team" => {
5724 if field_same_team.is_some() {
5725 return Err(::serde::de::Error::duplicate_field("same_team"));
5726 }
5727 field_same_team = Some(map.next_value()?);
5728 }
5729 "group_external_id" => {
5730 if field_group_external_id.is_some() {
5731 return Err(::serde::de::Error::duplicate_field("group_external_id"));
5732 }
5733 field_group_external_id = Some(map.next_value()?);
5734 }
5735 "member_count" => {
5736 if field_member_count.is_some() {
5737 return Err(::serde::de::Error::duplicate_field("member_count"));
5738 }
5739 field_member_count = Some(map.next_value()?);
5740 }
5741 _ => {
5742 map.next_value::<::serde_json::Value>()?;
5744 }
5745 }
5746 }
5747 if optional && nothing {
5748 return Ok(None);
5749 }
5750 let result = GroupInfo {
5751 group_name: field_group_name.ok_or_else(|| ::serde::de::Error::missing_field("group_name"))?,
5752 group_id: field_group_id.ok_or_else(|| ::serde::de::Error::missing_field("group_id"))?,
5753 group_management_type: field_group_management_type.ok_or_else(|| ::serde::de::Error::missing_field("group_management_type"))?,
5754 #[allow(deprecated)] group_type: field_group_type.ok_or_else(|| ::serde::de::Error::missing_field("group_type"))?,
5755 is_member: field_is_member.ok_or_else(|| ::serde::de::Error::missing_field("is_member"))?,
5756 is_owner: field_is_owner.ok_or_else(|| ::serde::de::Error::missing_field("is_owner"))?,
5757 same_team: field_same_team.ok_or_else(|| ::serde::de::Error::missing_field("same_team"))?,
5758 group_external_id: field_group_external_id.and_then(Option::flatten),
5759 member_count: field_member_count.and_then(Option::flatten),
5760 };
5761 Ok(Some(result))
5762 }
5763
5764 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5765 &self,
5766 s: &mut S::SerializeStruct,
5767 ) -> Result<(), S::Error> {
5768 use serde::ser::SerializeStruct;
5769 s.serialize_field("group_name", &self.group_name)?;
5770 s.serialize_field("group_id", &self.group_id)?;
5771 s.serialize_field("group_management_type", &self.group_management_type)?;
5772 #[allow(deprecated)]
5773 s.serialize_field("group_type", &self.group_type)?;
5774 s.serialize_field("is_member", &self.is_member)?;
5775 s.serialize_field("is_owner", &self.is_owner)?;
5776 s.serialize_field("same_team", &self.same_team)?;
5777 if let Some(val) = &self.group_external_id {
5778 s.serialize_field("group_external_id", val)?;
5779 }
5780 if let Some(val) = &self.member_count {
5781 s.serialize_field("member_count", val)?;
5782 }
5783 Ok(())
5784 }
5785}
5786
5787impl<'de> ::serde::de::Deserialize<'de> for GroupInfo {
5788 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5789 use serde::de::{MapAccess, Visitor};
5791 struct StructVisitor;
5792 impl<'de> Visitor<'de> for StructVisitor {
5793 type Value = GroupInfo;
5794 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5795 f.write_str("a GroupInfo struct")
5796 }
5797 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5798 GroupInfo::internal_deserialize(map)
5799 }
5800 }
5801 deserializer.deserialize_struct("GroupInfo", GROUP_INFO_FIELDS, StructVisitor)
5802 }
5803}
5804
5805impl ::serde::ser::Serialize for GroupInfo {
5806 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5807 use serde::ser::SerializeStruct;
5809 let mut s = serializer.serialize_struct("GroupInfo", 9)?;
5810 self.internal_serialize::<S>(&mut s)?;
5811 s.end()
5812 }
5813}
5814
5815impl From<GroupInfo> for crate::types::team_common::GroupSummary {
5817 fn from(subtype: GroupInfo) -> Self {
5818 Self {
5819 group_name: subtype.group_name,
5820 group_id: subtype.group_id,
5821 group_management_type: subtype.group_management_type,
5822 group_external_id: subtype.group_external_id,
5823 member_count: subtype.member_count,
5824 }
5825 }
5826}
5827#[derive(Debug, Clone, PartialEq, Eq)]
5829#[non_exhaustive] pub struct GroupMembershipInfo {
5831 pub access_type: AccessLevel,
5834 pub group: GroupInfo,
5836 pub permissions: Option<Vec<MemberPermission>>,
5839 #[deprecated]
5841 pub initials: Option<String>,
5842 pub is_inherited: bool,
5844}
5845
5846impl GroupMembershipInfo {
5847 pub fn new(access_type: AccessLevel, group: GroupInfo) -> Self {
5848 GroupMembershipInfo {
5849 access_type,
5850 group,
5851 permissions: None,
5852 #[allow(deprecated)] initials: None,
5853 is_inherited: false,
5854 }
5855 }
5856
5857 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
5858 self.permissions = Some(value);
5859 self
5860 }
5861
5862 #[deprecated]
5863 #[allow(deprecated)]
5864 pub fn with_initials(mut self, value: String) -> Self {
5865 self.initials = Some(value);
5866 self
5867 }
5868
5869 pub fn with_is_inherited(mut self, value: bool) -> Self {
5870 self.is_inherited = value;
5871 self
5872 }
5873}
5874
5875const GROUP_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
5876 "group",
5877 "permissions",
5878 "initials",
5879 "is_inherited"];
5880impl GroupMembershipInfo {
5881 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
5882 map: V,
5883 ) -> Result<GroupMembershipInfo, V::Error> {
5884 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
5885 }
5886
5887 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
5888 mut map: V,
5889 optional: bool,
5890 ) -> Result<Option<GroupMembershipInfo>, V::Error> {
5891 let mut field_access_type = None;
5892 let mut field_group = None;
5893 let mut field_permissions = None;
5894 let mut field_initials = None;
5895 let mut field_is_inherited = None;
5896 let mut nothing = true;
5897 while let Some(key) = map.next_key::<&str>()? {
5898 nothing = false;
5899 match key {
5900 "access_type" => {
5901 if field_access_type.is_some() {
5902 return Err(::serde::de::Error::duplicate_field("access_type"));
5903 }
5904 field_access_type = Some(map.next_value()?);
5905 }
5906 "group" => {
5907 if field_group.is_some() {
5908 return Err(::serde::de::Error::duplicate_field("group"));
5909 }
5910 field_group = Some(map.next_value()?);
5911 }
5912 "permissions" => {
5913 if field_permissions.is_some() {
5914 return Err(::serde::de::Error::duplicate_field("permissions"));
5915 }
5916 field_permissions = Some(map.next_value()?);
5917 }
5918 "initials" => {
5919 if field_initials.is_some() {
5920 return Err(::serde::de::Error::duplicate_field("initials"));
5921 }
5922 field_initials = Some(map.next_value()?);
5923 }
5924 "is_inherited" => {
5925 if field_is_inherited.is_some() {
5926 return Err(::serde::de::Error::duplicate_field("is_inherited"));
5927 }
5928 field_is_inherited = Some(map.next_value()?);
5929 }
5930 _ => {
5931 map.next_value::<::serde_json::Value>()?;
5933 }
5934 }
5935 }
5936 if optional && nothing {
5937 return Ok(None);
5938 }
5939 let result = GroupMembershipInfo {
5940 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
5941 group: field_group.ok_or_else(|| ::serde::de::Error::missing_field("group"))?,
5942 permissions: field_permissions.and_then(Option::flatten),
5943 #[allow(deprecated)] initials: field_initials.and_then(Option::flatten),
5944 is_inherited: field_is_inherited.unwrap_or(false),
5945 };
5946 Ok(Some(result))
5947 }
5948
5949 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
5950 &self,
5951 s: &mut S::SerializeStruct,
5952 ) -> Result<(), S::Error> {
5953 use serde::ser::SerializeStruct;
5954 s.serialize_field("access_type", &self.access_type)?;
5955 s.serialize_field("group", &self.group)?;
5956 if let Some(val) = &self.permissions {
5957 s.serialize_field("permissions", val)?;
5958 }
5959 #[allow(deprecated)]
5960 if let Some(val) = &self.initials {
5961 s.serialize_field("initials", val)?;
5962 }
5963 if self.is_inherited {
5964 s.serialize_field("is_inherited", &self.is_inherited)?;
5965 }
5966 Ok(())
5967 }
5968}
5969
5970impl<'de> ::serde::de::Deserialize<'de> for GroupMembershipInfo {
5971 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5972 use serde::de::{MapAccess, Visitor};
5974 struct StructVisitor;
5975 impl<'de> Visitor<'de> for StructVisitor {
5976 type Value = GroupMembershipInfo;
5977 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5978 f.write_str("a GroupMembershipInfo struct")
5979 }
5980 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
5981 GroupMembershipInfo::internal_deserialize(map)
5982 }
5983 }
5984 deserializer.deserialize_struct("GroupMembershipInfo", GROUP_MEMBERSHIP_INFO_FIELDS, StructVisitor)
5985 }
5986}
5987
5988impl ::serde::ser::Serialize for GroupMembershipInfo {
5989 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5990 use serde::ser::SerializeStruct;
5992 let mut s = serializer.serialize_struct("GroupMembershipInfo", 5)?;
5993 self.internal_serialize::<S>(&mut s)?;
5994 s.end()
5995 }
5996}
5997
5998impl From<GroupMembershipInfo> for MembershipInfo {
6000 fn from(subtype: GroupMembershipInfo) -> Self {
6001 Self {
6002 access_type: subtype.access_type,
6003 permissions: subtype.permissions,
6004 #[allow(deprecated)] initials: subtype.initials,
6005 is_inherited: subtype.is_inherited,
6006 }
6007 }
6008}
6009#[derive(Debug, Clone, PartialEq, Eq)]
6010#[non_exhaustive] pub struct InsufficientPlan {
6012 pub message: String,
6014 pub upsell_url: Option<String>,
6017}
6018
6019impl InsufficientPlan {
6020 pub fn new(message: String) -> Self {
6021 InsufficientPlan {
6022 message,
6023 upsell_url: None,
6024 }
6025 }
6026
6027 pub fn with_upsell_url(mut self, value: String) -> Self {
6028 self.upsell_url = Some(value);
6029 self
6030 }
6031}
6032
6033const INSUFFICIENT_PLAN_FIELDS: &[&str] = &["message",
6034 "upsell_url"];
6035impl InsufficientPlan {
6036 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
6037 map: V,
6038 ) -> Result<InsufficientPlan, V::Error> {
6039 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
6040 }
6041
6042 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
6043 mut map: V,
6044 optional: bool,
6045 ) -> Result<Option<InsufficientPlan>, V::Error> {
6046 let mut field_message = None;
6047 let mut field_upsell_url = None;
6048 let mut nothing = true;
6049 while let Some(key) = map.next_key::<&str>()? {
6050 nothing = false;
6051 match key {
6052 "message" => {
6053 if field_message.is_some() {
6054 return Err(::serde::de::Error::duplicate_field("message"));
6055 }
6056 field_message = Some(map.next_value()?);
6057 }
6058 "upsell_url" => {
6059 if field_upsell_url.is_some() {
6060 return Err(::serde::de::Error::duplicate_field("upsell_url"));
6061 }
6062 field_upsell_url = Some(map.next_value()?);
6063 }
6064 _ => {
6065 map.next_value::<::serde_json::Value>()?;
6067 }
6068 }
6069 }
6070 if optional && nothing {
6071 return Ok(None);
6072 }
6073 let result = InsufficientPlan {
6074 message: field_message.ok_or_else(|| ::serde::de::Error::missing_field("message"))?,
6075 upsell_url: field_upsell_url.and_then(Option::flatten),
6076 };
6077 Ok(Some(result))
6078 }
6079
6080 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
6081 &self,
6082 s: &mut S::SerializeStruct,
6083 ) -> Result<(), S::Error> {
6084 use serde::ser::SerializeStruct;
6085 s.serialize_field("message", &self.message)?;
6086 if let Some(val) = &self.upsell_url {
6087 s.serialize_field("upsell_url", val)?;
6088 }
6089 Ok(())
6090 }
6091}
6092
6093impl<'de> ::serde::de::Deserialize<'de> for InsufficientPlan {
6094 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6095 use serde::de::{MapAccess, Visitor};
6097 struct StructVisitor;
6098 impl<'de> Visitor<'de> for StructVisitor {
6099 type Value = InsufficientPlan;
6100 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6101 f.write_str("a InsufficientPlan struct")
6102 }
6103 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
6104 InsufficientPlan::internal_deserialize(map)
6105 }
6106 }
6107 deserializer.deserialize_struct("InsufficientPlan", INSUFFICIENT_PLAN_FIELDS, StructVisitor)
6108 }
6109}
6110
6111impl ::serde::ser::Serialize for InsufficientPlan {
6112 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6113 use serde::ser::SerializeStruct;
6115 let mut s = serializer.serialize_struct("InsufficientPlan", 2)?;
6116 self.internal_serialize::<S>(&mut s)?;
6117 s.end()
6118 }
6119}
6120
6121#[derive(Debug, Clone, PartialEq, Eq)]
6122#[non_exhaustive] pub struct InsufficientQuotaAmounts {
6124 pub space_needed: u64,
6126 pub space_shortage: u64,
6128 pub space_left: u64,
6130}
6131
6132impl InsufficientQuotaAmounts {
6133 pub fn new(space_needed: u64, space_shortage: u64, space_left: u64) -> Self {
6134 InsufficientQuotaAmounts {
6135 space_needed,
6136 space_shortage,
6137 space_left,
6138 }
6139 }
6140}
6141
6142const INSUFFICIENT_QUOTA_AMOUNTS_FIELDS: &[&str] = &["space_needed",
6143 "space_shortage",
6144 "space_left"];
6145impl InsufficientQuotaAmounts {
6146 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
6147 map: V,
6148 ) -> Result<InsufficientQuotaAmounts, V::Error> {
6149 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
6150 }
6151
6152 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
6153 mut map: V,
6154 optional: bool,
6155 ) -> Result<Option<InsufficientQuotaAmounts>, V::Error> {
6156 let mut field_space_needed = None;
6157 let mut field_space_shortage = None;
6158 let mut field_space_left = None;
6159 let mut nothing = true;
6160 while let Some(key) = map.next_key::<&str>()? {
6161 nothing = false;
6162 match key {
6163 "space_needed" => {
6164 if field_space_needed.is_some() {
6165 return Err(::serde::de::Error::duplicate_field("space_needed"));
6166 }
6167 field_space_needed = Some(map.next_value()?);
6168 }
6169 "space_shortage" => {
6170 if field_space_shortage.is_some() {
6171 return Err(::serde::de::Error::duplicate_field("space_shortage"));
6172 }
6173 field_space_shortage = Some(map.next_value()?);
6174 }
6175 "space_left" => {
6176 if field_space_left.is_some() {
6177 return Err(::serde::de::Error::duplicate_field("space_left"));
6178 }
6179 field_space_left = Some(map.next_value()?);
6180 }
6181 _ => {
6182 map.next_value::<::serde_json::Value>()?;
6184 }
6185 }
6186 }
6187 if optional && nothing {
6188 return Ok(None);
6189 }
6190 let result = InsufficientQuotaAmounts {
6191 space_needed: field_space_needed.ok_or_else(|| ::serde::de::Error::missing_field("space_needed"))?,
6192 space_shortage: field_space_shortage.ok_or_else(|| ::serde::de::Error::missing_field("space_shortage"))?,
6193 space_left: field_space_left.ok_or_else(|| ::serde::de::Error::missing_field("space_left"))?,
6194 };
6195 Ok(Some(result))
6196 }
6197
6198 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
6199 &self,
6200 s: &mut S::SerializeStruct,
6201 ) -> Result<(), S::Error> {
6202 use serde::ser::SerializeStruct;
6203 s.serialize_field("space_needed", &self.space_needed)?;
6204 s.serialize_field("space_shortage", &self.space_shortage)?;
6205 s.serialize_field("space_left", &self.space_left)?;
6206 Ok(())
6207 }
6208}
6209
6210impl<'de> ::serde::de::Deserialize<'de> for InsufficientQuotaAmounts {
6211 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6212 use serde::de::{MapAccess, Visitor};
6214 struct StructVisitor;
6215 impl<'de> Visitor<'de> for StructVisitor {
6216 type Value = InsufficientQuotaAmounts;
6217 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6218 f.write_str("a InsufficientQuotaAmounts struct")
6219 }
6220 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
6221 InsufficientQuotaAmounts::internal_deserialize(map)
6222 }
6223 }
6224 deserializer.deserialize_struct("InsufficientQuotaAmounts", INSUFFICIENT_QUOTA_AMOUNTS_FIELDS, StructVisitor)
6225 }
6226}
6227
6228impl ::serde::ser::Serialize for InsufficientQuotaAmounts {
6229 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6230 use serde::ser::SerializeStruct;
6232 let mut s = serializer.serialize_struct("InsufficientQuotaAmounts", 3)?;
6233 self.internal_serialize::<S>(&mut s)?;
6234 s.end()
6235 }
6236}
6237
6238#[derive(Debug, Clone, PartialEq, Eq)]
6240#[non_exhaustive] pub enum InviteeInfo {
6242 Email(crate::types::common::EmailAddress),
6244 Other,
6247}
6248
6249impl<'de> ::serde::de::Deserialize<'de> for InviteeInfo {
6250 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6251 use serde::de::{self, MapAccess, Visitor};
6253 struct EnumVisitor;
6254 impl<'de> Visitor<'de> for EnumVisitor {
6255 type Value = InviteeInfo;
6256 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6257 f.write_str("a InviteeInfo structure")
6258 }
6259 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6260 let tag: &str = match map.next_key()? {
6261 Some(".tag") => map.next_value()?,
6262 _ => return Err(de::Error::missing_field(".tag"))
6263 };
6264 let value = match tag {
6265 "email" => {
6266 match map.next_key()? {
6267 Some("email") => InviteeInfo::Email(map.next_value()?),
6268 None => return Err(de::Error::missing_field("email")),
6269 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6270 }
6271 }
6272 _ => InviteeInfo::Other,
6273 };
6274 crate::eat_json_fields(&mut map)?;
6275 Ok(value)
6276 }
6277 }
6278 const VARIANTS: &[&str] = &["email",
6279 "other"];
6280 deserializer.deserialize_struct("InviteeInfo", VARIANTS, EnumVisitor)
6281 }
6282}
6283
6284impl ::serde::ser::Serialize for InviteeInfo {
6285 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6286 use serde::ser::SerializeStruct;
6288 match self {
6289 InviteeInfo::Email(x) => {
6290 let mut s = serializer.serialize_struct("InviteeInfo", 2)?;
6292 s.serialize_field(".tag", "email")?;
6293 s.serialize_field("email", x)?;
6294 s.end()
6295 }
6296 InviteeInfo::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6297 }
6298 }
6299}
6300
6301#[derive(Debug, Clone, PartialEq, Eq)]
6303#[non_exhaustive] pub struct InviteeMembershipInfo {
6305 pub access_type: AccessLevel,
6308 pub invitee: InviteeInfo,
6310 pub permissions: Option<Vec<MemberPermission>>,
6313 #[deprecated]
6315 pub initials: Option<String>,
6316 pub is_inherited: bool,
6318 pub user: Option<UserInfo>,
6320}
6321
6322impl InviteeMembershipInfo {
6323 pub fn new(access_type: AccessLevel, invitee: InviteeInfo) -> Self {
6324 InviteeMembershipInfo {
6325 access_type,
6326 invitee,
6327 permissions: None,
6328 #[allow(deprecated)] initials: None,
6329 is_inherited: false,
6330 user: None,
6331 }
6332 }
6333
6334 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
6335 self.permissions = Some(value);
6336 self
6337 }
6338
6339 #[deprecated]
6340 #[allow(deprecated)]
6341 pub fn with_initials(mut self, value: String) -> Self {
6342 self.initials = Some(value);
6343 self
6344 }
6345
6346 pub fn with_is_inherited(mut self, value: bool) -> Self {
6347 self.is_inherited = value;
6348 self
6349 }
6350
6351 pub fn with_user(mut self, value: UserInfo) -> Self {
6352 self.user = Some(value);
6353 self
6354 }
6355}
6356
6357const INVITEE_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
6358 "invitee",
6359 "permissions",
6360 "initials",
6361 "is_inherited",
6362 "user"];
6363impl InviteeMembershipInfo {
6364 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
6365 map: V,
6366 ) -> Result<InviteeMembershipInfo, V::Error> {
6367 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
6368 }
6369
6370 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
6371 mut map: V,
6372 optional: bool,
6373 ) -> Result<Option<InviteeMembershipInfo>, V::Error> {
6374 let mut field_access_type = None;
6375 let mut field_invitee = None;
6376 let mut field_permissions = None;
6377 let mut field_initials = None;
6378 let mut field_is_inherited = None;
6379 let mut field_user = None;
6380 let mut nothing = true;
6381 while let Some(key) = map.next_key::<&str>()? {
6382 nothing = false;
6383 match key {
6384 "access_type" => {
6385 if field_access_type.is_some() {
6386 return Err(::serde::de::Error::duplicate_field("access_type"));
6387 }
6388 field_access_type = Some(map.next_value()?);
6389 }
6390 "invitee" => {
6391 if field_invitee.is_some() {
6392 return Err(::serde::de::Error::duplicate_field("invitee"));
6393 }
6394 field_invitee = Some(map.next_value()?);
6395 }
6396 "permissions" => {
6397 if field_permissions.is_some() {
6398 return Err(::serde::de::Error::duplicate_field("permissions"));
6399 }
6400 field_permissions = Some(map.next_value()?);
6401 }
6402 "initials" => {
6403 if field_initials.is_some() {
6404 return Err(::serde::de::Error::duplicate_field("initials"));
6405 }
6406 field_initials = Some(map.next_value()?);
6407 }
6408 "is_inherited" => {
6409 if field_is_inherited.is_some() {
6410 return Err(::serde::de::Error::duplicate_field("is_inherited"));
6411 }
6412 field_is_inherited = Some(map.next_value()?);
6413 }
6414 "user" => {
6415 if field_user.is_some() {
6416 return Err(::serde::de::Error::duplicate_field("user"));
6417 }
6418 field_user = Some(map.next_value()?);
6419 }
6420 _ => {
6421 map.next_value::<::serde_json::Value>()?;
6423 }
6424 }
6425 }
6426 if optional && nothing {
6427 return Ok(None);
6428 }
6429 let result = InviteeMembershipInfo {
6430 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
6431 invitee: field_invitee.ok_or_else(|| ::serde::de::Error::missing_field("invitee"))?,
6432 permissions: field_permissions.and_then(Option::flatten),
6433 #[allow(deprecated)] initials: field_initials.and_then(Option::flatten),
6434 is_inherited: field_is_inherited.unwrap_or(false),
6435 user: field_user.and_then(Option::flatten),
6436 };
6437 Ok(Some(result))
6438 }
6439
6440 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
6441 &self,
6442 s: &mut S::SerializeStruct,
6443 ) -> Result<(), S::Error> {
6444 use serde::ser::SerializeStruct;
6445 s.serialize_field("access_type", &self.access_type)?;
6446 s.serialize_field("invitee", &self.invitee)?;
6447 if let Some(val) = &self.permissions {
6448 s.serialize_field("permissions", val)?;
6449 }
6450 #[allow(deprecated)]
6451 if let Some(val) = &self.initials {
6452 s.serialize_field("initials", val)?;
6453 }
6454 if self.is_inherited {
6455 s.serialize_field("is_inherited", &self.is_inherited)?;
6456 }
6457 if let Some(val) = &self.user {
6458 s.serialize_field("user", val)?;
6459 }
6460 Ok(())
6461 }
6462}
6463
6464impl<'de> ::serde::de::Deserialize<'de> for InviteeMembershipInfo {
6465 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6466 use serde::de::{MapAccess, Visitor};
6468 struct StructVisitor;
6469 impl<'de> Visitor<'de> for StructVisitor {
6470 type Value = InviteeMembershipInfo;
6471 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6472 f.write_str("a InviteeMembershipInfo struct")
6473 }
6474 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
6475 InviteeMembershipInfo::internal_deserialize(map)
6476 }
6477 }
6478 deserializer.deserialize_struct("InviteeMembershipInfo", INVITEE_MEMBERSHIP_INFO_FIELDS, StructVisitor)
6479 }
6480}
6481
6482impl ::serde::ser::Serialize for InviteeMembershipInfo {
6483 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6484 use serde::ser::SerializeStruct;
6486 let mut s = serializer.serialize_struct("InviteeMembershipInfo", 6)?;
6487 self.internal_serialize::<S>(&mut s)?;
6488 s.end()
6489 }
6490}
6491
6492impl From<InviteeMembershipInfo> for MembershipInfo {
6494 fn from(subtype: InviteeMembershipInfo) -> Self {
6495 Self {
6496 access_type: subtype.access_type,
6497 permissions: subtype.permissions,
6498 #[allow(deprecated)] initials: subtype.initials,
6499 is_inherited: subtype.is_inherited,
6500 }
6501 }
6502}
6503#[derive(Debug, Clone, PartialEq, Eq)]
6507#[non_exhaustive] pub enum JobError {
6509 UnshareFolderError(UnshareFolderError),
6511 RemoveFolderMemberError(RemoveFolderMemberError),
6514 RelinquishFolderMembershipError(RelinquishFolderMembershipError),
6517 Other,
6520}
6521
6522impl<'de> ::serde::de::Deserialize<'de> for JobError {
6523 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6524 use serde::de::{self, MapAccess, Visitor};
6526 struct EnumVisitor;
6527 impl<'de> Visitor<'de> for EnumVisitor {
6528 type Value = JobError;
6529 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6530 f.write_str("a JobError structure")
6531 }
6532 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6533 let tag: &str = match map.next_key()? {
6534 Some(".tag") => map.next_value()?,
6535 _ => return Err(de::Error::missing_field(".tag"))
6536 };
6537 let value = match tag {
6538 "unshare_folder_error" => {
6539 match map.next_key()? {
6540 Some("unshare_folder_error") => JobError::UnshareFolderError(map.next_value()?),
6541 None => return Err(de::Error::missing_field("unshare_folder_error")),
6542 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6543 }
6544 }
6545 "remove_folder_member_error" => {
6546 match map.next_key()? {
6547 Some("remove_folder_member_error") => JobError::RemoveFolderMemberError(map.next_value()?),
6548 None => return Err(de::Error::missing_field("remove_folder_member_error")),
6549 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6550 }
6551 }
6552 "relinquish_folder_membership_error" => {
6553 match map.next_key()? {
6554 Some("relinquish_folder_membership_error") => JobError::RelinquishFolderMembershipError(map.next_value()?),
6555 None => return Err(de::Error::missing_field("relinquish_folder_membership_error")),
6556 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6557 }
6558 }
6559 _ => JobError::Other,
6560 };
6561 crate::eat_json_fields(&mut map)?;
6562 Ok(value)
6563 }
6564 }
6565 const VARIANTS: &[&str] = &["unshare_folder_error",
6566 "remove_folder_member_error",
6567 "relinquish_folder_membership_error",
6568 "other"];
6569 deserializer.deserialize_struct("JobError", VARIANTS, EnumVisitor)
6570 }
6571}
6572
6573impl ::serde::ser::Serialize for JobError {
6574 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6575 use serde::ser::SerializeStruct;
6577 match self {
6578 JobError::UnshareFolderError(x) => {
6579 let mut s = serializer.serialize_struct("JobError", 2)?;
6581 s.serialize_field(".tag", "unshare_folder_error")?;
6582 s.serialize_field("unshare_folder_error", x)?;
6583 s.end()
6584 }
6585 JobError::RemoveFolderMemberError(x) => {
6586 let mut s = serializer.serialize_struct("JobError", 2)?;
6588 s.serialize_field(".tag", "remove_folder_member_error")?;
6589 s.serialize_field("remove_folder_member_error", x)?;
6590 s.end()
6591 }
6592 JobError::RelinquishFolderMembershipError(x) => {
6593 let mut s = serializer.serialize_struct("JobError", 2)?;
6595 s.serialize_field(".tag", "relinquish_folder_membership_error")?;
6596 s.serialize_field("relinquish_folder_membership_error", x)?;
6597 s.end()
6598 }
6599 JobError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6600 }
6601 }
6602}
6603
6604impl ::std::error::Error for JobError {
6605 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
6606 match self {
6607 JobError::UnshareFolderError(inner) => Some(inner),
6608 JobError::RemoveFolderMemberError(inner) => Some(inner),
6609 JobError::RelinquishFolderMembershipError(inner) => Some(inner),
6610 _ => None,
6611 }
6612 }
6613}
6614
6615impl ::std::fmt::Display for JobError {
6616 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6617 match self {
6618 JobError::UnshareFolderError(inner) => write!(f, "JobError: {}", inner),
6619 JobError::RemoveFolderMemberError(inner) => write!(f, "JobError: {}", inner),
6620 JobError::RelinquishFolderMembershipError(inner) => write!(f, "JobError: {}", inner),
6621 _ => write!(f, "{:?}", *self),
6622 }
6623 }
6624}
6625
6626#[derive(Debug, Clone, PartialEq, Eq)]
6627pub enum JobStatus {
6628 InProgress,
6630 Complete,
6632 Failed(JobError),
6634}
6635
6636impl<'de> ::serde::de::Deserialize<'de> for JobStatus {
6637 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6638 use serde::de::{self, MapAccess, Visitor};
6640 struct EnumVisitor;
6641 impl<'de> Visitor<'de> for EnumVisitor {
6642 type Value = JobStatus;
6643 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6644 f.write_str("a JobStatus structure")
6645 }
6646 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6647 let tag: &str = match map.next_key()? {
6648 Some(".tag") => map.next_value()?,
6649 _ => return Err(de::Error::missing_field(".tag"))
6650 };
6651 let value = match tag {
6652 "in_progress" => JobStatus::InProgress,
6653 "complete" => JobStatus::Complete,
6654 "failed" => {
6655 match map.next_key()? {
6656 Some("failed") => JobStatus::Failed(map.next_value()?),
6657 None => return Err(de::Error::missing_field("failed")),
6658 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
6659 }
6660 }
6661 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
6662 };
6663 crate::eat_json_fields(&mut map)?;
6664 Ok(value)
6665 }
6666 }
6667 const VARIANTS: &[&str] = &["in_progress",
6668 "complete",
6669 "failed"];
6670 deserializer.deserialize_struct("JobStatus", VARIANTS, EnumVisitor)
6671 }
6672}
6673
6674impl ::serde::ser::Serialize for JobStatus {
6675 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6676 use serde::ser::SerializeStruct;
6678 match self {
6679 JobStatus::InProgress => {
6680 let mut s = serializer.serialize_struct("JobStatus", 1)?;
6682 s.serialize_field(".tag", "in_progress")?;
6683 s.end()
6684 }
6685 JobStatus::Complete => {
6686 let mut s = serializer.serialize_struct("JobStatus", 1)?;
6688 s.serialize_field(".tag", "complete")?;
6689 s.end()
6690 }
6691 JobStatus::Failed(x) => {
6692 let mut s = serializer.serialize_struct("JobStatus", 2)?;
6694 s.serialize_field(".tag", "failed")?;
6695 s.serialize_field("failed", x)?;
6696 s.end()
6697 }
6698 }
6699 }
6700}
6701
6702impl From<crate::types::dbx_async::PollResultBase> for JobStatus {
6704 fn from(parent: crate::types::dbx_async::PollResultBase) -> Self {
6705 match parent {
6706 crate::types::dbx_async::PollResultBase::InProgress => JobStatus::InProgress,
6707 }
6708 }
6709}
6710#[derive(Debug, Clone, PartialEq, Eq)]
6711#[non_exhaustive] pub enum LinkAccessLevel {
6713 Viewer,
6715 Editor,
6717 Other,
6720}
6721
6722impl<'de> ::serde::de::Deserialize<'de> for LinkAccessLevel {
6723 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6724 use serde::de::{self, MapAccess, Visitor};
6726 struct EnumVisitor;
6727 impl<'de> Visitor<'de> for EnumVisitor {
6728 type Value = LinkAccessLevel;
6729 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6730 f.write_str("a LinkAccessLevel structure")
6731 }
6732 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6733 let tag: &str = match map.next_key()? {
6734 Some(".tag") => map.next_value()?,
6735 _ => return Err(de::Error::missing_field(".tag"))
6736 };
6737 let value = match tag {
6738 "viewer" => LinkAccessLevel::Viewer,
6739 "editor" => LinkAccessLevel::Editor,
6740 _ => LinkAccessLevel::Other,
6741 };
6742 crate::eat_json_fields(&mut map)?;
6743 Ok(value)
6744 }
6745 }
6746 const VARIANTS: &[&str] = &["viewer",
6747 "editor",
6748 "other"];
6749 deserializer.deserialize_struct("LinkAccessLevel", VARIANTS, EnumVisitor)
6750 }
6751}
6752
6753impl ::serde::ser::Serialize for LinkAccessLevel {
6754 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6755 use serde::ser::SerializeStruct;
6757 match self {
6758 LinkAccessLevel::Viewer => {
6759 let mut s = serializer.serialize_struct("LinkAccessLevel", 1)?;
6761 s.serialize_field(".tag", "viewer")?;
6762 s.end()
6763 }
6764 LinkAccessLevel::Editor => {
6765 let mut s = serializer.serialize_struct("LinkAccessLevel", 1)?;
6767 s.serialize_field(".tag", "editor")?;
6768 s.end()
6769 }
6770 LinkAccessLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6771 }
6772 }
6773}
6774
6775#[derive(Debug, Clone, PartialEq, Eq)]
6777#[non_exhaustive] pub enum LinkAction {
6779 ChangeAccessLevel,
6781 ChangeAudience,
6783 RemoveExpiry,
6785 RemovePassword,
6787 SetExpiry,
6789 SetPassword,
6791 Other,
6794}
6795
6796impl<'de> ::serde::de::Deserialize<'de> for LinkAction {
6797 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6798 use serde::de::{self, MapAccess, Visitor};
6800 struct EnumVisitor;
6801 impl<'de> Visitor<'de> for EnumVisitor {
6802 type Value = LinkAction;
6803 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6804 f.write_str("a LinkAction structure")
6805 }
6806 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6807 let tag: &str = match map.next_key()? {
6808 Some(".tag") => map.next_value()?,
6809 _ => return Err(de::Error::missing_field(".tag"))
6810 };
6811 let value = match tag {
6812 "change_access_level" => LinkAction::ChangeAccessLevel,
6813 "change_audience" => LinkAction::ChangeAudience,
6814 "remove_expiry" => LinkAction::RemoveExpiry,
6815 "remove_password" => LinkAction::RemovePassword,
6816 "set_expiry" => LinkAction::SetExpiry,
6817 "set_password" => LinkAction::SetPassword,
6818 _ => LinkAction::Other,
6819 };
6820 crate::eat_json_fields(&mut map)?;
6821 Ok(value)
6822 }
6823 }
6824 const VARIANTS: &[&str] = &["change_access_level",
6825 "change_audience",
6826 "remove_expiry",
6827 "remove_password",
6828 "set_expiry",
6829 "set_password",
6830 "other"];
6831 deserializer.deserialize_struct("LinkAction", VARIANTS, EnumVisitor)
6832 }
6833}
6834
6835impl ::serde::ser::Serialize for LinkAction {
6836 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6837 use serde::ser::SerializeStruct;
6839 match self {
6840 LinkAction::ChangeAccessLevel => {
6841 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6843 s.serialize_field(".tag", "change_access_level")?;
6844 s.end()
6845 }
6846 LinkAction::ChangeAudience => {
6847 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6849 s.serialize_field(".tag", "change_audience")?;
6850 s.end()
6851 }
6852 LinkAction::RemoveExpiry => {
6853 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6855 s.serialize_field(".tag", "remove_expiry")?;
6856 s.end()
6857 }
6858 LinkAction::RemovePassword => {
6859 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6861 s.serialize_field(".tag", "remove_password")?;
6862 s.end()
6863 }
6864 LinkAction::SetExpiry => {
6865 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6867 s.serialize_field(".tag", "set_expiry")?;
6868 s.end()
6869 }
6870 LinkAction::SetPassword => {
6871 let mut s = serializer.serialize_struct("LinkAction", 1)?;
6873 s.serialize_field(".tag", "set_password")?;
6874 s.end()
6875 }
6876 LinkAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6877 }
6878 }
6879}
6880
6881#[derive(Debug, Clone, PartialEq, Eq)]
6882#[non_exhaustive] pub enum LinkAudience {
6884 Public,
6886 Team,
6888 NoOne,
6892 #[deprecated]
6895 Password,
6896 #[deprecated]
6898 Members,
6899 Other,
6902}
6903
6904impl<'de> ::serde::de::Deserialize<'de> for LinkAudience {
6905 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6906 use serde::de::{self, MapAccess, Visitor};
6908 struct EnumVisitor;
6909 impl<'de> Visitor<'de> for EnumVisitor {
6910 type Value = LinkAudience;
6911 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6912 f.write_str("a LinkAudience structure")
6913 }
6914 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
6915 let tag: &str = match map.next_key()? {
6916 Some(".tag") => map.next_value()?,
6917 _ => return Err(de::Error::missing_field(".tag"))
6918 };
6919 let value = match tag {
6920 "public" => LinkAudience::Public,
6921 "team" => LinkAudience::Team,
6922 "no_one" => LinkAudience::NoOne,
6923 #[allow(deprecated)]
6924 "password" => LinkAudience::Password,
6925 #[allow(deprecated)]
6926 "members" => LinkAudience::Members,
6927 _ => LinkAudience::Other,
6928 };
6929 crate::eat_json_fields(&mut map)?;
6930 Ok(value)
6931 }
6932 }
6933 const VARIANTS: &[&str] = &["public",
6934 "team",
6935 "no_one",
6936 "password",
6937 "members",
6938 "other"];
6939 deserializer.deserialize_struct("LinkAudience", VARIANTS, EnumVisitor)
6940 }
6941}
6942
6943impl ::serde::ser::Serialize for LinkAudience {
6944 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6945 use serde::ser::SerializeStruct;
6947 match self {
6948 LinkAudience::Public => {
6949 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6951 s.serialize_field(".tag", "public")?;
6952 s.end()
6953 }
6954 LinkAudience::Team => {
6955 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6957 s.serialize_field(".tag", "team")?;
6958 s.end()
6959 }
6960 LinkAudience::NoOne => {
6961 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6963 s.serialize_field(".tag", "no_one")?;
6964 s.end()
6965 }
6966 #[allow(deprecated)]
6967 LinkAudience::Password => {
6968 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6970 s.serialize_field(".tag", "password")?;
6971 s.end()
6972 }
6973 #[allow(deprecated)]
6974 LinkAudience::Members => {
6975 let mut s = serializer.serialize_struct("LinkAudience", 1)?;
6977 s.serialize_field(".tag", "members")?;
6978 s.end()
6979 }
6980 LinkAudience::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
6981 }
6982 }
6983}
6984
6985#[derive(Debug, Clone, PartialEq, Eq)]
6987#[non_exhaustive] pub enum LinkAudienceDisallowedReason {
6989 DeleteAndRecreate,
6991 RestrictedBySharedFolder,
6994 RestrictedByTeam,
6996 UserNotOnTeam,
6998 UserAccountType,
7000 PermissionDenied,
7002 Other,
7005}
7006
7007impl<'de> ::serde::de::Deserialize<'de> for LinkAudienceDisallowedReason {
7008 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7009 use serde::de::{self, MapAccess, Visitor};
7011 struct EnumVisitor;
7012 impl<'de> Visitor<'de> for EnumVisitor {
7013 type Value = LinkAudienceDisallowedReason;
7014 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7015 f.write_str("a LinkAudienceDisallowedReason structure")
7016 }
7017 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
7018 let tag: &str = match map.next_key()? {
7019 Some(".tag") => map.next_value()?,
7020 _ => return Err(de::Error::missing_field(".tag"))
7021 };
7022 let value = match tag {
7023 "delete_and_recreate" => LinkAudienceDisallowedReason::DeleteAndRecreate,
7024 "restricted_by_shared_folder" => LinkAudienceDisallowedReason::RestrictedBySharedFolder,
7025 "restricted_by_team" => LinkAudienceDisallowedReason::RestrictedByTeam,
7026 "user_not_on_team" => LinkAudienceDisallowedReason::UserNotOnTeam,
7027 "user_account_type" => LinkAudienceDisallowedReason::UserAccountType,
7028 "permission_denied" => LinkAudienceDisallowedReason::PermissionDenied,
7029 _ => LinkAudienceDisallowedReason::Other,
7030 };
7031 crate::eat_json_fields(&mut map)?;
7032 Ok(value)
7033 }
7034 }
7035 const VARIANTS: &[&str] = &["delete_and_recreate",
7036 "restricted_by_shared_folder",
7037 "restricted_by_team",
7038 "user_not_on_team",
7039 "user_account_type",
7040 "permission_denied",
7041 "other"];
7042 deserializer.deserialize_struct("LinkAudienceDisallowedReason", VARIANTS, EnumVisitor)
7043 }
7044}
7045
7046impl ::serde::ser::Serialize for LinkAudienceDisallowedReason {
7047 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7048 use serde::ser::SerializeStruct;
7050 match self {
7051 LinkAudienceDisallowedReason::DeleteAndRecreate => {
7052 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7054 s.serialize_field(".tag", "delete_and_recreate")?;
7055 s.end()
7056 }
7057 LinkAudienceDisallowedReason::RestrictedBySharedFolder => {
7058 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7060 s.serialize_field(".tag", "restricted_by_shared_folder")?;
7061 s.end()
7062 }
7063 LinkAudienceDisallowedReason::RestrictedByTeam => {
7064 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7066 s.serialize_field(".tag", "restricted_by_team")?;
7067 s.end()
7068 }
7069 LinkAudienceDisallowedReason::UserNotOnTeam => {
7070 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7072 s.serialize_field(".tag", "user_not_on_team")?;
7073 s.end()
7074 }
7075 LinkAudienceDisallowedReason::UserAccountType => {
7076 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7078 s.serialize_field(".tag", "user_account_type")?;
7079 s.end()
7080 }
7081 LinkAudienceDisallowedReason::PermissionDenied => {
7082 let mut s = serializer.serialize_struct("LinkAudienceDisallowedReason", 1)?;
7084 s.serialize_field(".tag", "permission_denied")?;
7085 s.end()
7086 }
7087 LinkAudienceDisallowedReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
7088 }
7089 }
7090}
7091
7092impl From<VisibilityPolicyDisallowedReason> for LinkAudienceDisallowedReason {
7094 fn from(parent: VisibilityPolicyDisallowedReason) -> Self {
7095 match parent {
7096 VisibilityPolicyDisallowedReason::DeleteAndRecreate => LinkAudienceDisallowedReason::DeleteAndRecreate,
7097 VisibilityPolicyDisallowedReason::RestrictedBySharedFolder => LinkAudienceDisallowedReason::RestrictedBySharedFolder,
7098 VisibilityPolicyDisallowedReason::RestrictedByTeam => LinkAudienceDisallowedReason::RestrictedByTeam,
7099 VisibilityPolicyDisallowedReason::UserNotOnTeam => LinkAudienceDisallowedReason::UserNotOnTeam,
7100 VisibilityPolicyDisallowedReason::UserAccountType => LinkAudienceDisallowedReason::UserAccountType,
7101 VisibilityPolicyDisallowedReason::PermissionDenied => LinkAudienceDisallowedReason::PermissionDenied,
7102 VisibilityPolicyDisallowedReason::Other => LinkAudienceDisallowedReason::Other,
7103 }
7104 }
7105}
7106#[derive(Debug, Clone, PartialEq, Eq)]
7107#[non_exhaustive] pub struct LinkAudienceOption {
7109 pub audience: LinkAudience,
7111 pub allowed: bool,
7113 pub disallowed_reason: Option<LinkAudienceDisallowedReason>,
7116}
7117
7118impl LinkAudienceOption {
7119 pub fn new(audience: LinkAudience, allowed: bool) -> Self {
7120 LinkAudienceOption {
7121 audience,
7122 allowed,
7123 disallowed_reason: None,
7124 }
7125 }
7126
7127 pub fn with_disallowed_reason(mut self, value: LinkAudienceDisallowedReason) -> Self {
7128 self.disallowed_reason = Some(value);
7129 self
7130 }
7131}
7132
7133const LINK_AUDIENCE_OPTION_FIELDS: &[&str] = &["audience",
7134 "allowed",
7135 "disallowed_reason"];
7136impl LinkAudienceOption {
7137 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
7138 map: V,
7139 ) -> Result<LinkAudienceOption, V::Error> {
7140 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
7141 }
7142
7143 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
7144 mut map: V,
7145 optional: bool,
7146 ) -> Result<Option<LinkAudienceOption>, V::Error> {
7147 let mut field_audience = None;
7148 let mut field_allowed = None;
7149 let mut field_disallowed_reason = None;
7150 let mut nothing = true;
7151 while let Some(key) = map.next_key::<&str>()? {
7152 nothing = false;
7153 match key {
7154 "audience" => {
7155 if field_audience.is_some() {
7156 return Err(::serde::de::Error::duplicate_field("audience"));
7157 }
7158 field_audience = Some(map.next_value()?);
7159 }
7160 "allowed" => {
7161 if field_allowed.is_some() {
7162 return Err(::serde::de::Error::duplicate_field("allowed"));
7163 }
7164 field_allowed = Some(map.next_value()?);
7165 }
7166 "disallowed_reason" => {
7167 if field_disallowed_reason.is_some() {
7168 return Err(::serde::de::Error::duplicate_field("disallowed_reason"));
7169 }
7170 field_disallowed_reason = Some(map.next_value()?);
7171 }
7172 _ => {
7173 map.next_value::<::serde_json::Value>()?;
7175 }
7176 }
7177 }
7178 if optional && nothing {
7179 return Ok(None);
7180 }
7181 let result = LinkAudienceOption {
7182 audience: field_audience.ok_or_else(|| ::serde::de::Error::missing_field("audience"))?,
7183 allowed: field_allowed.ok_or_else(|| ::serde::de::Error::missing_field("allowed"))?,
7184 disallowed_reason: field_disallowed_reason.and_then(Option::flatten),
7185 };
7186 Ok(Some(result))
7187 }
7188
7189 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
7190 &self,
7191 s: &mut S::SerializeStruct,
7192 ) -> Result<(), S::Error> {
7193 use serde::ser::SerializeStruct;
7194 s.serialize_field("audience", &self.audience)?;
7195 s.serialize_field("allowed", &self.allowed)?;
7196 if let Some(val) = &self.disallowed_reason {
7197 s.serialize_field("disallowed_reason", val)?;
7198 }
7199 Ok(())
7200 }
7201}
7202
7203impl<'de> ::serde::de::Deserialize<'de> for LinkAudienceOption {
7204 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7205 use serde::de::{MapAccess, Visitor};
7207 struct StructVisitor;
7208 impl<'de> Visitor<'de> for StructVisitor {
7209 type Value = LinkAudienceOption;
7210 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7211 f.write_str("a LinkAudienceOption struct")
7212 }
7213 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
7214 LinkAudienceOption::internal_deserialize(map)
7215 }
7216 }
7217 deserializer.deserialize_struct("LinkAudienceOption", LINK_AUDIENCE_OPTION_FIELDS, StructVisitor)
7218 }
7219}
7220
7221impl ::serde::ser::Serialize for LinkAudienceOption {
7222 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7223 use serde::ser::SerializeStruct;
7225 let mut s = serializer.serialize_struct("LinkAudienceOption", 3)?;
7226 self.internal_serialize::<S>(&mut s)?;
7227 s.end()
7228 }
7229}
7230
7231#[derive(Debug, Clone, PartialEq, Eq)]
7232#[non_exhaustive] pub enum LinkExpiry {
7234 RemoveExpiry,
7236 SetExpiry(crate::types::common::DropboxTimestamp),
7238 Other,
7241}
7242
7243impl<'de> ::serde::de::Deserialize<'de> for LinkExpiry {
7244 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7245 use serde::de::{self, MapAccess, Visitor};
7247 struct EnumVisitor;
7248 impl<'de> Visitor<'de> for EnumVisitor {
7249 type Value = LinkExpiry;
7250 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7251 f.write_str("a LinkExpiry structure")
7252 }
7253 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
7254 let tag: &str = match map.next_key()? {
7255 Some(".tag") => map.next_value()?,
7256 _ => return Err(de::Error::missing_field(".tag"))
7257 };
7258 let value = match tag {
7259 "remove_expiry" => LinkExpiry::RemoveExpiry,
7260 "set_expiry" => {
7261 match map.next_key()? {
7262 Some("set_expiry") => LinkExpiry::SetExpiry(map.next_value()?),
7263 None => return Err(de::Error::missing_field("set_expiry")),
7264 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
7265 }
7266 }
7267 _ => LinkExpiry::Other,
7268 };
7269 crate::eat_json_fields(&mut map)?;
7270 Ok(value)
7271 }
7272 }
7273 const VARIANTS: &[&str] = &["remove_expiry",
7274 "set_expiry",
7275 "other"];
7276 deserializer.deserialize_struct("LinkExpiry", VARIANTS, EnumVisitor)
7277 }
7278}
7279
7280impl ::serde::ser::Serialize for LinkExpiry {
7281 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7282 use serde::ser::SerializeStruct;
7284 match self {
7285 LinkExpiry::RemoveExpiry => {
7286 let mut s = serializer.serialize_struct("LinkExpiry", 1)?;
7288 s.serialize_field(".tag", "remove_expiry")?;
7289 s.end()
7290 }
7291 LinkExpiry::SetExpiry(x) => {
7292 let mut s = serializer.serialize_struct("LinkExpiry", 2)?;
7294 s.serialize_field(".tag", "set_expiry")?;
7295 s.serialize_field("set_expiry", x)?;
7296 s.end()
7297 }
7298 LinkExpiry::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
7299 }
7300 }
7301}
7302
7303#[derive(Debug, Clone, PartialEq, Eq)]
7306#[non_exhaustive] pub enum LinkMetadata {
7308 Path(PathLinkMetadata),
7309 Collection(CollectionLinkMetadata),
7310 Other,
7313}
7314
7315impl<'de> ::serde::de::Deserialize<'de> for LinkMetadata {
7316 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7317 use serde::de::{self, MapAccess, Visitor};
7319 struct EnumVisitor;
7320 impl<'de> Visitor<'de> for EnumVisitor {
7321 type Value = LinkMetadata;
7322 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7323 f.write_str("a LinkMetadata structure")
7324 }
7325 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
7326 let tag = match map.next_key()? {
7327 Some(".tag") => map.next_value()?,
7328 _ => return Err(de::Error::missing_field(".tag"))
7329 };
7330 match tag {
7331 "path" => Ok(LinkMetadata::Path(PathLinkMetadata::internal_deserialize(map)?)),
7332 "collection" => Ok(LinkMetadata::Collection(CollectionLinkMetadata::internal_deserialize(map)?)),
7333 _ => {
7334 crate::eat_json_fields(&mut map)?;
7335 Ok(LinkMetadata::Other)
7336 }
7337 }
7338 }
7339 }
7340 const VARIANTS: &[&str] = &["path",
7341 "collection"];
7342 deserializer.deserialize_struct("LinkMetadata", VARIANTS, EnumVisitor)
7343 }
7344}
7345
7346impl ::serde::ser::Serialize for LinkMetadata {
7347 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7348 use serde::ser::SerializeStruct;
7350 match self {
7351 LinkMetadata::Path(x) => {
7352 let mut s = serializer.serialize_struct("LinkMetadata", 5)?;
7353 s.serialize_field(".tag", "path")?;
7354 x.internal_serialize::<S>(&mut s)?;
7355 s.end()
7356 }
7357 LinkMetadata::Collection(x) => {
7358 let mut s = serializer.serialize_struct("LinkMetadata", 4)?;
7359 s.serialize_field(".tag", "collection")?;
7360 x.internal_serialize::<S>(&mut s)?;
7361 s.end()
7362 }
7363 LinkMetadata::Other => Err(::serde::ser::Error::custom("cannot serialize unknown variant"))
7364 }
7365 }
7366}
7367
7368#[derive(Debug, Clone, PartialEq, Eq)]
7369#[non_exhaustive] pub enum LinkPassword {
7371 RemovePassword,
7373 SetPassword(String),
7375 Other,
7378}
7379
7380impl<'de> ::serde::de::Deserialize<'de> for LinkPassword {
7381 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7382 use serde::de::{self, MapAccess, Visitor};
7384 struct EnumVisitor;
7385 impl<'de> Visitor<'de> for EnumVisitor {
7386 type Value = LinkPassword;
7387 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7388 f.write_str("a LinkPassword structure")
7389 }
7390 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
7391 let tag: &str = match map.next_key()? {
7392 Some(".tag") => map.next_value()?,
7393 _ => return Err(de::Error::missing_field(".tag"))
7394 };
7395 let value = match tag {
7396 "remove_password" => LinkPassword::RemovePassword,
7397 "set_password" => {
7398 match map.next_key()? {
7399 Some("set_password") => LinkPassword::SetPassword(map.next_value()?),
7400 None => return Err(de::Error::missing_field("set_password")),
7401 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
7402 }
7403 }
7404 _ => LinkPassword::Other,
7405 };
7406 crate::eat_json_fields(&mut map)?;
7407 Ok(value)
7408 }
7409 }
7410 const VARIANTS: &[&str] = &["remove_password",
7411 "set_password",
7412 "other"];
7413 deserializer.deserialize_struct("LinkPassword", VARIANTS, EnumVisitor)
7414 }
7415}
7416
7417impl ::serde::ser::Serialize for LinkPassword {
7418 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7419 use serde::ser::SerializeStruct;
7421 match self {
7422 LinkPassword::RemovePassword => {
7423 let mut s = serializer.serialize_struct("LinkPassword", 1)?;
7425 s.serialize_field(".tag", "remove_password")?;
7426 s.end()
7427 }
7428 LinkPassword::SetPassword(x) => {
7429 let mut s = serializer.serialize_struct("LinkPassword", 2)?;
7431 s.serialize_field(".tag", "set_password")?;
7432 s.serialize_field("set_password", x)?;
7433 s.end()
7434 }
7435 LinkPassword::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
7436 }
7437 }
7438}
7439
7440#[derive(Debug, Clone, PartialEq, Eq)]
7442#[non_exhaustive] pub struct LinkPermission {
7444 pub action: LinkAction,
7445 pub allow: bool,
7446 pub reason: Option<PermissionDeniedReason>,
7447}
7448
7449impl LinkPermission {
7450 pub fn new(action: LinkAction, allow: bool) -> Self {
7451 LinkPermission {
7452 action,
7453 allow,
7454 reason: None,
7455 }
7456 }
7457
7458 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
7459 self.reason = Some(value);
7460 self
7461 }
7462}
7463
7464const LINK_PERMISSION_FIELDS: &[&str] = &["action",
7465 "allow",
7466 "reason"];
7467impl LinkPermission {
7468 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
7469 map: V,
7470 ) -> Result<LinkPermission, V::Error> {
7471 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
7472 }
7473
7474 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
7475 mut map: V,
7476 optional: bool,
7477 ) -> Result<Option<LinkPermission>, V::Error> {
7478 let mut field_action = None;
7479 let mut field_allow = None;
7480 let mut field_reason = None;
7481 let mut nothing = true;
7482 while let Some(key) = map.next_key::<&str>()? {
7483 nothing = false;
7484 match key {
7485 "action" => {
7486 if field_action.is_some() {
7487 return Err(::serde::de::Error::duplicate_field("action"));
7488 }
7489 field_action = Some(map.next_value()?);
7490 }
7491 "allow" => {
7492 if field_allow.is_some() {
7493 return Err(::serde::de::Error::duplicate_field("allow"));
7494 }
7495 field_allow = Some(map.next_value()?);
7496 }
7497 "reason" => {
7498 if field_reason.is_some() {
7499 return Err(::serde::de::Error::duplicate_field("reason"));
7500 }
7501 field_reason = Some(map.next_value()?);
7502 }
7503 _ => {
7504 map.next_value::<::serde_json::Value>()?;
7506 }
7507 }
7508 }
7509 if optional && nothing {
7510 return Ok(None);
7511 }
7512 let result = LinkPermission {
7513 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
7514 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
7515 reason: field_reason.and_then(Option::flatten),
7516 };
7517 Ok(Some(result))
7518 }
7519
7520 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
7521 &self,
7522 s: &mut S::SerializeStruct,
7523 ) -> Result<(), S::Error> {
7524 use serde::ser::SerializeStruct;
7525 s.serialize_field("action", &self.action)?;
7526 s.serialize_field("allow", &self.allow)?;
7527 if let Some(val) = &self.reason {
7528 s.serialize_field("reason", val)?;
7529 }
7530 Ok(())
7531 }
7532}
7533
7534impl<'de> ::serde::de::Deserialize<'de> for LinkPermission {
7535 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
7536 use serde::de::{MapAccess, Visitor};
7538 struct StructVisitor;
7539 impl<'de> Visitor<'de> for StructVisitor {
7540 type Value = LinkPermission;
7541 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7542 f.write_str("a LinkPermission struct")
7543 }
7544 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
7545 LinkPermission::internal_deserialize(map)
7546 }
7547 }
7548 deserializer.deserialize_struct("LinkPermission", LINK_PERMISSION_FIELDS, StructVisitor)
7549 }
7550}
7551
7552impl ::serde::ser::Serialize for LinkPermission {
7553 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7554 use serde::ser::SerializeStruct;
7556 let mut s = serializer.serialize_struct("LinkPermission", 3)?;
7557 self.internal_serialize::<S>(&mut s)?;
7558 s.end()
7559 }
7560}
7561
7562#[derive(Debug, Clone, PartialEq, Eq)]
7563#[non_exhaustive] pub struct LinkPermissions {
7565 pub can_revoke: bool,
7567 pub visibility_policies: Vec<VisibilityPolicy>,
7569 pub can_set_expiry: bool,
7572 pub can_remove_expiry: bool,
7574 pub allow_download: bool,
7576 pub can_allow_download: bool,
7579 pub can_disallow_download: bool,
7582 #[deprecated]
7585 pub allow_comments: bool,
7586 #[deprecated]
7588 pub team_restricts_comments: bool,
7589 pub resolved_visibility: Option<ResolvedVisibility>,
7595 pub requested_visibility: Option<RequestedVisibility>,
7600 pub revoke_failure_reason: Option<SharedLinkAccessFailureReason>,
7603 pub effective_audience: Option<LinkAudience>,
7606 pub link_access_level: Option<LinkAccessLevel>,
7613 pub audience_options: Option<Vec<LinkAudienceOption>>,
7615 pub can_set_password: Option<bool>,
7617 pub can_remove_password: Option<bool>,
7619 pub require_password: Option<bool>,
7621 pub can_use_extended_sharing_controls: Option<bool>,
7623 pub can_sync: Option<bool>,
7625 pub can_request_access: Option<bool>,
7627 pub enforce_shared_link_password_policy: Option<crate::types::team_policies::EnforceLinkPasswordPolicy>,
7630 pub days_to_expire_policy: Option<crate::types::team_policies::DefaultLinkExpirationDaysPolicy>,
7633 pub change_shared_link_expiration_policy: Option<ChangeLinkExpirationPolicy>,
7639}
7640
7641impl LinkPermissions {
7642 pub fn new(
7643 can_revoke: bool,
7644 visibility_policies: Vec<VisibilityPolicy>,
7645 can_set_expiry: bool,
7646 can_remove_expiry: bool,
7647 allow_download: bool,
7648 can_allow_download: bool,
7649 can_disallow_download: bool,
7650 allow_comments: bool,
7651 team_restricts_comments: bool,
7652 ) -> Self {
7653 LinkPermissions {
7654 can_revoke,
7655 visibility_policies,
7656 can_set_expiry,
7657 can_remove_expiry,
7658 allow_download,
7659 can_allow_download,
7660 can_disallow_download,
7661 #[allow(deprecated)] allow_comments,
7662 #[allow(deprecated)] team_restricts_comments,
7663 resolved_visibility: None,
7664 requested_visibility: None,
7665 revoke_failure_reason: None,
7666 effective_audience: None,
7667 link_access_level: None,
7668 audience_options: None,
7669 can_set_password: None,
7670 can_remove_password: None,
7671 require_password: None,
7672 can_use_extended_sharing_controls: None,
7673 can_sync: None,
7674 can_request_access: None,
7675 enforce_shared_link_password_policy: None,
7676 days_to_expire_policy: None,
7677 change_shared_link_expiration_policy: None,
7678 }
7679 }
7680
7681 pub fn with_resolved_visibility(mut self, value: ResolvedVisibility) -> Self {
7682 self.resolved_visibility = Some(value);
7683 self
7684 }
7685
7686 pub fn with_requested_visibility(mut self, value: RequestedVisibility) -> Self {
7687 self.requested_visibility = Some(value);
7688 self
7689 }
7690
7691 pub fn with_revoke_failure_reason(mut self, value: SharedLinkAccessFailureReason) -> Self {
7692 self.revoke_failure_reason = Some(value);
7693 self
7694 }
7695
7696 pub fn with_effective_audience(mut self, value: LinkAudience) -> Self {
7697 self.effective_audience = Some(value);
7698 self
7699 }
7700
7701 pub fn with_link_access_level(mut self, value: LinkAccessLevel) -> Self {
7702 self.link_access_level = Some(value);
7703 self
7704 }
7705
7706 pub fn with_audience_options(mut self, value: Vec<LinkAudienceOption>) -> Self {
7707 self.audience_options = Some(value);
7708 self
7709 }
7710
7711 pub fn with_can_set_password(mut self, value: bool) -> Self {
7712 self.can_set_password = Some(value);
7713 self
7714 }
7715
7716 pub fn with_can_remove_password(mut self, value: bool) -> Self {
7717 self.can_remove_password = Some(value);
7718 self
7719 }
7720
7721 pub fn with_require_password(mut self, value: bool) -> Self {
7722 self.require_password = Some(value);
7723 self
7724 }
7725
7726 pub fn with_can_use_extended_sharing_controls(mut self, value: bool) -> Self {
7727 self.can_use_extended_sharing_controls = Some(value);
7728 self
7729 }
7730
7731 pub fn with_can_sync(mut self, value: bool) -> Self {
7732 self.can_sync = Some(value);
7733 self
7734 }
7735
7736 pub fn with_can_request_access(mut self, value: bool) -> Self {
7737 self.can_request_access = Some(value);
7738 self
7739 }
7740
7741 pub fn with_enforce_shared_link_password_policy(
7742 mut self,
7743 value: crate::types::team_policies::EnforceLinkPasswordPolicy,
7744 ) -> Self {
7745 self.enforce_shared_link_password_policy = Some(value);
7746 self
7747 }
7748
7749 pub fn with_days_to_expire_policy(
7750 mut self,
7751 value: crate::types::team_policies::DefaultLinkExpirationDaysPolicy,
7752 ) -> Self {
7753 self.days_to_expire_policy = Some(value);
7754 self
7755 }
7756
7757 pub fn with_change_shared_link_expiration_policy(
7758 mut self,
7759 value: ChangeLinkExpirationPolicy,
7760 ) -> Self {
7761 self.change_shared_link_expiration_policy = Some(value);
7762 self
7763 }
7764}
7765
7766const LINK_PERMISSIONS_FIELDS: &[&str] = &["can_revoke",
7767 "visibility_policies",
7768 "can_set_expiry",
7769 "can_remove_expiry",
7770 "allow_download",
7771 "can_allow_download",
7772 "can_disallow_download",
7773 "allow_comments",
7774 "team_restricts_comments",
7775 "resolved_visibility",
7776 "requested_visibility",
7777 "revoke_failure_reason",
7778 "effective_audience",
7779 "link_access_level",
7780 "audience_options",
7781 "can_set_password",
7782 "can_remove_password",
7783 "require_password",
7784 "can_use_extended_sharing_controls",
7785 "can_sync",
7786 "can_request_access",
7787 "enforce_shared_link_password_policy",
7788 "days_to_expire_policy",
7789 "change_shared_link_expiration_policy"];
7790impl LinkPermissions {
7791 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
7792 map: V,
7793 ) -> Result<LinkPermissions, V::Error> {
7794 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
7795 }
7796
7797 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
7798 mut map: V,
7799 optional: bool,
7800 ) -> Result<Option<LinkPermissions>, V::Error> {
7801 let mut field_can_revoke = None;
7802 let mut field_visibility_policies = None;
7803 let mut field_can_set_expiry = None;
7804 let mut field_can_remove_expiry = None;
7805 let mut field_allow_download = None;
7806 let mut field_can_allow_download = None;
7807 let mut field_can_disallow_download = None;
7808 let mut field_allow_comments = None;
7809 let mut field_team_restricts_comments = None;
7810 let mut field_resolved_visibility = None;
7811 let mut field_requested_visibility = None;
7812 let mut field_revoke_failure_reason = None;
7813 let mut field_effective_audience = None;
7814 let mut field_link_access_level = None;
7815 let mut field_audience_options = None;
7816 let mut field_can_set_password = None;
7817 let mut field_can_remove_password = None;
7818 let mut field_require_password = None;
7819 let mut field_can_use_extended_sharing_controls = None;
7820 let mut field_can_sync = None;
7821 let mut field_can_request_access = None;
7822 let mut field_enforce_shared_link_password_policy = None;
7823 let mut field_days_to_expire_policy = None;
7824 let mut field_change_shared_link_expiration_policy = None;
7825 let mut nothing = true;
7826 while let Some(key) = map.next_key::<&str>()? {
7827 nothing = false;
7828 match key {
7829 "can_revoke" => {
7830 if field_can_revoke.is_some() {
7831 return Err(::serde::de::Error::duplicate_field("can_revoke"));
7832 }
7833 field_can_revoke = Some(map.next_value()?);
7834 }
7835 "visibility_policies" => {
7836 if field_visibility_policies.is_some() {
7837 return Err(::serde::de::Error::duplicate_field("visibility_policies"));
7838 }
7839 field_visibility_policies = Some(map.next_value()?);
7840 }
7841 "can_set_expiry" => {
7842 if field_can_set_expiry.is_some() {
7843 return Err(::serde::de::Error::duplicate_field("can_set_expiry"));
7844 }
7845 field_can_set_expiry = Some(map.next_value()?);
7846 }
7847 "can_remove_expiry" => {
7848 if field_can_remove_expiry.is_some() {
7849 return Err(::serde::de::Error::duplicate_field("can_remove_expiry"));
7850 }
7851 field_can_remove_expiry = Some(map.next_value()?);
7852 }
7853 "allow_download" => {
7854 if field_allow_download.is_some() {
7855 return Err(::serde::de::Error::duplicate_field("allow_download"));
7856 }
7857 field_allow_download = Some(map.next_value()?);
7858 }
7859 "can_allow_download" => {
7860 if field_can_allow_download.is_some() {
7861 return Err(::serde::de::Error::duplicate_field("can_allow_download"));
7862 }
7863 field_can_allow_download = Some(map.next_value()?);
7864 }
7865 "can_disallow_download" => {
7866 if field_can_disallow_download.is_some() {
7867 return Err(::serde::de::Error::duplicate_field("can_disallow_download"));
7868 }
7869 field_can_disallow_download = Some(map.next_value()?);
7870 }
7871 "allow_comments" => {
7872 if field_allow_comments.is_some() {
7873 return Err(::serde::de::Error::duplicate_field("allow_comments"));
7874 }
7875 field_allow_comments = Some(map.next_value()?);
7876 }
7877 "team_restricts_comments" => {
7878 if field_team_restricts_comments.is_some() {
7879 return Err(::serde::de::Error::duplicate_field("team_restricts_comments"));
7880 }
7881 field_team_restricts_comments = Some(map.next_value()?);
7882 }
7883 "resolved_visibility" => {
7884 if field_resolved_visibility.is_some() {
7885 return Err(::serde::de::Error::duplicate_field("resolved_visibility"));
7886 }
7887 field_resolved_visibility = Some(map.next_value()?);
7888 }
7889 "requested_visibility" => {
7890 if field_requested_visibility.is_some() {
7891 return Err(::serde::de::Error::duplicate_field("requested_visibility"));
7892 }
7893 field_requested_visibility = Some(map.next_value()?);
7894 }
7895 "revoke_failure_reason" => {
7896 if field_revoke_failure_reason.is_some() {
7897 return Err(::serde::de::Error::duplicate_field("revoke_failure_reason"));
7898 }
7899 field_revoke_failure_reason = Some(map.next_value()?);
7900 }
7901 "effective_audience" => {
7902 if field_effective_audience.is_some() {
7903 return Err(::serde::de::Error::duplicate_field("effective_audience"));
7904 }
7905 field_effective_audience = Some(map.next_value()?);
7906 }
7907 "link_access_level" => {
7908 if field_link_access_level.is_some() {
7909 return Err(::serde::de::Error::duplicate_field("link_access_level"));
7910 }
7911 field_link_access_level = Some(map.next_value()?);
7912 }
7913 "audience_options" => {
7914 if field_audience_options.is_some() {
7915 return Err(::serde::de::Error::duplicate_field("audience_options"));
7916 }
7917 field_audience_options = Some(map.next_value()?);
7918 }
7919 "can_set_password" => {
7920 if field_can_set_password.is_some() {
7921 return Err(::serde::de::Error::duplicate_field("can_set_password"));
7922 }
7923 field_can_set_password = Some(map.next_value()?);
7924 }
7925 "can_remove_password" => {
7926 if field_can_remove_password.is_some() {
7927 return Err(::serde::de::Error::duplicate_field("can_remove_password"));
7928 }
7929 field_can_remove_password = Some(map.next_value()?);
7930 }
7931 "require_password" => {
7932 if field_require_password.is_some() {
7933 return Err(::serde::de::Error::duplicate_field("require_password"));
7934 }
7935 field_require_password = Some(map.next_value()?);
7936 }
7937 "can_use_extended_sharing_controls" => {
7938 if field_can_use_extended_sharing_controls.is_some() {
7939 return Err(::serde::de::Error::duplicate_field("can_use_extended_sharing_controls"));
7940 }
7941 field_can_use_extended_sharing_controls = Some(map.next_value()?);
7942 }
7943 "can_sync" => {
7944 if field_can_sync.is_some() {
7945 return Err(::serde::de::Error::duplicate_field("can_sync"));
7946 }
7947 field_can_sync = Some(map.next_value()?);
7948 }
7949 "can_request_access" => {
7950 if field_can_request_access.is_some() {
7951 return Err(::serde::de::Error::duplicate_field("can_request_access"));
7952 }
7953 field_can_request_access = Some(map.next_value()?);
7954 }
7955 "enforce_shared_link_password_policy" => {
7956 if field_enforce_shared_link_password_policy.is_some() {
7957 return Err(::serde::de::Error::duplicate_field("enforce_shared_link_password_policy"));
7958 }
7959 field_enforce_shared_link_password_policy = Some(map.next_value()?);
7960 }
7961 "days_to_expire_policy" => {
7962 if field_days_to_expire_policy.is_some() {
7963 return Err(::serde::de::Error::duplicate_field("days_to_expire_policy"));
7964 }
7965 field_days_to_expire_policy = Some(map.next_value()?);
7966 }
7967 "change_shared_link_expiration_policy" => {
7968 if field_change_shared_link_expiration_policy.is_some() {
7969 return Err(::serde::de::Error::duplicate_field("change_shared_link_expiration_policy"));
7970 }
7971 field_change_shared_link_expiration_policy = Some(map.next_value()?);
7972 }
7973 _ => {
7974 map.next_value::<::serde_json::Value>()?;
7976 }
7977 }
7978 }
7979 if optional && nothing {
7980 return Ok(None);
7981 }
7982 let result = LinkPermissions {
7983 can_revoke: field_can_revoke.ok_or_else(|| ::serde::de::Error::missing_field("can_revoke"))?,
7984 visibility_policies: field_visibility_policies.ok_or_else(|| ::serde::de::Error::missing_field("visibility_policies"))?,
7985 can_set_expiry: field_can_set_expiry.ok_or_else(|| ::serde::de::Error::missing_field("can_set_expiry"))?,
7986 can_remove_expiry: field_can_remove_expiry.ok_or_else(|| ::serde::de::Error::missing_field("can_remove_expiry"))?,
7987 allow_download: field_allow_download.ok_or_else(|| ::serde::de::Error::missing_field("allow_download"))?,
7988 can_allow_download: field_can_allow_download.ok_or_else(|| ::serde::de::Error::missing_field("can_allow_download"))?,
7989 can_disallow_download: field_can_disallow_download.ok_or_else(|| ::serde::de::Error::missing_field("can_disallow_download"))?,
7990 #[allow(deprecated)] allow_comments: field_allow_comments.ok_or_else(|| ::serde::de::Error::missing_field("allow_comments"))?,
7991 #[allow(deprecated)] team_restricts_comments: field_team_restricts_comments.ok_or_else(|| ::serde::de::Error::missing_field("team_restricts_comments"))?,
7992 resolved_visibility: field_resolved_visibility.and_then(Option::flatten),
7993 requested_visibility: field_requested_visibility.and_then(Option::flatten),
7994 revoke_failure_reason: field_revoke_failure_reason.and_then(Option::flatten),
7995 effective_audience: field_effective_audience.and_then(Option::flatten),
7996 link_access_level: field_link_access_level.and_then(Option::flatten),
7997 audience_options: field_audience_options.and_then(Option::flatten),
7998 can_set_password: field_can_set_password.and_then(Option::flatten),
7999 can_remove_password: field_can_remove_password.and_then(Option::flatten),
8000 require_password: field_require_password.and_then(Option::flatten),
8001 can_use_extended_sharing_controls: field_can_use_extended_sharing_controls.and_then(Option::flatten),
8002 can_sync: field_can_sync.and_then(Option::flatten),
8003 can_request_access: field_can_request_access.and_then(Option::flatten),
8004 enforce_shared_link_password_policy: field_enforce_shared_link_password_policy.and_then(Option::flatten),
8005 days_to_expire_policy: field_days_to_expire_policy.and_then(Option::flatten),
8006 change_shared_link_expiration_policy: field_change_shared_link_expiration_policy.and_then(Option::flatten),
8007 };
8008 Ok(Some(result))
8009 }
8010
8011 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8012 &self,
8013 s: &mut S::SerializeStruct,
8014 ) -> Result<(), S::Error> {
8015 use serde::ser::SerializeStruct;
8016 s.serialize_field("can_revoke", &self.can_revoke)?;
8017 s.serialize_field("visibility_policies", &self.visibility_policies)?;
8018 s.serialize_field("can_set_expiry", &self.can_set_expiry)?;
8019 s.serialize_field("can_remove_expiry", &self.can_remove_expiry)?;
8020 s.serialize_field("allow_download", &self.allow_download)?;
8021 s.serialize_field("can_allow_download", &self.can_allow_download)?;
8022 s.serialize_field("can_disallow_download", &self.can_disallow_download)?;
8023 #[allow(deprecated)]
8024 s.serialize_field("allow_comments", &self.allow_comments)?;
8025 #[allow(deprecated)]
8026 s.serialize_field("team_restricts_comments", &self.team_restricts_comments)?;
8027 if let Some(val) = &self.resolved_visibility {
8028 s.serialize_field("resolved_visibility", val)?;
8029 }
8030 if let Some(val) = &self.requested_visibility {
8031 s.serialize_field("requested_visibility", val)?;
8032 }
8033 if let Some(val) = &self.revoke_failure_reason {
8034 s.serialize_field("revoke_failure_reason", val)?;
8035 }
8036 if let Some(val) = &self.effective_audience {
8037 s.serialize_field("effective_audience", val)?;
8038 }
8039 if let Some(val) = &self.link_access_level {
8040 s.serialize_field("link_access_level", val)?;
8041 }
8042 if let Some(val) = &self.audience_options {
8043 s.serialize_field("audience_options", val)?;
8044 }
8045 if let Some(val) = &self.can_set_password {
8046 s.serialize_field("can_set_password", val)?;
8047 }
8048 if let Some(val) = &self.can_remove_password {
8049 s.serialize_field("can_remove_password", val)?;
8050 }
8051 if let Some(val) = &self.require_password {
8052 s.serialize_field("require_password", val)?;
8053 }
8054 if let Some(val) = &self.can_use_extended_sharing_controls {
8055 s.serialize_field("can_use_extended_sharing_controls", val)?;
8056 }
8057 if let Some(val) = &self.can_sync {
8058 s.serialize_field("can_sync", val)?;
8059 }
8060 if let Some(val) = &self.can_request_access {
8061 s.serialize_field("can_request_access", val)?;
8062 }
8063 if let Some(val) = &self.enforce_shared_link_password_policy {
8064 s.serialize_field("enforce_shared_link_password_policy", val)?;
8065 }
8066 if let Some(val) = &self.days_to_expire_policy {
8067 s.serialize_field("days_to_expire_policy", val)?;
8068 }
8069 if let Some(val) = &self.change_shared_link_expiration_policy {
8070 s.serialize_field("change_shared_link_expiration_policy", val)?;
8071 }
8072 Ok(())
8073 }
8074}
8075
8076impl<'de> ::serde::de::Deserialize<'de> for LinkPermissions {
8077 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8078 use serde::de::{MapAccess, Visitor};
8080 struct StructVisitor;
8081 impl<'de> Visitor<'de> for StructVisitor {
8082 type Value = LinkPermissions;
8083 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8084 f.write_str("a LinkPermissions struct")
8085 }
8086 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8087 LinkPermissions::internal_deserialize(map)
8088 }
8089 }
8090 deserializer.deserialize_struct("LinkPermissions", LINK_PERMISSIONS_FIELDS, StructVisitor)
8091 }
8092}
8093
8094impl ::serde::ser::Serialize for LinkPermissions {
8095 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8096 use serde::ser::SerializeStruct;
8098 let mut s = serializer.serialize_struct("LinkPermissions", 24)?;
8099 self.internal_serialize::<S>(&mut s)?;
8100 s.end()
8101 }
8102}
8103
8104#[derive(Debug, Clone, PartialEq, Eq, Default)]
8106#[non_exhaustive] pub struct LinkSettings {
8108 pub access_level: Option<AccessLevel>,
8111 pub audience: Option<LinkAudience>,
8113 pub expiry: Option<LinkExpiry>,
8115 pub password: Option<LinkPassword>,
8117}
8118
8119impl LinkSettings {
8120 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
8121 self.access_level = Some(value);
8122 self
8123 }
8124
8125 pub fn with_audience(mut self, value: LinkAudience) -> Self {
8126 self.audience = Some(value);
8127 self
8128 }
8129
8130 pub fn with_expiry(mut self, value: LinkExpiry) -> Self {
8131 self.expiry = Some(value);
8132 self
8133 }
8134
8135 pub fn with_password(mut self, value: LinkPassword) -> Self {
8136 self.password = Some(value);
8137 self
8138 }
8139}
8140
8141const LINK_SETTINGS_FIELDS: &[&str] = &["access_level",
8142 "audience",
8143 "expiry",
8144 "password"];
8145impl LinkSettings {
8146 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8148 mut map: V,
8149 ) -> Result<LinkSettings, V::Error> {
8150 let mut field_access_level = None;
8151 let mut field_audience = None;
8152 let mut field_expiry = None;
8153 let mut field_password = None;
8154 while let Some(key) = map.next_key::<&str>()? {
8155 match key {
8156 "access_level" => {
8157 if field_access_level.is_some() {
8158 return Err(::serde::de::Error::duplicate_field("access_level"));
8159 }
8160 field_access_level = Some(map.next_value()?);
8161 }
8162 "audience" => {
8163 if field_audience.is_some() {
8164 return Err(::serde::de::Error::duplicate_field("audience"));
8165 }
8166 field_audience = Some(map.next_value()?);
8167 }
8168 "expiry" => {
8169 if field_expiry.is_some() {
8170 return Err(::serde::de::Error::duplicate_field("expiry"));
8171 }
8172 field_expiry = Some(map.next_value()?);
8173 }
8174 "password" => {
8175 if field_password.is_some() {
8176 return Err(::serde::de::Error::duplicate_field("password"));
8177 }
8178 field_password = Some(map.next_value()?);
8179 }
8180 _ => {
8181 map.next_value::<::serde_json::Value>()?;
8183 }
8184 }
8185 }
8186 let result = LinkSettings {
8187 access_level: field_access_level.and_then(Option::flatten),
8188 audience: field_audience.and_then(Option::flatten),
8189 expiry: field_expiry.and_then(Option::flatten),
8190 password: field_password.and_then(Option::flatten),
8191 };
8192 Ok(result)
8193 }
8194
8195 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8196 &self,
8197 s: &mut S::SerializeStruct,
8198 ) -> Result<(), S::Error> {
8199 use serde::ser::SerializeStruct;
8200 if let Some(val) = &self.access_level {
8201 s.serialize_field("access_level", val)?;
8202 }
8203 if let Some(val) = &self.audience {
8204 s.serialize_field("audience", val)?;
8205 }
8206 if let Some(val) = &self.expiry {
8207 s.serialize_field("expiry", val)?;
8208 }
8209 if let Some(val) = &self.password {
8210 s.serialize_field("password", val)?;
8211 }
8212 Ok(())
8213 }
8214}
8215
8216impl<'de> ::serde::de::Deserialize<'de> for LinkSettings {
8217 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8218 use serde::de::{MapAccess, Visitor};
8220 struct StructVisitor;
8221 impl<'de> Visitor<'de> for StructVisitor {
8222 type Value = LinkSettings;
8223 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8224 f.write_str("a LinkSettings struct")
8225 }
8226 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8227 LinkSettings::internal_deserialize(map)
8228 }
8229 }
8230 deserializer.deserialize_struct("LinkSettings", LINK_SETTINGS_FIELDS, StructVisitor)
8231 }
8232}
8233
8234impl ::serde::ser::Serialize for LinkSettings {
8235 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8236 use serde::ser::SerializeStruct;
8238 let mut s = serializer.serialize_struct("LinkSettings", 4)?;
8239 self.internal_serialize::<S>(&mut s)?;
8240 s.end()
8241 }
8242}
8243
8244#[derive(Debug, Clone, PartialEq, Eq)]
8246#[non_exhaustive] pub struct ListFileMembersArg {
8248 pub file: PathOrId,
8250 pub actions: Option<Vec<MemberAction>>,
8252 pub include_inherited: bool,
8254 pub limit: u32,
8256}
8257
8258impl ListFileMembersArg {
8259 pub fn new(file: PathOrId) -> Self {
8260 ListFileMembersArg {
8261 file,
8262 actions: None,
8263 include_inherited: true,
8264 limit: 100,
8265 }
8266 }
8267
8268 pub fn with_actions(mut self, value: Vec<MemberAction>) -> Self {
8269 self.actions = Some(value);
8270 self
8271 }
8272
8273 pub fn with_include_inherited(mut self, value: bool) -> Self {
8274 self.include_inherited = value;
8275 self
8276 }
8277
8278 pub fn with_limit(mut self, value: u32) -> Self {
8279 self.limit = value;
8280 self
8281 }
8282}
8283
8284const LIST_FILE_MEMBERS_ARG_FIELDS: &[&str] = &["file",
8285 "actions",
8286 "include_inherited",
8287 "limit"];
8288impl ListFileMembersArg {
8289 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8290 map: V,
8291 ) -> Result<ListFileMembersArg, V::Error> {
8292 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8293 }
8294
8295 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8296 mut map: V,
8297 optional: bool,
8298 ) -> Result<Option<ListFileMembersArg>, V::Error> {
8299 let mut field_file = None;
8300 let mut field_actions = None;
8301 let mut field_include_inherited = None;
8302 let mut field_limit = None;
8303 let mut nothing = true;
8304 while let Some(key) = map.next_key::<&str>()? {
8305 nothing = false;
8306 match key {
8307 "file" => {
8308 if field_file.is_some() {
8309 return Err(::serde::de::Error::duplicate_field("file"));
8310 }
8311 field_file = Some(map.next_value()?);
8312 }
8313 "actions" => {
8314 if field_actions.is_some() {
8315 return Err(::serde::de::Error::duplicate_field("actions"));
8316 }
8317 field_actions = Some(map.next_value()?);
8318 }
8319 "include_inherited" => {
8320 if field_include_inherited.is_some() {
8321 return Err(::serde::de::Error::duplicate_field("include_inherited"));
8322 }
8323 field_include_inherited = Some(map.next_value()?);
8324 }
8325 "limit" => {
8326 if field_limit.is_some() {
8327 return Err(::serde::de::Error::duplicate_field("limit"));
8328 }
8329 field_limit = Some(map.next_value()?);
8330 }
8331 _ => {
8332 map.next_value::<::serde_json::Value>()?;
8334 }
8335 }
8336 }
8337 if optional && nothing {
8338 return Ok(None);
8339 }
8340 let result = ListFileMembersArg {
8341 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
8342 actions: field_actions.and_then(Option::flatten),
8343 include_inherited: field_include_inherited.unwrap_or(true),
8344 limit: field_limit.unwrap_or(100),
8345 };
8346 Ok(Some(result))
8347 }
8348
8349 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8350 &self,
8351 s: &mut S::SerializeStruct,
8352 ) -> Result<(), S::Error> {
8353 use serde::ser::SerializeStruct;
8354 s.serialize_field("file", &self.file)?;
8355 if let Some(val) = &self.actions {
8356 s.serialize_field("actions", val)?;
8357 }
8358 if !self.include_inherited {
8359 s.serialize_field("include_inherited", &self.include_inherited)?;
8360 }
8361 if self.limit != 100 {
8362 s.serialize_field("limit", &self.limit)?;
8363 }
8364 Ok(())
8365 }
8366}
8367
8368impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersArg {
8369 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8370 use serde::de::{MapAccess, Visitor};
8372 struct StructVisitor;
8373 impl<'de> Visitor<'de> for StructVisitor {
8374 type Value = ListFileMembersArg;
8375 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8376 f.write_str("a ListFileMembersArg struct")
8377 }
8378 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8379 ListFileMembersArg::internal_deserialize(map)
8380 }
8381 }
8382 deserializer.deserialize_struct("ListFileMembersArg", LIST_FILE_MEMBERS_ARG_FIELDS, StructVisitor)
8383 }
8384}
8385
8386impl ::serde::ser::Serialize for ListFileMembersArg {
8387 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8388 use serde::ser::SerializeStruct;
8390 let mut s = serializer.serialize_struct("ListFileMembersArg", 4)?;
8391 self.internal_serialize::<S>(&mut s)?;
8392 s.end()
8393 }
8394}
8395
8396#[derive(Debug, Clone, PartialEq, Eq)]
8398#[non_exhaustive] pub struct ListFileMembersBatchArg {
8400 pub files: Vec<PathOrId>,
8402 pub limit: u32,
8404}
8405
8406impl ListFileMembersBatchArg {
8407 pub fn new(files: Vec<PathOrId>) -> Self {
8408 ListFileMembersBatchArg {
8409 files,
8410 limit: 1000,
8411 }
8412 }
8413
8414 pub fn with_limit(mut self, value: u32) -> Self {
8415 self.limit = value;
8416 self
8417 }
8418}
8419
8420const LIST_FILE_MEMBERS_BATCH_ARG_FIELDS: &[&str] = &["files",
8421 "limit"];
8422impl ListFileMembersBatchArg {
8423 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8424 map: V,
8425 ) -> Result<ListFileMembersBatchArg, V::Error> {
8426 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8427 }
8428
8429 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8430 mut map: V,
8431 optional: bool,
8432 ) -> Result<Option<ListFileMembersBatchArg>, V::Error> {
8433 let mut field_files = None;
8434 let mut field_limit = None;
8435 let mut nothing = true;
8436 while let Some(key) = map.next_key::<&str>()? {
8437 nothing = false;
8438 match key {
8439 "files" => {
8440 if field_files.is_some() {
8441 return Err(::serde::de::Error::duplicate_field("files"));
8442 }
8443 field_files = Some(map.next_value()?);
8444 }
8445 "limit" => {
8446 if field_limit.is_some() {
8447 return Err(::serde::de::Error::duplicate_field("limit"));
8448 }
8449 field_limit = Some(map.next_value()?);
8450 }
8451 _ => {
8452 map.next_value::<::serde_json::Value>()?;
8454 }
8455 }
8456 }
8457 if optional && nothing {
8458 return Ok(None);
8459 }
8460 let result = ListFileMembersBatchArg {
8461 files: field_files.ok_or_else(|| ::serde::de::Error::missing_field("files"))?,
8462 limit: field_limit.unwrap_or(1000),
8463 };
8464 Ok(Some(result))
8465 }
8466
8467 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8468 &self,
8469 s: &mut S::SerializeStruct,
8470 ) -> Result<(), S::Error> {
8471 use serde::ser::SerializeStruct;
8472 s.serialize_field("files", &self.files)?;
8473 if self.limit != 1000 {
8474 s.serialize_field("limit", &self.limit)?;
8475 }
8476 Ok(())
8477 }
8478}
8479
8480impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersBatchArg {
8481 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8482 use serde::de::{MapAccess, Visitor};
8484 struct StructVisitor;
8485 impl<'de> Visitor<'de> for StructVisitor {
8486 type Value = ListFileMembersBatchArg;
8487 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8488 f.write_str("a ListFileMembersBatchArg struct")
8489 }
8490 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8491 ListFileMembersBatchArg::internal_deserialize(map)
8492 }
8493 }
8494 deserializer.deserialize_struct("ListFileMembersBatchArg", LIST_FILE_MEMBERS_BATCH_ARG_FIELDS, StructVisitor)
8495 }
8496}
8497
8498impl ::serde::ser::Serialize for ListFileMembersBatchArg {
8499 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8500 use serde::ser::SerializeStruct;
8502 let mut s = serializer.serialize_struct("ListFileMembersBatchArg", 2)?;
8503 self.internal_serialize::<S>(&mut s)?;
8504 s.end()
8505 }
8506}
8507
8508#[derive(Debug, Clone, PartialEq, Eq)]
8510#[non_exhaustive] pub struct ListFileMembersBatchResult {
8512 pub file: PathOrId,
8514 pub result: ListFileMembersIndividualResult,
8516}
8517
8518impl ListFileMembersBatchResult {
8519 pub fn new(file: PathOrId, result: ListFileMembersIndividualResult) -> Self {
8520 ListFileMembersBatchResult {
8521 file,
8522 result,
8523 }
8524 }
8525}
8526
8527const LIST_FILE_MEMBERS_BATCH_RESULT_FIELDS: &[&str] = &["file",
8528 "result"];
8529impl ListFileMembersBatchResult {
8530 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8531 map: V,
8532 ) -> Result<ListFileMembersBatchResult, V::Error> {
8533 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8534 }
8535
8536 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8537 mut map: V,
8538 optional: bool,
8539 ) -> Result<Option<ListFileMembersBatchResult>, V::Error> {
8540 let mut field_file = None;
8541 let mut field_result = None;
8542 let mut nothing = true;
8543 while let Some(key) = map.next_key::<&str>()? {
8544 nothing = false;
8545 match key {
8546 "file" => {
8547 if field_file.is_some() {
8548 return Err(::serde::de::Error::duplicate_field("file"));
8549 }
8550 field_file = Some(map.next_value()?);
8551 }
8552 "result" => {
8553 if field_result.is_some() {
8554 return Err(::serde::de::Error::duplicate_field("result"));
8555 }
8556 field_result = Some(map.next_value()?);
8557 }
8558 _ => {
8559 map.next_value::<::serde_json::Value>()?;
8561 }
8562 }
8563 }
8564 if optional && nothing {
8565 return Ok(None);
8566 }
8567 let result = ListFileMembersBatchResult {
8568 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
8569 result: field_result.ok_or_else(|| ::serde::de::Error::missing_field("result"))?,
8570 };
8571 Ok(Some(result))
8572 }
8573
8574 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8575 &self,
8576 s: &mut S::SerializeStruct,
8577 ) -> Result<(), S::Error> {
8578 use serde::ser::SerializeStruct;
8579 s.serialize_field("file", &self.file)?;
8580 s.serialize_field("result", &self.result)?;
8581 Ok(())
8582 }
8583}
8584
8585impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersBatchResult {
8586 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8587 use serde::de::{MapAccess, Visitor};
8589 struct StructVisitor;
8590 impl<'de> Visitor<'de> for StructVisitor {
8591 type Value = ListFileMembersBatchResult;
8592 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8593 f.write_str("a ListFileMembersBatchResult struct")
8594 }
8595 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8596 ListFileMembersBatchResult::internal_deserialize(map)
8597 }
8598 }
8599 deserializer.deserialize_struct("ListFileMembersBatchResult", LIST_FILE_MEMBERS_BATCH_RESULT_FIELDS, StructVisitor)
8600 }
8601}
8602
8603impl ::serde::ser::Serialize for ListFileMembersBatchResult {
8604 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8605 use serde::ser::SerializeStruct;
8607 let mut s = serializer.serialize_struct("ListFileMembersBatchResult", 2)?;
8608 self.internal_serialize::<S>(&mut s)?;
8609 s.end()
8610 }
8611}
8612
8613#[derive(Debug, Clone, PartialEq, Eq)]
8615#[non_exhaustive] pub struct ListFileMembersContinueArg {
8617 pub cursor: String,
8622}
8623
8624impl ListFileMembersContinueArg {
8625 pub fn new(cursor: String) -> Self {
8626 ListFileMembersContinueArg {
8627 cursor,
8628 }
8629 }
8630}
8631
8632const LIST_FILE_MEMBERS_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
8633impl ListFileMembersContinueArg {
8634 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8635 map: V,
8636 ) -> Result<ListFileMembersContinueArg, V::Error> {
8637 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8638 }
8639
8640 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8641 mut map: V,
8642 optional: bool,
8643 ) -> Result<Option<ListFileMembersContinueArg>, V::Error> {
8644 let mut field_cursor = None;
8645 let mut nothing = true;
8646 while let Some(key) = map.next_key::<&str>()? {
8647 nothing = false;
8648 match key {
8649 "cursor" => {
8650 if field_cursor.is_some() {
8651 return Err(::serde::de::Error::duplicate_field("cursor"));
8652 }
8653 field_cursor = Some(map.next_value()?);
8654 }
8655 _ => {
8656 map.next_value::<::serde_json::Value>()?;
8658 }
8659 }
8660 }
8661 if optional && nothing {
8662 return Ok(None);
8663 }
8664 let result = ListFileMembersContinueArg {
8665 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
8666 };
8667 Ok(Some(result))
8668 }
8669
8670 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8671 &self,
8672 s: &mut S::SerializeStruct,
8673 ) -> Result<(), S::Error> {
8674 use serde::ser::SerializeStruct;
8675 s.serialize_field("cursor", &self.cursor)?;
8676 Ok(())
8677 }
8678}
8679
8680impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersContinueArg {
8681 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8682 use serde::de::{MapAccess, Visitor};
8684 struct StructVisitor;
8685 impl<'de> Visitor<'de> for StructVisitor {
8686 type Value = ListFileMembersContinueArg;
8687 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8688 f.write_str("a ListFileMembersContinueArg struct")
8689 }
8690 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8691 ListFileMembersContinueArg::internal_deserialize(map)
8692 }
8693 }
8694 deserializer.deserialize_struct("ListFileMembersContinueArg", LIST_FILE_MEMBERS_CONTINUE_ARG_FIELDS, StructVisitor)
8695 }
8696}
8697
8698impl ::serde::ser::Serialize for ListFileMembersContinueArg {
8699 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8700 use serde::ser::SerializeStruct;
8702 let mut s = serializer.serialize_struct("ListFileMembersContinueArg", 1)?;
8703 self.internal_serialize::<S>(&mut s)?;
8704 s.end()
8705 }
8706}
8707
8708#[derive(Debug, Clone, PartialEq, Eq)]
8710#[non_exhaustive] pub enum ListFileMembersContinueError {
8712 UserError(SharingUserError),
8713 AccessError(SharingFileAccessError),
8714 InvalidCursor,
8716 Other,
8719}
8720
8721impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersContinueError {
8722 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8723 use serde::de::{self, MapAccess, Visitor};
8725 struct EnumVisitor;
8726 impl<'de> Visitor<'de> for EnumVisitor {
8727 type Value = ListFileMembersContinueError;
8728 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8729 f.write_str("a ListFileMembersContinueError structure")
8730 }
8731 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
8732 let tag: &str = match map.next_key()? {
8733 Some(".tag") => map.next_value()?,
8734 _ => return Err(de::Error::missing_field(".tag"))
8735 };
8736 let value = match tag {
8737 "user_error" => {
8738 match map.next_key()? {
8739 Some("user_error") => ListFileMembersContinueError::UserError(map.next_value()?),
8740 None => return Err(de::Error::missing_field("user_error")),
8741 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8742 }
8743 }
8744 "access_error" => {
8745 match map.next_key()? {
8746 Some("access_error") => ListFileMembersContinueError::AccessError(map.next_value()?),
8747 None => return Err(de::Error::missing_field("access_error")),
8748 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8749 }
8750 }
8751 "invalid_cursor" => ListFileMembersContinueError::InvalidCursor,
8752 _ => ListFileMembersContinueError::Other,
8753 };
8754 crate::eat_json_fields(&mut map)?;
8755 Ok(value)
8756 }
8757 }
8758 const VARIANTS: &[&str] = &["user_error",
8759 "access_error",
8760 "invalid_cursor",
8761 "other"];
8762 deserializer.deserialize_struct("ListFileMembersContinueError", VARIANTS, EnumVisitor)
8763 }
8764}
8765
8766impl ::serde::ser::Serialize for ListFileMembersContinueError {
8767 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8768 use serde::ser::SerializeStruct;
8770 match self {
8771 ListFileMembersContinueError::UserError(x) => {
8772 let mut s = serializer.serialize_struct("ListFileMembersContinueError", 2)?;
8774 s.serialize_field(".tag", "user_error")?;
8775 s.serialize_field("user_error", x)?;
8776 s.end()
8777 }
8778 ListFileMembersContinueError::AccessError(x) => {
8779 let mut s = serializer.serialize_struct("ListFileMembersContinueError", 2)?;
8781 s.serialize_field(".tag", "access_error")?;
8782 s.serialize_field("access_error", x)?;
8783 s.end()
8784 }
8785 ListFileMembersContinueError::InvalidCursor => {
8786 let mut s = serializer.serialize_struct("ListFileMembersContinueError", 1)?;
8788 s.serialize_field(".tag", "invalid_cursor")?;
8789 s.end()
8790 }
8791 ListFileMembersContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
8792 }
8793 }
8794}
8795
8796impl ::std::error::Error for ListFileMembersContinueError {
8797 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
8798 match self {
8799 ListFileMembersContinueError::UserError(inner) => Some(inner),
8800 ListFileMembersContinueError::AccessError(inner) => Some(inner),
8801 _ => None,
8802 }
8803 }
8804}
8805
8806impl ::std::fmt::Display for ListFileMembersContinueError {
8807 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8808 match self {
8809 ListFileMembersContinueError::UserError(inner) => write!(f, "ListFileMembersContinueError: {}", inner),
8810 ListFileMembersContinueError::AccessError(inner) => write!(f, "ListFileMembersContinueError: {}", inner),
8811 _ => write!(f, "{:?}", *self),
8812 }
8813 }
8814}
8815
8816#[derive(Debug, Clone, PartialEq, Eq)]
8817#[non_exhaustive] pub struct ListFileMembersCountResult {
8819 pub members: SharedFileMembers,
8821 pub member_count: u32,
8823}
8824
8825impl ListFileMembersCountResult {
8826 pub fn new(members: SharedFileMembers, member_count: u32) -> Self {
8827 ListFileMembersCountResult {
8828 members,
8829 member_count,
8830 }
8831 }
8832}
8833
8834const LIST_FILE_MEMBERS_COUNT_RESULT_FIELDS: &[&str] = &["members",
8835 "member_count"];
8836impl ListFileMembersCountResult {
8837 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
8838 map: V,
8839 ) -> Result<ListFileMembersCountResult, V::Error> {
8840 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
8841 }
8842
8843 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
8844 mut map: V,
8845 optional: bool,
8846 ) -> Result<Option<ListFileMembersCountResult>, V::Error> {
8847 let mut field_members = None;
8848 let mut field_member_count = None;
8849 let mut nothing = true;
8850 while let Some(key) = map.next_key::<&str>()? {
8851 nothing = false;
8852 match key {
8853 "members" => {
8854 if field_members.is_some() {
8855 return Err(::serde::de::Error::duplicate_field("members"));
8856 }
8857 field_members = Some(map.next_value()?);
8858 }
8859 "member_count" => {
8860 if field_member_count.is_some() {
8861 return Err(::serde::de::Error::duplicate_field("member_count"));
8862 }
8863 field_member_count = Some(map.next_value()?);
8864 }
8865 _ => {
8866 map.next_value::<::serde_json::Value>()?;
8868 }
8869 }
8870 }
8871 if optional && nothing {
8872 return Ok(None);
8873 }
8874 let result = ListFileMembersCountResult {
8875 members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?,
8876 member_count: field_member_count.ok_or_else(|| ::serde::de::Error::missing_field("member_count"))?,
8877 };
8878 Ok(Some(result))
8879 }
8880
8881 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
8882 &self,
8883 s: &mut S::SerializeStruct,
8884 ) -> Result<(), S::Error> {
8885 use serde::ser::SerializeStruct;
8886 s.serialize_field("members", &self.members)?;
8887 s.serialize_field("member_count", &self.member_count)?;
8888 Ok(())
8889 }
8890}
8891
8892impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersCountResult {
8893 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8894 use serde::de::{MapAccess, Visitor};
8896 struct StructVisitor;
8897 impl<'de> Visitor<'de> for StructVisitor {
8898 type Value = ListFileMembersCountResult;
8899 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8900 f.write_str("a ListFileMembersCountResult struct")
8901 }
8902 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
8903 ListFileMembersCountResult::internal_deserialize(map)
8904 }
8905 }
8906 deserializer.deserialize_struct("ListFileMembersCountResult", LIST_FILE_MEMBERS_COUNT_RESULT_FIELDS, StructVisitor)
8907 }
8908}
8909
8910impl ::serde::ser::Serialize for ListFileMembersCountResult {
8911 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8912 use serde::ser::SerializeStruct;
8914 let mut s = serializer.serialize_struct("ListFileMembersCountResult", 2)?;
8915 self.internal_serialize::<S>(&mut s)?;
8916 s.end()
8917 }
8918}
8919
8920#[derive(Debug, Clone, PartialEq, Eq)]
8922#[non_exhaustive] pub enum ListFileMembersError {
8924 UserError(SharingUserError),
8925 AccessError(SharingFileAccessError),
8926 Other,
8929}
8930
8931impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersError {
8932 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
8933 use serde::de::{self, MapAccess, Visitor};
8935 struct EnumVisitor;
8936 impl<'de> Visitor<'de> for EnumVisitor {
8937 type Value = ListFileMembersError;
8938 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8939 f.write_str("a ListFileMembersError structure")
8940 }
8941 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
8942 let tag: &str = match map.next_key()? {
8943 Some(".tag") => map.next_value()?,
8944 _ => return Err(de::Error::missing_field(".tag"))
8945 };
8946 let value = match tag {
8947 "user_error" => {
8948 match map.next_key()? {
8949 Some("user_error") => ListFileMembersError::UserError(map.next_value()?),
8950 None => return Err(de::Error::missing_field("user_error")),
8951 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8952 }
8953 }
8954 "access_error" => {
8955 match map.next_key()? {
8956 Some("access_error") => ListFileMembersError::AccessError(map.next_value()?),
8957 None => return Err(de::Error::missing_field("access_error")),
8958 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
8959 }
8960 }
8961 _ => ListFileMembersError::Other,
8962 };
8963 crate::eat_json_fields(&mut map)?;
8964 Ok(value)
8965 }
8966 }
8967 const VARIANTS: &[&str] = &["user_error",
8968 "access_error",
8969 "other"];
8970 deserializer.deserialize_struct("ListFileMembersError", VARIANTS, EnumVisitor)
8971 }
8972}
8973
8974impl ::serde::ser::Serialize for ListFileMembersError {
8975 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8976 use serde::ser::SerializeStruct;
8978 match self {
8979 ListFileMembersError::UserError(x) => {
8980 let mut s = serializer.serialize_struct("ListFileMembersError", 2)?;
8982 s.serialize_field(".tag", "user_error")?;
8983 s.serialize_field("user_error", x)?;
8984 s.end()
8985 }
8986 ListFileMembersError::AccessError(x) => {
8987 let mut s = serializer.serialize_struct("ListFileMembersError", 2)?;
8989 s.serialize_field(".tag", "access_error")?;
8990 s.serialize_field("access_error", x)?;
8991 s.end()
8992 }
8993 ListFileMembersError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
8994 }
8995 }
8996}
8997
8998impl ::std::error::Error for ListFileMembersError {
8999 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
9000 match self {
9001 ListFileMembersError::UserError(inner) => Some(inner),
9002 ListFileMembersError::AccessError(inner) => Some(inner),
9003 _ => None,
9004 }
9005 }
9006}
9007
9008impl ::std::fmt::Display for ListFileMembersError {
9009 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9010 match self {
9011 ListFileMembersError::UserError(inner) => write!(f, "ListFileMembersError: {}", inner),
9012 ListFileMembersError::AccessError(inner) => write!(f, "ListFileMembersError: {}", inner),
9013 _ => write!(f, "{:?}", *self),
9014 }
9015 }
9016}
9017
9018#[derive(Debug, Clone, PartialEq, Eq)]
9019#[non_exhaustive] pub enum ListFileMembersIndividualResult {
9021 Result(ListFileMembersCountResult),
9023 AccessError(SharingFileAccessError),
9025 Other,
9028}
9029
9030impl<'de> ::serde::de::Deserialize<'de> for ListFileMembersIndividualResult {
9031 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9032 use serde::de::{self, MapAccess, Visitor};
9034 struct EnumVisitor;
9035 impl<'de> Visitor<'de> for EnumVisitor {
9036 type Value = ListFileMembersIndividualResult;
9037 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9038 f.write_str("a ListFileMembersIndividualResult structure")
9039 }
9040 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
9041 let tag: &str = match map.next_key()? {
9042 Some(".tag") => map.next_value()?,
9043 _ => return Err(de::Error::missing_field(".tag"))
9044 };
9045 let value = match tag {
9046 "result" => ListFileMembersIndividualResult::Result(ListFileMembersCountResult::internal_deserialize(&mut map)?),
9047 "access_error" => {
9048 match map.next_key()? {
9049 Some("access_error") => ListFileMembersIndividualResult::AccessError(map.next_value()?),
9050 None => return Err(de::Error::missing_field("access_error")),
9051 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
9052 }
9053 }
9054 _ => ListFileMembersIndividualResult::Other,
9055 };
9056 crate::eat_json_fields(&mut map)?;
9057 Ok(value)
9058 }
9059 }
9060 const VARIANTS: &[&str] = &["result",
9061 "access_error",
9062 "other"];
9063 deserializer.deserialize_struct("ListFileMembersIndividualResult", VARIANTS, EnumVisitor)
9064 }
9065}
9066
9067impl ::serde::ser::Serialize for ListFileMembersIndividualResult {
9068 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9069 use serde::ser::SerializeStruct;
9071 match self {
9072 ListFileMembersIndividualResult::Result(x) => {
9073 let mut s = serializer.serialize_struct("ListFileMembersIndividualResult", 3)?;
9075 s.serialize_field(".tag", "result")?;
9076 x.internal_serialize::<S>(&mut s)?;
9077 s.end()
9078 }
9079 ListFileMembersIndividualResult::AccessError(x) => {
9080 let mut s = serializer.serialize_struct("ListFileMembersIndividualResult", 2)?;
9082 s.serialize_field(".tag", "access_error")?;
9083 s.serialize_field("access_error", x)?;
9084 s.end()
9085 }
9086 ListFileMembersIndividualResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
9087 }
9088 }
9089}
9090
9091#[derive(Debug, Clone, PartialEq, Eq)]
9093#[non_exhaustive] pub struct ListFilesArg {
9095 pub limit: u32,
9097 pub actions: Option<Vec<FileAction>>,
9101}
9102
9103impl Default for ListFilesArg {
9104 fn default() -> Self {
9105 ListFilesArg {
9106 limit: 100,
9107 actions: None,
9108 }
9109 }
9110}
9111
9112impl ListFilesArg {
9113 pub fn with_limit(mut self, value: u32) -> Self {
9114 self.limit = value;
9115 self
9116 }
9117
9118 pub fn with_actions(mut self, value: Vec<FileAction>) -> Self {
9119 self.actions = Some(value);
9120 self
9121 }
9122}
9123
9124const LIST_FILES_ARG_FIELDS: &[&str] = &["limit",
9125 "actions"];
9126impl ListFilesArg {
9127 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9129 mut map: V,
9130 ) -> Result<ListFilesArg, V::Error> {
9131 let mut field_limit = None;
9132 let mut field_actions = None;
9133 while let Some(key) = map.next_key::<&str>()? {
9134 match key {
9135 "limit" => {
9136 if field_limit.is_some() {
9137 return Err(::serde::de::Error::duplicate_field("limit"));
9138 }
9139 field_limit = Some(map.next_value()?);
9140 }
9141 "actions" => {
9142 if field_actions.is_some() {
9143 return Err(::serde::de::Error::duplicate_field("actions"));
9144 }
9145 field_actions = Some(map.next_value()?);
9146 }
9147 _ => {
9148 map.next_value::<::serde_json::Value>()?;
9150 }
9151 }
9152 }
9153 let result = ListFilesArg {
9154 limit: field_limit.unwrap_or(100),
9155 actions: field_actions.and_then(Option::flatten),
9156 };
9157 Ok(result)
9158 }
9159
9160 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9161 &self,
9162 s: &mut S::SerializeStruct,
9163 ) -> Result<(), S::Error> {
9164 use serde::ser::SerializeStruct;
9165 if self.limit != 100 {
9166 s.serialize_field("limit", &self.limit)?;
9167 }
9168 if let Some(val) = &self.actions {
9169 s.serialize_field("actions", val)?;
9170 }
9171 Ok(())
9172 }
9173}
9174
9175impl<'de> ::serde::de::Deserialize<'de> for ListFilesArg {
9176 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9177 use serde::de::{MapAccess, Visitor};
9179 struct StructVisitor;
9180 impl<'de> Visitor<'de> for StructVisitor {
9181 type Value = ListFilesArg;
9182 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9183 f.write_str("a ListFilesArg struct")
9184 }
9185 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9186 ListFilesArg::internal_deserialize(map)
9187 }
9188 }
9189 deserializer.deserialize_struct("ListFilesArg", LIST_FILES_ARG_FIELDS, StructVisitor)
9190 }
9191}
9192
9193impl ::serde::ser::Serialize for ListFilesArg {
9194 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9195 use serde::ser::SerializeStruct;
9197 let mut s = serializer.serialize_struct("ListFilesArg", 2)?;
9198 self.internal_serialize::<S>(&mut s)?;
9199 s.end()
9200 }
9201}
9202
9203#[derive(Debug, Clone, PartialEq, Eq)]
9205#[non_exhaustive] pub struct ListFilesContinueArg {
9207 pub cursor: String,
9209}
9210
9211impl ListFilesContinueArg {
9212 pub fn new(cursor: String) -> Self {
9213 ListFilesContinueArg {
9214 cursor,
9215 }
9216 }
9217}
9218
9219const LIST_FILES_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
9220impl ListFilesContinueArg {
9221 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9222 map: V,
9223 ) -> Result<ListFilesContinueArg, V::Error> {
9224 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9225 }
9226
9227 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9228 mut map: V,
9229 optional: bool,
9230 ) -> Result<Option<ListFilesContinueArg>, V::Error> {
9231 let mut field_cursor = None;
9232 let mut nothing = true;
9233 while let Some(key) = map.next_key::<&str>()? {
9234 nothing = false;
9235 match key {
9236 "cursor" => {
9237 if field_cursor.is_some() {
9238 return Err(::serde::de::Error::duplicate_field("cursor"));
9239 }
9240 field_cursor = Some(map.next_value()?);
9241 }
9242 _ => {
9243 map.next_value::<::serde_json::Value>()?;
9245 }
9246 }
9247 }
9248 if optional && nothing {
9249 return Ok(None);
9250 }
9251 let result = ListFilesContinueArg {
9252 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
9253 };
9254 Ok(Some(result))
9255 }
9256
9257 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9258 &self,
9259 s: &mut S::SerializeStruct,
9260 ) -> Result<(), S::Error> {
9261 use serde::ser::SerializeStruct;
9262 s.serialize_field("cursor", &self.cursor)?;
9263 Ok(())
9264 }
9265}
9266
9267impl<'de> ::serde::de::Deserialize<'de> for ListFilesContinueArg {
9268 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9269 use serde::de::{MapAccess, Visitor};
9271 struct StructVisitor;
9272 impl<'de> Visitor<'de> for StructVisitor {
9273 type Value = ListFilesContinueArg;
9274 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9275 f.write_str("a ListFilesContinueArg struct")
9276 }
9277 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9278 ListFilesContinueArg::internal_deserialize(map)
9279 }
9280 }
9281 deserializer.deserialize_struct("ListFilesContinueArg", LIST_FILES_CONTINUE_ARG_FIELDS, StructVisitor)
9282 }
9283}
9284
9285impl ::serde::ser::Serialize for ListFilesContinueArg {
9286 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9287 use serde::ser::SerializeStruct;
9289 let mut s = serializer.serialize_struct("ListFilesContinueArg", 1)?;
9290 self.internal_serialize::<S>(&mut s)?;
9291 s.end()
9292 }
9293}
9294
9295#[derive(Debug, Clone, PartialEq, Eq)]
9298#[non_exhaustive] pub enum ListFilesContinueError {
9300 UserError(SharingUserError),
9302 InvalidCursor,
9304 Other,
9307}
9308
9309impl<'de> ::serde::de::Deserialize<'de> for ListFilesContinueError {
9310 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9311 use serde::de::{self, MapAccess, Visitor};
9313 struct EnumVisitor;
9314 impl<'de> Visitor<'de> for EnumVisitor {
9315 type Value = ListFilesContinueError;
9316 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9317 f.write_str("a ListFilesContinueError structure")
9318 }
9319 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
9320 let tag: &str = match map.next_key()? {
9321 Some(".tag") => map.next_value()?,
9322 _ => return Err(de::Error::missing_field(".tag"))
9323 };
9324 let value = match tag {
9325 "user_error" => {
9326 match map.next_key()? {
9327 Some("user_error") => ListFilesContinueError::UserError(map.next_value()?),
9328 None => return Err(de::Error::missing_field("user_error")),
9329 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
9330 }
9331 }
9332 "invalid_cursor" => ListFilesContinueError::InvalidCursor,
9333 _ => ListFilesContinueError::Other,
9334 };
9335 crate::eat_json_fields(&mut map)?;
9336 Ok(value)
9337 }
9338 }
9339 const VARIANTS: &[&str] = &["user_error",
9340 "invalid_cursor",
9341 "other"];
9342 deserializer.deserialize_struct("ListFilesContinueError", VARIANTS, EnumVisitor)
9343 }
9344}
9345
9346impl ::serde::ser::Serialize for ListFilesContinueError {
9347 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9348 use serde::ser::SerializeStruct;
9350 match self {
9351 ListFilesContinueError::UserError(x) => {
9352 let mut s = serializer.serialize_struct("ListFilesContinueError", 2)?;
9354 s.serialize_field(".tag", "user_error")?;
9355 s.serialize_field("user_error", x)?;
9356 s.end()
9357 }
9358 ListFilesContinueError::InvalidCursor => {
9359 let mut s = serializer.serialize_struct("ListFilesContinueError", 1)?;
9361 s.serialize_field(".tag", "invalid_cursor")?;
9362 s.end()
9363 }
9364 ListFilesContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
9365 }
9366 }
9367}
9368
9369impl ::std::error::Error for ListFilesContinueError {
9370 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
9371 match self {
9372 ListFilesContinueError::UserError(inner) => Some(inner),
9373 _ => None,
9374 }
9375 }
9376}
9377
9378impl ::std::fmt::Display for ListFilesContinueError {
9379 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9380 match self {
9381 ListFilesContinueError::UserError(inner) => write!(f, "User account had a problem: {}", inner),
9382 _ => write!(f, "{:?}", *self),
9383 }
9384 }
9385}
9386
9387#[derive(Debug, Clone, PartialEq, Eq)]
9389#[non_exhaustive] pub struct ListFilesResult {
9391 pub entries: Vec<SharedFileMetadata>,
9393 pub cursor: Option<String>,
9395}
9396
9397impl ListFilesResult {
9398 pub fn new(entries: Vec<SharedFileMetadata>) -> Self {
9399 ListFilesResult {
9400 entries,
9401 cursor: None,
9402 }
9403 }
9404
9405 pub fn with_cursor(mut self, value: String) -> Self {
9406 self.cursor = Some(value);
9407 self
9408 }
9409}
9410
9411const LIST_FILES_RESULT_FIELDS: &[&str] = &["entries",
9412 "cursor"];
9413impl ListFilesResult {
9414 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9415 map: V,
9416 ) -> Result<ListFilesResult, V::Error> {
9417 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9418 }
9419
9420 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9421 mut map: V,
9422 optional: bool,
9423 ) -> Result<Option<ListFilesResult>, V::Error> {
9424 let mut field_entries = None;
9425 let mut field_cursor = None;
9426 let mut nothing = true;
9427 while let Some(key) = map.next_key::<&str>()? {
9428 nothing = false;
9429 match key {
9430 "entries" => {
9431 if field_entries.is_some() {
9432 return Err(::serde::de::Error::duplicate_field("entries"));
9433 }
9434 field_entries = Some(map.next_value()?);
9435 }
9436 "cursor" => {
9437 if field_cursor.is_some() {
9438 return Err(::serde::de::Error::duplicate_field("cursor"));
9439 }
9440 field_cursor = Some(map.next_value()?);
9441 }
9442 _ => {
9443 map.next_value::<::serde_json::Value>()?;
9445 }
9446 }
9447 }
9448 if optional && nothing {
9449 return Ok(None);
9450 }
9451 let result = ListFilesResult {
9452 entries: field_entries.ok_or_else(|| ::serde::de::Error::missing_field("entries"))?,
9453 cursor: field_cursor.and_then(Option::flatten),
9454 };
9455 Ok(Some(result))
9456 }
9457
9458 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9459 &self,
9460 s: &mut S::SerializeStruct,
9461 ) -> Result<(), S::Error> {
9462 use serde::ser::SerializeStruct;
9463 s.serialize_field("entries", &self.entries)?;
9464 if let Some(val) = &self.cursor {
9465 s.serialize_field("cursor", val)?;
9466 }
9467 Ok(())
9468 }
9469}
9470
9471impl<'de> ::serde::de::Deserialize<'de> for ListFilesResult {
9472 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9473 use serde::de::{MapAccess, Visitor};
9475 struct StructVisitor;
9476 impl<'de> Visitor<'de> for StructVisitor {
9477 type Value = ListFilesResult;
9478 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9479 f.write_str("a ListFilesResult struct")
9480 }
9481 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9482 ListFilesResult::internal_deserialize(map)
9483 }
9484 }
9485 deserializer.deserialize_struct("ListFilesResult", LIST_FILES_RESULT_FIELDS, StructVisitor)
9486 }
9487}
9488
9489impl ::serde::ser::Serialize for ListFilesResult {
9490 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9491 use serde::ser::SerializeStruct;
9493 let mut s = serializer.serialize_struct("ListFilesResult", 2)?;
9494 self.internal_serialize::<S>(&mut s)?;
9495 s.end()
9496 }
9497}
9498
9499#[derive(Debug, Clone, PartialEq, Eq)]
9500#[non_exhaustive] pub struct ListFolderMembersArgs {
9502 pub shared_folder_id: crate::types::common::SharedFolderId,
9505 pub actions: Option<Vec<MemberAction>>,
9509 pub limit: u32,
9512 pub path: Option<String>,
9516}
9517
9518impl ListFolderMembersArgs {
9519 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
9520 ListFolderMembersArgs {
9521 shared_folder_id,
9522 actions: None,
9523 limit: 1000,
9524 path: None,
9525 }
9526 }
9527
9528 pub fn with_actions(mut self, value: Vec<MemberAction>) -> Self {
9529 self.actions = Some(value);
9530 self
9531 }
9532
9533 pub fn with_limit(mut self, value: u32) -> Self {
9534 self.limit = value;
9535 self
9536 }
9537
9538 pub fn with_path(mut self, value: String) -> Self {
9539 self.path = Some(value);
9540 self
9541 }
9542}
9543
9544const LIST_FOLDER_MEMBERS_ARGS_FIELDS: &[&str] = &["shared_folder_id",
9545 "actions",
9546 "limit",
9547 "path"];
9548impl ListFolderMembersArgs {
9549 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9550 map: V,
9551 ) -> Result<ListFolderMembersArgs, V::Error> {
9552 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9553 }
9554
9555 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9556 mut map: V,
9557 optional: bool,
9558 ) -> Result<Option<ListFolderMembersArgs>, V::Error> {
9559 let mut field_shared_folder_id = None;
9560 let mut field_actions = None;
9561 let mut field_limit = None;
9562 let mut field_path = None;
9563 let mut nothing = true;
9564 while let Some(key) = map.next_key::<&str>()? {
9565 nothing = false;
9566 match key {
9567 "shared_folder_id" => {
9568 if field_shared_folder_id.is_some() {
9569 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
9570 }
9571 field_shared_folder_id = Some(map.next_value()?);
9572 }
9573 "actions" => {
9574 if field_actions.is_some() {
9575 return Err(::serde::de::Error::duplicate_field("actions"));
9576 }
9577 field_actions = Some(map.next_value()?);
9578 }
9579 "limit" => {
9580 if field_limit.is_some() {
9581 return Err(::serde::de::Error::duplicate_field("limit"));
9582 }
9583 field_limit = Some(map.next_value()?);
9584 }
9585 "path" => {
9586 if field_path.is_some() {
9587 return Err(::serde::de::Error::duplicate_field("path"));
9588 }
9589 field_path = Some(map.next_value()?);
9590 }
9591 _ => {
9592 map.next_value::<::serde_json::Value>()?;
9594 }
9595 }
9596 }
9597 if optional && nothing {
9598 return Ok(None);
9599 }
9600 let result = ListFolderMembersArgs {
9601 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
9602 actions: field_actions.and_then(Option::flatten),
9603 limit: field_limit.unwrap_or(1000),
9604 path: field_path.and_then(Option::flatten),
9605 };
9606 Ok(Some(result))
9607 }
9608
9609 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9610 &self,
9611 s: &mut S::SerializeStruct,
9612 ) -> Result<(), S::Error> {
9613 use serde::ser::SerializeStruct;
9614 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
9615 if let Some(val) = &self.actions {
9616 s.serialize_field("actions", val)?;
9617 }
9618 if self.limit != 1000 {
9619 s.serialize_field("limit", &self.limit)?;
9620 }
9621 if let Some(val) = &self.path {
9622 s.serialize_field("path", val)?;
9623 }
9624 Ok(())
9625 }
9626}
9627
9628impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersArgs {
9629 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9630 use serde::de::{MapAccess, Visitor};
9632 struct StructVisitor;
9633 impl<'de> Visitor<'de> for StructVisitor {
9634 type Value = ListFolderMembersArgs;
9635 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9636 f.write_str("a ListFolderMembersArgs struct")
9637 }
9638 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9639 ListFolderMembersArgs::internal_deserialize(map)
9640 }
9641 }
9642 deserializer.deserialize_struct("ListFolderMembersArgs", LIST_FOLDER_MEMBERS_ARGS_FIELDS, StructVisitor)
9643 }
9644}
9645
9646impl ::serde::ser::Serialize for ListFolderMembersArgs {
9647 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9648 use serde::ser::SerializeStruct;
9650 let mut s = serializer.serialize_struct("ListFolderMembersArgs", 4)?;
9651 self.internal_serialize::<S>(&mut s)?;
9652 s.end()
9653 }
9654}
9655
9656impl From<ListFolderMembersArgs> for ListFolderMembersCursorArg {
9658 fn from(subtype: ListFolderMembersArgs) -> Self {
9659 Self {
9660 actions: subtype.actions,
9661 limit: subtype.limit,
9662 }
9663 }
9664}
9665#[derive(Debug, Clone, PartialEq, Eq)]
9666#[non_exhaustive] pub struct ListFolderMembersContinueArg {
9668 pub cursor: String,
9672}
9673
9674impl ListFolderMembersContinueArg {
9675 pub fn new(cursor: String) -> Self {
9676 ListFolderMembersContinueArg {
9677 cursor,
9678 }
9679 }
9680}
9681
9682const LIST_FOLDER_MEMBERS_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
9683impl ListFolderMembersContinueArg {
9684 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9685 map: V,
9686 ) -> Result<ListFolderMembersContinueArg, V::Error> {
9687 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
9688 }
9689
9690 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
9691 mut map: V,
9692 optional: bool,
9693 ) -> Result<Option<ListFolderMembersContinueArg>, V::Error> {
9694 let mut field_cursor = None;
9695 let mut nothing = true;
9696 while let Some(key) = map.next_key::<&str>()? {
9697 nothing = false;
9698 match key {
9699 "cursor" => {
9700 if field_cursor.is_some() {
9701 return Err(::serde::de::Error::duplicate_field("cursor"));
9702 }
9703 field_cursor = Some(map.next_value()?);
9704 }
9705 _ => {
9706 map.next_value::<::serde_json::Value>()?;
9708 }
9709 }
9710 }
9711 if optional && nothing {
9712 return Ok(None);
9713 }
9714 let result = ListFolderMembersContinueArg {
9715 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
9716 };
9717 Ok(Some(result))
9718 }
9719
9720 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9721 &self,
9722 s: &mut S::SerializeStruct,
9723 ) -> Result<(), S::Error> {
9724 use serde::ser::SerializeStruct;
9725 s.serialize_field("cursor", &self.cursor)?;
9726 Ok(())
9727 }
9728}
9729
9730impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersContinueArg {
9731 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9732 use serde::de::{MapAccess, Visitor};
9734 struct StructVisitor;
9735 impl<'de> Visitor<'de> for StructVisitor {
9736 type Value = ListFolderMembersContinueArg;
9737 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9738 f.write_str("a ListFolderMembersContinueArg struct")
9739 }
9740 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9741 ListFolderMembersContinueArg::internal_deserialize(map)
9742 }
9743 }
9744 deserializer.deserialize_struct("ListFolderMembersContinueArg", LIST_FOLDER_MEMBERS_CONTINUE_ARG_FIELDS, StructVisitor)
9745 }
9746}
9747
9748impl ::serde::ser::Serialize for ListFolderMembersContinueArg {
9749 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9750 use serde::ser::SerializeStruct;
9752 let mut s = serializer.serialize_struct("ListFolderMembersContinueArg", 1)?;
9753 self.internal_serialize::<S>(&mut s)?;
9754 s.end()
9755 }
9756}
9757
9758#[derive(Debug, Clone, PartialEq, Eq)]
9759#[non_exhaustive] pub enum ListFolderMembersContinueError {
9761 AccessError(SharedFolderAccessError),
9762 InvalidCursor,
9764 Other,
9767}
9768
9769impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersContinueError {
9770 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9771 use serde::de::{self, MapAccess, Visitor};
9773 struct EnumVisitor;
9774 impl<'de> Visitor<'de> for EnumVisitor {
9775 type Value = ListFolderMembersContinueError;
9776 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9777 f.write_str("a ListFolderMembersContinueError structure")
9778 }
9779 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
9780 let tag: &str = match map.next_key()? {
9781 Some(".tag") => map.next_value()?,
9782 _ => return Err(de::Error::missing_field(".tag"))
9783 };
9784 let value = match tag {
9785 "access_error" => {
9786 match map.next_key()? {
9787 Some("access_error") => ListFolderMembersContinueError::AccessError(map.next_value()?),
9788 None => return Err(de::Error::missing_field("access_error")),
9789 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
9790 }
9791 }
9792 "invalid_cursor" => ListFolderMembersContinueError::InvalidCursor,
9793 _ => ListFolderMembersContinueError::Other,
9794 };
9795 crate::eat_json_fields(&mut map)?;
9796 Ok(value)
9797 }
9798 }
9799 const VARIANTS: &[&str] = &["access_error",
9800 "invalid_cursor",
9801 "other"];
9802 deserializer.deserialize_struct("ListFolderMembersContinueError", VARIANTS, EnumVisitor)
9803 }
9804}
9805
9806impl ::serde::ser::Serialize for ListFolderMembersContinueError {
9807 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9808 use serde::ser::SerializeStruct;
9810 match self {
9811 ListFolderMembersContinueError::AccessError(x) => {
9812 let mut s = serializer.serialize_struct("ListFolderMembersContinueError", 2)?;
9814 s.serialize_field(".tag", "access_error")?;
9815 s.serialize_field("access_error", x)?;
9816 s.end()
9817 }
9818 ListFolderMembersContinueError::InvalidCursor => {
9819 let mut s = serializer.serialize_struct("ListFolderMembersContinueError", 1)?;
9821 s.serialize_field(".tag", "invalid_cursor")?;
9822 s.end()
9823 }
9824 ListFolderMembersContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
9825 }
9826 }
9827}
9828
9829impl ::std::error::Error for ListFolderMembersContinueError {
9830 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
9831 match self {
9832 ListFolderMembersContinueError::AccessError(inner) => Some(inner),
9833 _ => None,
9834 }
9835 }
9836}
9837
9838impl ::std::fmt::Display for ListFolderMembersContinueError {
9839 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9840 match self {
9841 ListFolderMembersContinueError::AccessError(inner) => write!(f, "ListFolderMembersContinueError: {}", inner),
9842 _ => write!(f, "{:?}", *self),
9843 }
9844 }
9845}
9846
9847#[derive(Debug, Clone, PartialEq, Eq)]
9848#[non_exhaustive] pub struct ListFolderMembersCursorArg {
9850 pub actions: Option<Vec<MemberAction>>,
9854 pub limit: u32,
9857}
9858
9859impl Default for ListFolderMembersCursorArg {
9860 fn default() -> Self {
9861 ListFolderMembersCursorArg {
9862 actions: None,
9863 limit: 1000,
9864 }
9865 }
9866}
9867
9868impl ListFolderMembersCursorArg {
9869 pub fn with_actions(mut self, value: Vec<MemberAction>) -> Self {
9870 self.actions = Some(value);
9871 self
9872 }
9873
9874 pub fn with_limit(mut self, value: u32) -> Self {
9875 self.limit = value;
9876 self
9877 }
9878}
9879
9880const LIST_FOLDER_MEMBERS_CURSOR_ARG_FIELDS: &[&str] = &["actions",
9881 "limit"];
9882impl ListFolderMembersCursorArg {
9883 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9885 mut map: V,
9886 ) -> Result<ListFolderMembersCursorArg, V::Error> {
9887 let mut field_actions = None;
9888 let mut field_limit = None;
9889 while let Some(key) = map.next_key::<&str>()? {
9890 match key {
9891 "actions" => {
9892 if field_actions.is_some() {
9893 return Err(::serde::de::Error::duplicate_field("actions"));
9894 }
9895 field_actions = Some(map.next_value()?);
9896 }
9897 "limit" => {
9898 if field_limit.is_some() {
9899 return Err(::serde::de::Error::duplicate_field("limit"));
9900 }
9901 field_limit = Some(map.next_value()?);
9902 }
9903 _ => {
9904 map.next_value::<::serde_json::Value>()?;
9906 }
9907 }
9908 }
9909 let result = ListFolderMembersCursorArg {
9910 actions: field_actions.and_then(Option::flatten),
9911 limit: field_limit.unwrap_or(1000),
9912 };
9913 Ok(result)
9914 }
9915
9916 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
9917 &self,
9918 s: &mut S::SerializeStruct,
9919 ) -> Result<(), S::Error> {
9920 use serde::ser::SerializeStruct;
9921 if let Some(val) = &self.actions {
9922 s.serialize_field("actions", val)?;
9923 }
9924 if self.limit != 1000 {
9925 s.serialize_field("limit", &self.limit)?;
9926 }
9927 Ok(())
9928 }
9929}
9930
9931impl<'de> ::serde::de::Deserialize<'de> for ListFolderMembersCursorArg {
9932 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
9933 use serde::de::{MapAccess, Visitor};
9935 struct StructVisitor;
9936 impl<'de> Visitor<'de> for StructVisitor {
9937 type Value = ListFolderMembersCursorArg;
9938 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9939 f.write_str("a ListFolderMembersCursorArg struct")
9940 }
9941 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
9942 ListFolderMembersCursorArg::internal_deserialize(map)
9943 }
9944 }
9945 deserializer.deserialize_struct("ListFolderMembersCursorArg", LIST_FOLDER_MEMBERS_CURSOR_ARG_FIELDS, StructVisitor)
9946 }
9947}
9948
9949impl ::serde::ser::Serialize for ListFolderMembersCursorArg {
9950 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9951 use serde::ser::SerializeStruct;
9953 let mut s = serializer.serialize_struct("ListFolderMembersCursorArg", 2)?;
9954 self.internal_serialize::<S>(&mut s)?;
9955 s.end()
9956 }
9957}
9958
9959#[derive(Debug, Clone, PartialEq, Eq)]
9960#[non_exhaustive] pub struct ListFoldersArgs {
9962 pub limit: u32,
9964 pub actions: Option<Vec<FolderAction>>,
9968}
9969
9970impl Default for ListFoldersArgs {
9971 fn default() -> Self {
9972 ListFoldersArgs {
9973 limit: 1000,
9974 actions: None,
9975 }
9976 }
9977}
9978
9979impl ListFoldersArgs {
9980 pub fn with_limit(mut self, value: u32) -> Self {
9981 self.limit = value;
9982 self
9983 }
9984
9985 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
9986 self.actions = Some(value);
9987 self
9988 }
9989}
9990
9991const LIST_FOLDERS_ARGS_FIELDS: &[&str] = &["limit",
9992 "actions"];
9993impl ListFoldersArgs {
9994 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
9996 mut map: V,
9997 ) -> Result<ListFoldersArgs, V::Error> {
9998 let mut field_limit = None;
9999 let mut field_actions = None;
10000 while let Some(key) = map.next_key::<&str>()? {
10001 match key {
10002 "limit" => {
10003 if field_limit.is_some() {
10004 return Err(::serde::de::Error::duplicate_field("limit"));
10005 }
10006 field_limit = Some(map.next_value()?);
10007 }
10008 "actions" => {
10009 if field_actions.is_some() {
10010 return Err(::serde::de::Error::duplicate_field("actions"));
10011 }
10012 field_actions = Some(map.next_value()?);
10013 }
10014 _ => {
10015 map.next_value::<::serde_json::Value>()?;
10017 }
10018 }
10019 }
10020 let result = ListFoldersArgs {
10021 limit: field_limit.unwrap_or(1000),
10022 actions: field_actions.and_then(Option::flatten),
10023 };
10024 Ok(result)
10025 }
10026
10027 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10028 &self,
10029 s: &mut S::SerializeStruct,
10030 ) -> Result<(), S::Error> {
10031 use serde::ser::SerializeStruct;
10032 if self.limit != 1000 {
10033 s.serialize_field("limit", &self.limit)?;
10034 }
10035 if let Some(val) = &self.actions {
10036 s.serialize_field("actions", val)?;
10037 }
10038 Ok(())
10039 }
10040}
10041
10042impl<'de> ::serde::de::Deserialize<'de> for ListFoldersArgs {
10043 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10044 use serde::de::{MapAccess, Visitor};
10046 struct StructVisitor;
10047 impl<'de> Visitor<'de> for StructVisitor {
10048 type Value = ListFoldersArgs;
10049 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10050 f.write_str("a ListFoldersArgs struct")
10051 }
10052 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10053 ListFoldersArgs::internal_deserialize(map)
10054 }
10055 }
10056 deserializer.deserialize_struct("ListFoldersArgs", LIST_FOLDERS_ARGS_FIELDS, StructVisitor)
10057 }
10058}
10059
10060impl ::serde::ser::Serialize for ListFoldersArgs {
10061 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10062 use serde::ser::SerializeStruct;
10064 let mut s = serializer.serialize_struct("ListFoldersArgs", 2)?;
10065 self.internal_serialize::<S>(&mut s)?;
10066 s.end()
10067 }
10068}
10069
10070#[derive(Debug, Clone, PartialEq, Eq)]
10071#[non_exhaustive] pub struct ListFoldersContinueArg {
10073 pub cursor: String,
10075}
10076
10077impl ListFoldersContinueArg {
10078 pub fn new(cursor: String) -> Self {
10079 ListFoldersContinueArg {
10080 cursor,
10081 }
10082 }
10083}
10084
10085const LIST_FOLDERS_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"];
10086impl ListFoldersContinueArg {
10087 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10088 map: V,
10089 ) -> Result<ListFoldersContinueArg, V::Error> {
10090 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
10091 }
10092
10093 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
10094 mut map: V,
10095 optional: bool,
10096 ) -> Result<Option<ListFoldersContinueArg>, V::Error> {
10097 let mut field_cursor = None;
10098 let mut nothing = true;
10099 while let Some(key) = map.next_key::<&str>()? {
10100 nothing = false;
10101 match key {
10102 "cursor" => {
10103 if field_cursor.is_some() {
10104 return Err(::serde::de::Error::duplicate_field("cursor"));
10105 }
10106 field_cursor = Some(map.next_value()?);
10107 }
10108 _ => {
10109 map.next_value::<::serde_json::Value>()?;
10111 }
10112 }
10113 }
10114 if optional && nothing {
10115 return Ok(None);
10116 }
10117 let result = ListFoldersContinueArg {
10118 cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?,
10119 };
10120 Ok(Some(result))
10121 }
10122
10123 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10124 &self,
10125 s: &mut S::SerializeStruct,
10126 ) -> Result<(), S::Error> {
10127 use serde::ser::SerializeStruct;
10128 s.serialize_field("cursor", &self.cursor)?;
10129 Ok(())
10130 }
10131}
10132
10133impl<'de> ::serde::de::Deserialize<'de> for ListFoldersContinueArg {
10134 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10135 use serde::de::{MapAccess, Visitor};
10137 struct StructVisitor;
10138 impl<'de> Visitor<'de> for StructVisitor {
10139 type Value = ListFoldersContinueArg;
10140 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10141 f.write_str("a ListFoldersContinueArg struct")
10142 }
10143 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10144 ListFoldersContinueArg::internal_deserialize(map)
10145 }
10146 }
10147 deserializer.deserialize_struct("ListFoldersContinueArg", LIST_FOLDERS_CONTINUE_ARG_FIELDS, StructVisitor)
10148 }
10149}
10150
10151impl ::serde::ser::Serialize for ListFoldersContinueArg {
10152 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10153 use serde::ser::SerializeStruct;
10155 let mut s = serializer.serialize_struct("ListFoldersContinueArg", 1)?;
10156 self.internal_serialize::<S>(&mut s)?;
10157 s.end()
10158 }
10159}
10160
10161#[derive(Debug, Clone, PartialEq, Eq)]
10162#[non_exhaustive] pub enum ListFoldersContinueError {
10164 InvalidCursor,
10166 Other,
10169}
10170
10171impl<'de> ::serde::de::Deserialize<'de> for ListFoldersContinueError {
10172 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10173 use serde::de::{self, MapAccess, Visitor};
10175 struct EnumVisitor;
10176 impl<'de> Visitor<'de> for EnumVisitor {
10177 type Value = ListFoldersContinueError;
10178 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10179 f.write_str("a ListFoldersContinueError structure")
10180 }
10181 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
10182 let tag: &str = match map.next_key()? {
10183 Some(".tag") => map.next_value()?,
10184 _ => return Err(de::Error::missing_field(".tag"))
10185 };
10186 let value = match tag {
10187 "invalid_cursor" => ListFoldersContinueError::InvalidCursor,
10188 _ => ListFoldersContinueError::Other,
10189 };
10190 crate::eat_json_fields(&mut map)?;
10191 Ok(value)
10192 }
10193 }
10194 const VARIANTS: &[&str] = &["invalid_cursor",
10195 "other"];
10196 deserializer.deserialize_struct("ListFoldersContinueError", VARIANTS, EnumVisitor)
10197 }
10198}
10199
10200impl ::serde::ser::Serialize for ListFoldersContinueError {
10201 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10202 use serde::ser::SerializeStruct;
10204 match self {
10205 ListFoldersContinueError::InvalidCursor => {
10206 let mut s = serializer.serialize_struct("ListFoldersContinueError", 1)?;
10208 s.serialize_field(".tag", "invalid_cursor")?;
10209 s.end()
10210 }
10211 ListFoldersContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
10212 }
10213 }
10214}
10215
10216impl ::std::error::Error for ListFoldersContinueError {
10217}
10218
10219impl ::std::fmt::Display for ListFoldersContinueError {
10220 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10221 write!(f, "{:?}", *self)
10222 }
10223}
10224
10225#[derive(Debug, Clone, PartialEq, Eq)]
10230#[non_exhaustive] pub struct ListFoldersResult {
10232 pub entries: Vec<SharedFolderMetadata>,
10234 pub cursor: Option<String>,
10240}
10241
10242impl ListFoldersResult {
10243 pub fn new(entries: Vec<SharedFolderMetadata>) -> Self {
10244 ListFoldersResult {
10245 entries,
10246 cursor: None,
10247 }
10248 }
10249
10250 pub fn with_cursor(mut self, value: String) -> Self {
10251 self.cursor = Some(value);
10252 self
10253 }
10254}
10255
10256const LIST_FOLDERS_RESULT_FIELDS: &[&str] = &["entries",
10257 "cursor"];
10258impl ListFoldersResult {
10259 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10260 map: V,
10261 ) -> Result<ListFoldersResult, V::Error> {
10262 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
10263 }
10264
10265 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
10266 mut map: V,
10267 optional: bool,
10268 ) -> Result<Option<ListFoldersResult>, V::Error> {
10269 let mut field_entries = None;
10270 let mut field_cursor = None;
10271 let mut nothing = true;
10272 while let Some(key) = map.next_key::<&str>()? {
10273 nothing = false;
10274 match key {
10275 "entries" => {
10276 if field_entries.is_some() {
10277 return Err(::serde::de::Error::duplicate_field("entries"));
10278 }
10279 field_entries = Some(map.next_value()?);
10280 }
10281 "cursor" => {
10282 if field_cursor.is_some() {
10283 return Err(::serde::de::Error::duplicate_field("cursor"));
10284 }
10285 field_cursor = Some(map.next_value()?);
10286 }
10287 _ => {
10288 map.next_value::<::serde_json::Value>()?;
10290 }
10291 }
10292 }
10293 if optional && nothing {
10294 return Ok(None);
10295 }
10296 let result = ListFoldersResult {
10297 entries: field_entries.ok_or_else(|| ::serde::de::Error::missing_field("entries"))?,
10298 cursor: field_cursor.and_then(Option::flatten),
10299 };
10300 Ok(Some(result))
10301 }
10302
10303 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10304 &self,
10305 s: &mut S::SerializeStruct,
10306 ) -> Result<(), S::Error> {
10307 use serde::ser::SerializeStruct;
10308 s.serialize_field("entries", &self.entries)?;
10309 if let Some(val) = &self.cursor {
10310 s.serialize_field("cursor", val)?;
10311 }
10312 Ok(())
10313 }
10314}
10315
10316impl<'de> ::serde::de::Deserialize<'de> for ListFoldersResult {
10317 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10318 use serde::de::{MapAccess, Visitor};
10320 struct StructVisitor;
10321 impl<'de> Visitor<'de> for StructVisitor {
10322 type Value = ListFoldersResult;
10323 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10324 f.write_str("a ListFoldersResult struct")
10325 }
10326 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10327 ListFoldersResult::internal_deserialize(map)
10328 }
10329 }
10330 deserializer.deserialize_struct("ListFoldersResult", LIST_FOLDERS_RESULT_FIELDS, StructVisitor)
10331 }
10332}
10333
10334impl ::serde::ser::Serialize for ListFoldersResult {
10335 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10336 use serde::ser::SerializeStruct;
10338 let mut s = serializer.serialize_struct("ListFoldersResult", 2)?;
10339 self.internal_serialize::<S>(&mut s)?;
10340 s.end()
10341 }
10342}
10343
10344#[derive(Debug, Clone, PartialEq, Eq, Default)]
10345#[non_exhaustive] pub struct ListSharedLinksArg {
10347 pub path: Option<ReadPath>,
10349 pub cursor: Option<String>,
10352 pub direct_only: Option<bool>,
10354}
10355
10356impl ListSharedLinksArg {
10357 pub fn with_path(mut self, value: ReadPath) -> Self {
10358 self.path = Some(value);
10359 self
10360 }
10361
10362 pub fn with_cursor(mut self, value: String) -> Self {
10363 self.cursor = Some(value);
10364 self
10365 }
10366
10367 pub fn with_direct_only(mut self, value: bool) -> Self {
10368 self.direct_only = Some(value);
10369 self
10370 }
10371}
10372
10373const LIST_SHARED_LINKS_ARG_FIELDS: &[&str] = &["path",
10374 "cursor",
10375 "direct_only"];
10376impl ListSharedLinksArg {
10377 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10379 mut map: V,
10380 ) -> Result<ListSharedLinksArg, V::Error> {
10381 let mut field_path = None;
10382 let mut field_cursor = None;
10383 let mut field_direct_only = None;
10384 while let Some(key) = map.next_key::<&str>()? {
10385 match key {
10386 "path" => {
10387 if field_path.is_some() {
10388 return Err(::serde::de::Error::duplicate_field("path"));
10389 }
10390 field_path = Some(map.next_value()?);
10391 }
10392 "cursor" => {
10393 if field_cursor.is_some() {
10394 return Err(::serde::de::Error::duplicate_field("cursor"));
10395 }
10396 field_cursor = Some(map.next_value()?);
10397 }
10398 "direct_only" => {
10399 if field_direct_only.is_some() {
10400 return Err(::serde::de::Error::duplicate_field("direct_only"));
10401 }
10402 field_direct_only = Some(map.next_value()?);
10403 }
10404 _ => {
10405 map.next_value::<::serde_json::Value>()?;
10407 }
10408 }
10409 }
10410 let result = ListSharedLinksArg {
10411 path: field_path.and_then(Option::flatten),
10412 cursor: field_cursor.and_then(Option::flatten),
10413 direct_only: field_direct_only.and_then(Option::flatten),
10414 };
10415 Ok(result)
10416 }
10417
10418 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10419 &self,
10420 s: &mut S::SerializeStruct,
10421 ) -> Result<(), S::Error> {
10422 use serde::ser::SerializeStruct;
10423 if let Some(val) = &self.path {
10424 s.serialize_field("path", val)?;
10425 }
10426 if let Some(val) = &self.cursor {
10427 s.serialize_field("cursor", val)?;
10428 }
10429 if let Some(val) = &self.direct_only {
10430 s.serialize_field("direct_only", val)?;
10431 }
10432 Ok(())
10433 }
10434}
10435
10436impl<'de> ::serde::de::Deserialize<'de> for ListSharedLinksArg {
10437 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10438 use serde::de::{MapAccess, Visitor};
10440 struct StructVisitor;
10441 impl<'de> Visitor<'de> for StructVisitor {
10442 type Value = ListSharedLinksArg;
10443 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10444 f.write_str("a ListSharedLinksArg struct")
10445 }
10446 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10447 ListSharedLinksArg::internal_deserialize(map)
10448 }
10449 }
10450 deserializer.deserialize_struct("ListSharedLinksArg", LIST_SHARED_LINKS_ARG_FIELDS, StructVisitor)
10451 }
10452}
10453
10454impl ::serde::ser::Serialize for ListSharedLinksArg {
10455 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10456 use serde::ser::SerializeStruct;
10458 let mut s = serializer.serialize_struct("ListSharedLinksArg", 3)?;
10459 self.internal_serialize::<S>(&mut s)?;
10460 s.end()
10461 }
10462}
10463
10464#[derive(Debug, Clone, PartialEq, Eq)]
10465#[non_exhaustive] pub enum ListSharedLinksError {
10467 Path(crate::types::files::LookupError),
10468 Reset,
10471 Other,
10474}
10475
10476impl<'de> ::serde::de::Deserialize<'de> for ListSharedLinksError {
10477 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10478 use serde::de::{self, MapAccess, Visitor};
10480 struct EnumVisitor;
10481 impl<'de> Visitor<'de> for EnumVisitor {
10482 type Value = ListSharedLinksError;
10483 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10484 f.write_str("a ListSharedLinksError structure")
10485 }
10486 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
10487 let tag: &str = match map.next_key()? {
10488 Some(".tag") => map.next_value()?,
10489 _ => return Err(de::Error::missing_field(".tag"))
10490 };
10491 let value = match tag {
10492 "path" => {
10493 match map.next_key()? {
10494 Some("path") => ListSharedLinksError::Path(map.next_value()?),
10495 None => return Err(de::Error::missing_field("path")),
10496 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
10497 }
10498 }
10499 "reset" => ListSharedLinksError::Reset,
10500 _ => ListSharedLinksError::Other,
10501 };
10502 crate::eat_json_fields(&mut map)?;
10503 Ok(value)
10504 }
10505 }
10506 const VARIANTS: &[&str] = &["path",
10507 "reset",
10508 "other"];
10509 deserializer.deserialize_struct("ListSharedLinksError", VARIANTS, EnumVisitor)
10510 }
10511}
10512
10513impl ::serde::ser::Serialize for ListSharedLinksError {
10514 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10515 use serde::ser::SerializeStruct;
10517 match self {
10518 ListSharedLinksError::Path(x) => {
10519 let mut s = serializer.serialize_struct("ListSharedLinksError", 2)?;
10521 s.serialize_field(".tag", "path")?;
10522 s.serialize_field("path", x)?;
10523 s.end()
10524 }
10525 ListSharedLinksError::Reset => {
10526 let mut s = serializer.serialize_struct("ListSharedLinksError", 1)?;
10528 s.serialize_field(".tag", "reset")?;
10529 s.end()
10530 }
10531 ListSharedLinksError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
10532 }
10533 }
10534}
10535
10536impl ::std::error::Error for ListSharedLinksError {
10537 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
10538 match self {
10539 ListSharedLinksError::Path(inner) => Some(inner),
10540 _ => None,
10541 }
10542 }
10543}
10544
10545impl ::std::fmt::Display for ListSharedLinksError {
10546 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10547 match self {
10548 ListSharedLinksError::Path(inner) => write!(f, "ListSharedLinksError: {}", inner),
10549 _ => write!(f, "{:?}", *self),
10550 }
10551 }
10552}
10553
10554#[derive(Debug, Clone, PartialEq, Eq)]
10555#[non_exhaustive] pub struct ListSharedLinksResult {
10557 pub links: Vec<SharedLinkMetadata>,
10559 pub has_more: bool,
10562 pub cursor: Option<String>,
10565}
10566
10567impl ListSharedLinksResult {
10568 pub fn new(links: Vec<SharedLinkMetadata>, has_more: bool) -> Self {
10569 ListSharedLinksResult {
10570 links,
10571 has_more,
10572 cursor: None,
10573 }
10574 }
10575
10576 pub fn with_cursor(mut self, value: String) -> Self {
10577 self.cursor = Some(value);
10578 self
10579 }
10580}
10581
10582const LIST_SHARED_LINKS_RESULT_FIELDS: &[&str] = &["links",
10583 "has_more",
10584 "cursor"];
10585impl ListSharedLinksResult {
10586 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10587 map: V,
10588 ) -> Result<ListSharedLinksResult, V::Error> {
10589 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
10590 }
10591
10592 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
10593 mut map: V,
10594 optional: bool,
10595 ) -> Result<Option<ListSharedLinksResult>, V::Error> {
10596 let mut field_links = None;
10597 let mut field_has_more = None;
10598 let mut field_cursor = None;
10599 let mut nothing = true;
10600 while let Some(key) = map.next_key::<&str>()? {
10601 nothing = false;
10602 match key {
10603 "links" => {
10604 if field_links.is_some() {
10605 return Err(::serde::de::Error::duplicate_field("links"));
10606 }
10607 field_links = Some(map.next_value()?);
10608 }
10609 "has_more" => {
10610 if field_has_more.is_some() {
10611 return Err(::serde::de::Error::duplicate_field("has_more"));
10612 }
10613 field_has_more = Some(map.next_value()?);
10614 }
10615 "cursor" => {
10616 if field_cursor.is_some() {
10617 return Err(::serde::de::Error::duplicate_field("cursor"));
10618 }
10619 field_cursor = Some(map.next_value()?);
10620 }
10621 _ => {
10622 map.next_value::<::serde_json::Value>()?;
10624 }
10625 }
10626 }
10627 if optional && nothing {
10628 return Ok(None);
10629 }
10630 let result = ListSharedLinksResult {
10631 links: field_links.ok_or_else(|| ::serde::de::Error::missing_field("links"))?,
10632 has_more: field_has_more.ok_or_else(|| ::serde::de::Error::missing_field("has_more"))?,
10633 cursor: field_cursor.and_then(Option::flatten),
10634 };
10635 Ok(Some(result))
10636 }
10637
10638 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10639 &self,
10640 s: &mut S::SerializeStruct,
10641 ) -> Result<(), S::Error> {
10642 use serde::ser::SerializeStruct;
10643 s.serialize_field("links", &self.links)?;
10644 s.serialize_field("has_more", &self.has_more)?;
10645 if let Some(val) = &self.cursor {
10646 s.serialize_field("cursor", val)?;
10647 }
10648 Ok(())
10649 }
10650}
10651
10652impl<'de> ::serde::de::Deserialize<'de> for ListSharedLinksResult {
10653 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10654 use serde::de::{MapAccess, Visitor};
10656 struct StructVisitor;
10657 impl<'de> Visitor<'de> for StructVisitor {
10658 type Value = ListSharedLinksResult;
10659 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10660 f.write_str("a ListSharedLinksResult struct")
10661 }
10662 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10663 ListSharedLinksResult::internal_deserialize(map)
10664 }
10665 }
10666 deserializer.deserialize_struct("ListSharedLinksResult", LIST_SHARED_LINKS_RESULT_FIELDS, StructVisitor)
10667 }
10668}
10669
10670impl ::serde::ser::Serialize for ListSharedLinksResult {
10671 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10672 use serde::ser::SerializeStruct;
10674 let mut s = serializer.serialize_struct("ListSharedLinksResult", 3)?;
10675 self.internal_serialize::<S>(&mut s)?;
10676 s.end()
10677 }
10678}
10679
10680#[derive(Debug, Clone, PartialEq, Eq, Default)]
10682#[non_exhaustive] pub struct MemberAccessLevelResult {
10684 pub access_level: Option<AccessLevel>,
10686 pub warning: Option<String>,
10689 pub access_details: Option<Vec<ParentFolderAccessInfo>>,
10692}
10693
10694impl MemberAccessLevelResult {
10695 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
10696 self.access_level = Some(value);
10697 self
10698 }
10699
10700 pub fn with_warning(mut self, value: String) -> Self {
10701 self.warning = Some(value);
10702 self
10703 }
10704
10705 pub fn with_access_details(mut self, value: Vec<ParentFolderAccessInfo>) -> Self {
10706 self.access_details = Some(value);
10707 self
10708 }
10709}
10710
10711const MEMBER_ACCESS_LEVEL_RESULT_FIELDS: &[&str] = &["access_level",
10712 "warning",
10713 "access_details"];
10714impl MemberAccessLevelResult {
10715 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10717 mut map: V,
10718 ) -> Result<MemberAccessLevelResult, V::Error> {
10719 let mut field_access_level = None;
10720 let mut field_warning = None;
10721 let mut field_access_details = None;
10722 while let Some(key) = map.next_key::<&str>()? {
10723 match key {
10724 "access_level" => {
10725 if field_access_level.is_some() {
10726 return Err(::serde::de::Error::duplicate_field("access_level"));
10727 }
10728 field_access_level = Some(map.next_value()?);
10729 }
10730 "warning" => {
10731 if field_warning.is_some() {
10732 return Err(::serde::de::Error::duplicate_field("warning"));
10733 }
10734 field_warning = Some(map.next_value()?);
10735 }
10736 "access_details" => {
10737 if field_access_details.is_some() {
10738 return Err(::serde::de::Error::duplicate_field("access_details"));
10739 }
10740 field_access_details = Some(map.next_value()?);
10741 }
10742 _ => {
10743 map.next_value::<::serde_json::Value>()?;
10745 }
10746 }
10747 }
10748 let result = MemberAccessLevelResult {
10749 access_level: field_access_level.and_then(Option::flatten),
10750 warning: field_warning.and_then(Option::flatten),
10751 access_details: field_access_details.and_then(Option::flatten),
10752 };
10753 Ok(result)
10754 }
10755
10756 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10757 &self,
10758 s: &mut S::SerializeStruct,
10759 ) -> Result<(), S::Error> {
10760 use serde::ser::SerializeStruct;
10761 if let Some(val) = &self.access_level {
10762 s.serialize_field("access_level", val)?;
10763 }
10764 if let Some(val) = &self.warning {
10765 s.serialize_field("warning", val)?;
10766 }
10767 if let Some(val) = &self.access_details {
10768 s.serialize_field("access_details", val)?;
10769 }
10770 Ok(())
10771 }
10772}
10773
10774impl<'de> ::serde::de::Deserialize<'de> for MemberAccessLevelResult {
10775 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10776 use serde::de::{MapAccess, Visitor};
10778 struct StructVisitor;
10779 impl<'de> Visitor<'de> for StructVisitor {
10780 type Value = MemberAccessLevelResult;
10781 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10782 f.write_str("a MemberAccessLevelResult struct")
10783 }
10784 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
10785 MemberAccessLevelResult::internal_deserialize(map)
10786 }
10787 }
10788 deserializer.deserialize_struct("MemberAccessLevelResult", MEMBER_ACCESS_LEVEL_RESULT_FIELDS, StructVisitor)
10789 }
10790}
10791
10792impl ::serde::ser::Serialize for MemberAccessLevelResult {
10793 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10794 use serde::ser::SerializeStruct;
10796 let mut s = serializer.serialize_struct("MemberAccessLevelResult", 3)?;
10797 self.internal_serialize::<S>(&mut s)?;
10798 s.end()
10799 }
10800}
10801
10802#[derive(Debug, Clone, PartialEq, Eq)]
10804#[non_exhaustive] pub enum MemberAction {
10806 LeaveACopy,
10808 MakeEditor,
10810 MakeOwner,
10812 MakeViewer,
10814 MakeViewerNoComment,
10816 Remove,
10818 Other,
10821}
10822
10823impl<'de> ::serde::de::Deserialize<'de> for MemberAction {
10824 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
10825 use serde::de::{self, MapAccess, Visitor};
10827 struct EnumVisitor;
10828 impl<'de> Visitor<'de> for EnumVisitor {
10829 type Value = MemberAction;
10830 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10831 f.write_str("a MemberAction structure")
10832 }
10833 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
10834 let tag: &str = match map.next_key()? {
10835 Some(".tag") => map.next_value()?,
10836 _ => return Err(de::Error::missing_field(".tag"))
10837 };
10838 let value = match tag {
10839 "leave_a_copy" => MemberAction::LeaveACopy,
10840 "make_editor" => MemberAction::MakeEditor,
10841 "make_owner" => MemberAction::MakeOwner,
10842 "make_viewer" => MemberAction::MakeViewer,
10843 "make_viewer_no_comment" => MemberAction::MakeViewerNoComment,
10844 "remove" => MemberAction::Remove,
10845 _ => MemberAction::Other,
10846 };
10847 crate::eat_json_fields(&mut map)?;
10848 Ok(value)
10849 }
10850 }
10851 const VARIANTS: &[&str] = &["leave_a_copy",
10852 "make_editor",
10853 "make_owner",
10854 "make_viewer",
10855 "make_viewer_no_comment",
10856 "remove",
10857 "other"];
10858 deserializer.deserialize_struct("MemberAction", VARIANTS, EnumVisitor)
10859 }
10860}
10861
10862impl ::serde::ser::Serialize for MemberAction {
10863 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
10864 use serde::ser::SerializeStruct;
10866 match self {
10867 MemberAction::LeaveACopy => {
10868 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10870 s.serialize_field(".tag", "leave_a_copy")?;
10871 s.end()
10872 }
10873 MemberAction::MakeEditor => {
10874 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10876 s.serialize_field(".tag", "make_editor")?;
10877 s.end()
10878 }
10879 MemberAction::MakeOwner => {
10880 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10882 s.serialize_field(".tag", "make_owner")?;
10883 s.end()
10884 }
10885 MemberAction::MakeViewer => {
10886 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10888 s.serialize_field(".tag", "make_viewer")?;
10889 s.end()
10890 }
10891 MemberAction::MakeViewerNoComment => {
10892 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10894 s.serialize_field(".tag", "make_viewer_no_comment")?;
10895 s.end()
10896 }
10897 MemberAction::Remove => {
10898 let mut s = serializer.serialize_struct("MemberAction", 1)?;
10900 s.serialize_field(".tag", "remove")?;
10901 s.end()
10902 }
10903 MemberAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
10904 }
10905 }
10906}
10907
10908#[derive(Debug, Clone, PartialEq, Eq)]
10910#[non_exhaustive] pub struct MemberPermission {
10912 pub action: MemberAction,
10914 pub allow: bool,
10916 pub reason: Option<PermissionDeniedReason>,
10918}
10919
10920impl MemberPermission {
10921 pub fn new(action: MemberAction, allow: bool) -> Self {
10922 MemberPermission {
10923 action,
10924 allow,
10925 reason: None,
10926 }
10927 }
10928
10929 pub fn with_reason(mut self, value: PermissionDeniedReason) -> Self {
10930 self.reason = Some(value);
10931 self
10932 }
10933}
10934
10935const MEMBER_PERMISSION_FIELDS: &[&str] = &["action",
10936 "allow",
10937 "reason"];
10938impl MemberPermission {
10939 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
10940 map: V,
10941 ) -> Result<MemberPermission, V::Error> {
10942 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
10943 }
10944
10945 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
10946 mut map: V,
10947 optional: bool,
10948 ) -> Result<Option<MemberPermission>, V::Error> {
10949 let mut field_action = None;
10950 let mut field_allow = None;
10951 let mut field_reason = None;
10952 let mut nothing = true;
10953 while let Some(key) = map.next_key::<&str>()? {
10954 nothing = false;
10955 match key {
10956 "action" => {
10957 if field_action.is_some() {
10958 return Err(::serde::de::Error::duplicate_field("action"));
10959 }
10960 field_action = Some(map.next_value()?);
10961 }
10962 "allow" => {
10963 if field_allow.is_some() {
10964 return Err(::serde::de::Error::duplicate_field("allow"));
10965 }
10966 field_allow = Some(map.next_value()?);
10967 }
10968 "reason" => {
10969 if field_reason.is_some() {
10970 return Err(::serde::de::Error::duplicate_field("reason"));
10971 }
10972 field_reason = Some(map.next_value()?);
10973 }
10974 _ => {
10975 map.next_value::<::serde_json::Value>()?;
10977 }
10978 }
10979 }
10980 if optional && nothing {
10981 return Ok(None);
10982 }
10983 let result = MemberPermission {
10984 action: field_action.ok_or_else(|| ::serde::de::Error::missing_field("action"))?,
10985 allow: field_allow.ok_or_else(|| ::serde::de::Error::missing_field("allow"))?,
10986 reason: field_reason.and_then(Option::flatten),
10987 };
10988 Ok(Some(result))
10989 }
10990
10991 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
10992 &self,
10993 s: &mut S::SerializeStruct,
10994 ) -> Result<(), S::Error> {
10995 use serde::ser::SerializeStruct;
10996 s.serialize_field("action", &self.action)?;
10997 s.serialize_field("allow", &self.allow)?;
10998 if let Some(val) = &self.reason {
10999 s.serialize_field("reason", val)?;
11000 }
11001 Ok(())
11002 }
11003}
11004
11005impl<'de> ::serde::de::Deserialize<'de> for MemberPermission {
11006 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11007 use serde::de::{MapAccess, Visitor};
11009 struct StructVisitor;
11010 impl<'de> Visitor<'de> for StructVisitor {
11011 type Value = MemberPermission;
11012 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11013 f.write_str("a MemberPermission struct")
11014 }
11015 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11016 MemberPermission::internal_deserialize(map)
11017 }
11018 }
11019 deserializer.deserialize_struct("MemberPermission", MEMBER_PERMISSION_FIELDS, StructVisitor)
11020 }
11021}
11022
11023impl ::serde::ser::Serialize for MemberPermission {
11024 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11025 use serde::ser::SerializeStruct;
11027 let mut s = serializer.serialize_struct("MemberPermission", 3)?;
11028 self.internal_serialize::<S>(&mut s)?;
11029 s.end()
11030 }
11031}
11032
11033#[derive(Debug, Clone, PartialEq, Eq)]
11036#[non_exhaustive] pub enum MemberPolicy {
11038 Team,
11040 Anyone,
11042 TeamAndApproved,
11044 Other,
11047}
11048
11049impl<'de> ::serde::de::Deserialize<'de> for MemberPolicy {
11050 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11051 use serde::de::{self, MapAccess, Visitor};
11053 struct EnumVisitor;
11054 impl<'de> Visitor<'de> for EnumVisitor {
11055 type Value = MemberPolicy;
11056 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11057 f.write_str("a MemberPolicy structure")
11058 }
11059 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11060 let tag: &str = match map.next_key()? {
11061 Some(".tag") => map.next_value()?,
11062 _ => return Err(de::Error::missing_field(".tag"))
11063 };
11064 let value = match tag {
11065 "team" => MemberPolicy::Team,
11066 "anyone" => MemberPolicy::Anyone,
11067 "team_and_approved" => MemberPolicy::TeamAndApproved,
11068 _ => MemberPolicy::Other,
11069 };
11070 crate::eat_json_fields(&mut map)?;
11071 Ok(value)
11072 }
11073 }
11074 const VARIANTS: &[&str] = &["team",
11075 "anyone",
11076 "team_and_approved",
11077 "other"];
11078 deserializer.deserialize_struct("MemberPolicy", VARIANTS, EnumVisitor)
11079 }
11080}
11081
11082impl ::serde::ser::Serialize for MemberPolicy {
11083 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11084 use serde::ser::SerializeStruct;
11086 match self {
11087 MemberPolicy::Team => {
11088 let mut s = serializer.serialize_struct("MemberPolicy", 1)?;
11090 s.serialize_field(".tag", "team")?;
11091 s.end()
11092 }
11093 MemberPolicy::Anyone => {
11094 let mut s = serializer.serialize_struct("MemberPolicy", 1)?;
11096 s.serialize_field(".tag", "anyone")?;
11097 s.end()
11098 }
11099 MemberPolicy::TeamAndApproved => {
11100 let mut s = serializer.serialize_struct("MemberPolicy", 1)?;
11102 s.serialize_field(".tag", "team_and_approved")?;
11103 s.end()
11104 }
11105 MemberPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
11106 }
11107 }
11108}
11109
11110#[derive(Debug, Clone, PartialEq, Eq)]
11112#[non_exhaustive] pub enum MemberSelector {
11114 DropboxId(DropboxId),
11116 Email(crate::types::common::EmailAddress),
11118 Other,
11121}
11122
11123impl<'de> ::serde::de::Deserialize<'de> for MemberSelector {
11124 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11125 use serde::de::{self, MapAccess, Visitor};
11127 struct EnumVisitor;
11128 impl<'de> Visitor<'de> for EnumVisitor {
11129 type Value = MemberSelector;
11130 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11131 f.write_str("a MemberSelector structure")
11132 }
11133 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11134 let tag: &str = match map.next_key()? {
11135 Some(".tag") => map.next_value()?,
11136 _ => return Err(de::Error::missing_field(".tag"))
11137 };
11138 let value = match tag {
11139 "dropbox_id" => {
11140 match map.next_key()? {
11141 Some("dropbox_id") => MemberSelector::DropboxId(map.next_value()?),
11142 None => return Err(de::Error::missing_field("dropbox_id")),
11143 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
11144 }
11145 }
11146 "email" => {
11147 match map.next_key()? {
11148 Some("email") => MemberSelector::Email(map.next_value()?),
11149 None => return Err(de::Error::missing_field("email")),
11150 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
11151 }
11152 }
11153 _ => MemberSelector::Other,
11154 };
11155 crate::eat_json_fields(&mut map)?;
11156 Ok(value)
11157 }
11158 }
11159 const VARIANTS: &[&str] = &["dropbox_id",
11160 "email",
11161 "other"];
11162 deserializer.deserialize_struct("MemberSelector", VARIANTS, EnumVisitor)
11163 }
11164}
11165
11166impl ::serde::ser::Serialize for MemberSelector {
11167 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11168 use serde::ser::SerializeStruct;
11170 match self {
11171 MemberSelector::DropboxId(x) => {
11172 let mut s = serializer.serialize_struct("MemberSelector", 2)?;
11174 s.serialize_field(".tag", "dropbox_id")?;
11175 s.serialize_field("dropbox_id", x)?;
11176 s.end()
11177 }
11178 MemberSelector::Email(x) => {
11179 let mut s = serializer.serialize_struct("MemberSelector", 2)?;
11181 s.serialize_field(".tag", "email")?;
11182 s.serialize_field("email", x)?;
11183 s.end()
11184 }
11185 MemberSelector::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
11186 }
11187 }
11188}
11189
11190#[derive(Debug, Clone, PartialEq, Eq)]
11192#[non_exhaustive] pub struct MembershipInfo {
11194 pub access_type: AccessLevel,
11197 pub permissions: Option<Vec<MemberPermission>>,
11200 #[deprecated]
11202 pub initials: Option<String>,
11203 pub is_inherited: bool,
11205}
11206
11207impl MembershipInfo {
11208 pub fn new(access_type: AccessLevel) -> Self {
11209 MembershipInfo {
11210 access_type,
11211 permissions: None,
11212 #[allow(deprecated)] initials: None,
11213 is_inherited: false,
11214 }
11215 }
11216
11217 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
11218 self.permissions = Some(value);
11219 self
11220 }
11221
11222 #[deprecated]
11223 #[allow(deprecated)]
11224 pub fn with_initials(mut self, value: String) -> Self {
11225 self.initials = Some(value);
11226 self
11227 }
11228
11229 pub fn with_is_inherited(mut self, value: bool) -> Self {
11230 self.is_inherited = value;
11231 self
11232 }
11233}
11234
11235const MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
11236 "permissions",
11237 "initials",
11238 "is_inherited"];
11239impl MembershipInfo {
11240 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11241 map: V,
11242 ) -> Result<MembershipInfo, V::Error> {
11243 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11244 }
11245
11246 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11247 mut map: V,
11248 optional: bool,
11249 ) -> Result<Option<MembershipInfo>, V::Error> {
11250 let mut field_access_type = None;
11251 let mut field_permissions = None;
11252 let mut field_initials = None;
11253 let mut field_is_inherited = None;
11254 let mut nothing = true;
11255 while let Some(key) = map.next_key::<&str>()? {
11256 nothing = false;
11257 match key {
11258 "access_type" => {
11259 if field_access_type.is_some() {
11260 return Err(::serde::de::Error::duplicate_field("access_type"));
11261 }
11262 field_access_type = Some(map.next_value()?);
11263 }
11264 "permissions" => {
11265 if field_permissions.is_some() {
11266 return Err(::serde::de::Error::duplicate_field("permissions"));
11267 }
11268 field_permissions = Some(map.next_value()?);
11269 }
11270 "initials" => {
11271 if field_initials.is_some() {
11272 return Err(::serde::de::Error::duplicate_field("initials"));
11273 }
11274 field_initials = Some(map.next_value()?);
11275 }
11276 "is_inherited" => {
11277 if field_is_inherited.is_some() {
11278 return Err(::serde::de::Error::duplicate_field("is_inherited"));
11279 }
11280 field_is_inherited = Some(map.next_value()?);
11281 }
11282 _ => {
11283 map.next_value::<::serde_json::Value>()?;
11285 }
11286 }
11287 }
11288 if optional && nothing {
11289 return Ok(None);
11290 }
11291 let result = MembershipInfo {
11292 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
11293 permissions: field_permissions.and_then(Option::flatten),
11294 #[allow(deprecated)] initials: field_initials.and_then(Option::flatten),
11295 is_inherited: field_is_inherited.unwrap_or(false),
11296 };
11297 Ok(Some(result))
11298 }
11299
11300 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11301 &self,
11302 s: &mut S::SerializeStruct,
11303 ) -> Result<(), S::Error> {
11304 use serde::ser::SerializeStruct;
11305 s.serialize_field("access_type", &self.access_type)?;
11306 if let Some(val) = &self.permissions {
11307 s.serialize_field("permissions", val)?;
11308 }
11309 #[allow(deprecated)]
11310 if let Some(val) = &self.initials {
11311 s.serialize_field("initials", val)?;
11312 }
11313 if self.is_inherited {
11314 s.serialize_field("is_inherited", &self.is_inherited)?;
11315 }
11316 Ok(())
11317 }
11318}
11319
11320impl<'de> ::serde::de::Deserialize<'de> for MembershipInfo {
11321 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11322 use serde::de::{MapAccess, Visitor};
11324 struct StructVisitor;
11325 impl<'de> Visitor<'de> for StructVisitor {
11326 type Value = MembershipInfo;
11327 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11328 f.write_str("a MembershipInfo struct")
11329 }
11330 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11331 MembershipInfo::internal_deserialize(map)
11332 }
11333 }
11334 deserializer.deserialize_struct("MembershipInfo", MEMBERSHIP_INFO_FIELDS, StructVisitor)
11335 }
11336}
11337
11338impl ::serde::ser::Serialize for MembershipInfo {
11339 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11340 use serde::ser::SerializeStruct;
11342 let mut s = serializer.serialize_struct("MembershipInfo", 4)?;
11343 self.internal_serialize::<S>(&mut s)?;
11344 s.end()
11345 }
11346}
11347
11348#[derive(Debug, Clone, PartialEq, Eq)]
11349#[non_exhaustive] pub struct ModifySharedLinkSettingsArgs {
11351 pub url: String,
11353 pub settings: SharedLinkSettings,
11355 pub remove_expiration: bool,
11357}
11358
11359impl ModifySharedLinkSettingsArgs {
11360 pub fn new(url: String, settings: SharedLinkSettings) -> Self {
11361 ModifySharedLinkSettingsArgs {
11362 url,
11363 settings,
11364 remove_expiration: false,
11365 }
11366 }
11367
11368 pub fn with_remove_expiration(mut self, value: bool) -> Self {
11369 self.remove_expiration = value;
11370 self
11371 }
11372}
11373
11374const MODIFY_SHARED_LINK_SETTINGS_ARGS_FIELDS: &[&str] = &["url",
11375 "settings",
11376 "remove_expiration"];
11377impl ModifySharedLinkSettingsArgs {
11378 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11379 map: V,
11380 ) -> Result<ModifySharedLinkSettingsArgs, V::Error> {
11381 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11382 }
11383
11384 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11385 mut map: V,
11386 optional: bool,
11387 ) -> Result<Option<ModifySharedLinkSettingsArgs>, V::Error> {
11388 let mut field_url = None;
11389 let mut field_settings = None;
11390 let mut field_remove_expiration = None;
11391 let mut nothing = true;
11392 while let Some(key) = map.next_key::<&str>()? {
11393 nothing = false;
11394 match key {
11395 "url" => {
11396 if field_url.is_some() {
11397 return Err(::serde::de::Error::duplicate_field("url"));
11398 }
11399 field_url = Some(map.next_value()?);
11400 }
11401 "settings" => {
11402 if field_settings.is_some() {
11403 return Err(::serde::de::Error::duplicate_field("settings"));
11404 }
11405 field_settings = Some(map.next_value()?);
11406 }
11407 "remove_expiration" => {
11408 if field_remove_expiration.is_some() {
11409 return Err(::serde::de::Error::duplicate_field("remove_expiration"));
11410 }
11411 field_remove_expiration = Some(map.next_value()?);
11412 }
11413 _ => {
11414 map.next_value::<::serde_json::Value>()?;
11416 }
11417 }
11418 }
11419 if optional && nothing {
11420 return Ok(None);
11421 }
11422 let result = ModifySharedLinkSettingsArgs {
11423 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
11424 settings: field_settings.ok_or_else(|| ::serde::de::Error::missing_field("settings"))?,
11425 remove_expiration: field_remove_expiration.unwrap_or(false),
11426 };
11427 Ok(Some(result))
11428 }
11429
11430 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11431 &self,
11432 s: &mut S::SerializeStruct,
11433 ) -> Result<(), S::Error> {
11434 use serde::ser::SerializeStruct;
11435 s.serialize_field("url", &self.url)?;
11436 s.serialize_field("settings", &self.settings)?;
11437 if self.remove_expiration {
11438 s.serialize_field("remove_expiration", &self.remove_expiration)?;
11439 }
11440 Ok(())
11441 }
11442}
11443
11444impl<'de> ::serde::de::Deserialize<'de> for ModifySharedLinkSettingsArgs {
11445 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11446 use serde::de::{MapAccess, Visitor};
11448 struct StructVisitor;
11449 impl<'de> Visitor<'de> for StructVisitor {
11450 type Value = ModifySharedLinkSettingsArgs;
11451 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11452 f.write_str("a ModifySharedLinkSettingsArgs struct")
11453 }
11454 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11455 ModifySharedLinkSettingsArgs::internal_deserialize(map)
11456 }
11457 }
11458 deserializer.deserialize_struct("ModifySharedLinkSettingsArgs", MODIFY_SHARED_LINK_SETTINGS_ARGS_FIELDS, StructVisitor)
11459 }
11460}
11461
11462impl ::serde::ser::Serialize for ModifySharedLinkSettingsArgs {
11463 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11464 use serde::ser::SerializeStruct;
11466 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsArgs", 3)?;
11467 self.internal_serialize::<S>(&mut s)?;
11468 s.end()
11469 }
11470}
11471
11472#[derive(Debug, Clone, PartialEq, Eq)]
11473#[non_exhaustive] pub enum ModifySharedLinkSettingsError {
11475 SharedLinkNotFound,
11477 SharedLinkAccessDenied,
11479 UnsupportedLinkType,
11481 UnsupportedParameterField,
11483 SettingsError(SharedLinkSettingsError),
11485 EmailNotVerified,
11489 Other,
11492}
11493
11494impl<'de> ::serde::de::Deserialize<'de> for ModifySharedLinkSettingsError {
11495 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11496 use serde::de::{self, MapAccess, Visitor};
11498 struct EnumVisitor;
11499 impl<'de> Visitor<'de> for EnumVisitor {
11500 type Value = ModifySharedLinkSettingsError;
11501 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11502 f.write_str("a ModifySharedLinkSettingsError structure")
11503 }
11504 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11505 let tag: &str = match map.next_key()? {
11506 Some(".tag") => map.next_value()?,
11507 _ => return Err(de::Error::missing_field(".tag"))
11508 };
11509 let value = match tag {
11510 "shared_link_not_found" => ModifySharedLinkSettingsError::SharedLinkNotFound,
11511 "shared_link_access_denied" => ModifySharedLinkSettingsError::SharedLinkAccessDenied,
11512 "unsupported_link_type" => ModifySharedLinkSettingsError::UnsupportedLinkType,
11513 "unsupported_parameter_field" => ModifySharedLinkSettingsError::UnsupportedParameterField,
11514 "settings_error" => {
11515 match map.next_key()? {
11516 Some("settings_error") => ModifySharedLinkSettingsError::SettingsError(map.next_value()?),
11517 None => return Err(de::Error::missing_field("settings_error")),
11518 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
11519 }
11520 }
11521 "email_not_verified" => ModifySharedLinkSettingsError::EmailNotVerified,
11522 _ => ModifySharedLinkSettingsError::Other,
11523 };
11524 crate::eat_json_fields(&mut map)?;
11525 Ok(value)
11526 }
11527 }
11528 const VARIANTS: &[&str] = &["shared_link_not_found",
11529 "shared_link_access_denied",
11530 "unsupported_link_type",
11531 "unsupported_parameter_field",
11532 "other",
11533 "settings_error",
11534 "email_not_verified"];
11535 deserializer.deserialize_struct("ModifySharedLinkSettingsError", VARIANTS, EnumVisitor)
11536 }
11537}
11538
11539impl ::serde::ser::Serialize for ModifySharedLinkSettingsError {
11540 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11541 use serde::ser::SerializeStruct;
11543 match self {
11544 ModifySharedLinkSettingsError::SharedLinkNotFound => {
11545 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11547 s.serialize_field(".tag", "shared_link_not_found")?;
11548 s.end()
11549 }
11550 ModifySharedLinkSettingsError::SharedLinkAccessDenied => {
11551 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11553 s.serialize_field(".tag", "shared_link_access_denied")?;
11554 s.end()
11555 }
11556 ModifySharedLinkSettingsError::UnsupportedLinkType => {
11557 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11559 s.serialize_field(".tag", "unsupported_link_type")?;
11560 s.end()
11561 }
11562 ModifySharedLinkSettingsError::UnsupportedParameterField => {
11563 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11565 s.serialize_field(".tag", "unsupported_parameter_field")?;
11566 s.end()
11567 }
11568 ModifySharedLinkSettingsError::SettingsError(x) => {
11569 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 2)?;
11571 s.serialize_field(".tag", "settings_error")?;
11572 s.serialize_field("settings_error", x)?;
11573 s.end()
11574 }
11575 ModifySharedLinkSettingsError::EmailNotVerified => {
11576 let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?;
11578 s.serialize_field(".tag", "email_not_verified")?;
11579 s.end()
11580 }
11581 ModifySharedLinkSettingsError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
11582 }
11583 }
11584}
11585
11586impl ::std::error::Error for ModifySharedLinkSettingsError {
11587 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
11588 match self {
11589 ModifySharedLinkSettingsError::SettingsError(inner) => Some(inner),
11590 _ => None,
11591 }
11592 }
11593}
11594
11595impl ::std::fmt::Display for ModifySharedLinkSettingsError {
11596 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11597 match self {
11598 ModifySharedLinkSettingsError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
11599 ModifySharedLinkSettingsError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
11600 ModifySharedLinkSettingsError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."),
11601 ModifySharedLinkSettingsError::SettingsError(inner) => write!(f, "There is an error with the given settings: {}", inner),
11602 _ => write!(f, "{:?}", *self),
11603 }
11604 }
11605}
11606
11607impl From<SharedLinkError> for ModifySharedLinkSettingsError {
11609 fn from(parent: SharedLinkError) -> Self {
11610 match parent {
11611 SharedLinkError::SharedLinkNotFound => ModifySharedLinkSettingsError::SharedLinkNotFound,
11612 SharedLinkError::SharedLinkAccessDenied => ModifySharedLinkSettingsError::SharedLinkAccessDenied,
11613 SharedLinkError::UnsupportedLinkType => ModifySharedLinkSettingsError::UnsupportedLinkType,
11614 SharedLinkError::UnsupportedParameterField => ModifySharedLinkSettingsError::UnsupportedParameterField,
11615 SharedLinkError::Other => ModifySharedLinkSettingsError::Other,
11616 }
11617 }
11618}
11619#[derive(Debug, Clone, PartialEq, Eq)]
11620#[non_exhaustive] pub struct MountFolderArg {
11622 pub shared_folder_id: crate::types::common::SharedFolderId,
11624}
11625
11626impl MountFolderArg {
11627 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
11628 MountFolderArg {
11629 shared_folder_id,
11630 }
11631 }
11632}
11633
11634const MOUNT_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id"];
11635impl MountFolderArg {
11636 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11637 map: V,
11638 ) -> Result<MountFolderArg, V::Error> {
11639 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11640 }
11641
11642 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11643 mut map: V,
11644 optional: bool,
11645 ) -> Result<Option<MountFolderArg>, V::Error> {
11646 let mut field_shared_folder_id = None;
11647 let mut nothing = true;
11648 while let Some(key) = map.next_key::<&str>()? {
11649 nothing = false;
11650 match key {
11651 "shared_folder_id" => {
11652 if field_shared_folder_id.is_some() {
11653 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
11654 }
11655 field_shared_folder_id = Some(map.next_value()?);
11656 }
11657 _ => {
11658 map.next_value::<::serde_json::Value>()?;
11660 }
11661 }
11662 }
11663 if optional && nothing {
11664 return Ok(None);
11665 }
11666 let result = MountFolderArg {
11667 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
11668 };
11669 Ok(Some(result))
11670 }
11671
11672 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11673 &self,
11674 s: &mut S::SerializeStruct,
11675 ) -> Result<(), S::Error> {
11676 use serde::ser::SerializeStruct;
11677 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
11678 Ok(())
11679 }
11680}
11681
11682impl<'de> ::serde::de::Deserialize<'de> for MountFolderArg {
11683 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11684 use serde::de::{MapAccess, Visitor};
11686 struct StructVisitor;
11687 impl<'de> Visitor<'de> for StructVisitor {
11688 type Value = MountFolderArg;
11689 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11690 f.write_str("a MountFolderArg struct")
11691 }
11692 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11693 MountFolderArg::internal_deserialize(map)
11694 }
11695 }
11696 deserializer.deserialize_struct("MountFolderArg", MOUNT_FOLDER_ARG_FIELDS, StructVisitor)
11697 }
11698}
11699
11700impl ::serde::ser::Serialize for MountFolderArg {
11701 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11702 use serde::ser::SerializeStruct;
11704 let mut s = serializer.serialize_struct("MountFolderArg", 1)?;
11705 self.internal_serialize::<S>(&mut s)?;
11706 s.end()
11707 }
11708}
11709
11710#[derive(Debug, Clone, PartialEq, Eq)]
11711#[non_exhaustive] pub enum MountFolderError {
11713 AccessError(SharedFolderAccessError),
11714 InsideSharedFolder,
11716 InsufficientQuota(InsufficientQuotaAmounts),
11718 AlreadyMounted,
11720 NoPermission,
11722 NotMountable,
11725 MustAutomount,
11728 Other,
11731}
11732
11733impl<'de> ::serde::de::Deserialize<'de> for MountFolderError {
11734 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11735 use serde::de::{self, MapAccess, Visitor};
11737 struct EnumVisitor;
11738 impl<'de> Visitor<'de> for EnumVisitor {
11739 type Value = MountFolderError;
11740 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11741 f.write_str("a MountFolderError structure")
11742 }
11743 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
11744 let tag: &str = match map.next_key()? {
11745 Some(".tag") => map.next_value()?,
11746 _ => return Err(de::Error::missing_field(".tag"))
11747 };
11748 let value = match tag {
11749 "access_error" => {
11750 match map.next_key()? {
11751 Some("access_error") => MountFolderError::AccessError(map.next_value()?),
11752 None => return Err(de::Error::missing_field("access_error")),
11753 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
11754 }
11755 }
11756 "inside_shared_folder" => MountFolderError::InsideSharedFolder,
11757 "insufficient_quota" => MountFolderError::InsufficientQuota(InsufficientQuotaAmounts::internal_deserialize(&mut map)?),
11758 "already_mounted" => MountFolderError::AlreadyMounted,
11759 "no_permission" => MountFolderError::NoPermission,
11760 "not_mountable" => MountFolderError::NotMountable,
11761 "must_automount" => MountFolderError::MustAutomount,
11762 _ => MountFolderError::Other,
11763 };
11764 crate::eat_json_fields(&mut map)?;
11765 Ok(value)
11766 }
11767 }
11768 const VARIANTS: &[&str] = &["access_error",
11769 "inside_shared_folder",
11770 "insufficient_quota",
11771 "already_mounted",
11772 "no_permission",
11773 "not_mountable",
11774 "must_automount",
11775 "other"];
11776 deserializer.deserialize_struct("MountFolderError", VARIANTS, EnumVisitor)
11777 }
11778}
11779
11780impl ::serde::ser::Serialize for MountFolderError {
11781 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11782 use serde::ser::SerializeStruct;
11784 match self {
11785 MountFolderError::AccessError(x) => {
11786 let mut s = serializer.serialize_struct("MountFolderError", 2)?;
11788 s.serialize_field(".tag", "access_error")?;
11789 s.serialize_field("access_error", x)?;
11790 s.end()
11791 }
11792 MountFolderError::InsideSharedFolder => {
11793 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11795 s.serialize_field(".tag", "inside_shared_folder")?;
11796 s.end()
11797 }
11798 MountFolderError::InsufficientQuota(x) => {
11799 let mut s = serializer.serialize_struct("MountFolderError", 4)?;
11801 s.serialize_field(".tag", "insufficient_quota")?;
11802 x.internal_serialize::<S>(&mut s)?;
11803 s.end()
11804 }
11805 MountFolderError::AlreadyMounted => {
11806 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11808 s.serialize_field(".tag", "already_mounted")?;
11809 s.end()
11810 }
11811 MountFolderError::NoPermission => {
11812 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11814 s.serialize_field(".tag", "no_permission")?;
11815 s.end()
11816 }
11817 MountFolderError::NotMountable => {
11818 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11820 s.serialize_field(".tag", "not_mountable")?;
11821 s.end()
11822 }
11823 MountFolderError::MustAutomount => {
11824 let mut s = serializer.serialize_struct("MountFolderError", 1)?;
11826 s.serialize_field(".tag", "must_automount")?;
11827 s.end()
11828 }
11829 MountFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
11830 }
11831 }
11832}
11833
11834impl ::std::error::Error for MountFolderError {
11835 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
11836 match self {
11837 MountFolderError::AccessError(inner) => Some(inner),
11838 _ => None,
11839 }
11840 }
11841}
11842
11843impl ::std::fmt::Display for MountFolderError {
11844 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11845 match self {
11846 MountFolderError::AccessError(inner) => write!(f, "MountFolderError: {}", inner),
11847 MountFolderError::InsideSharedFolder => f.write_str("Mounting would cause a shared folder to be inside another, which is disallowed."),
11848 MountFolderError::InsufficientQuota(inner) => write!(f, "The current user does not have enough space to mount the shared folder: {:?}", inner),
11849 MountFolderError::AlreadyMounted => f.write_str("The shared folder is already mounted."),
11850 MountFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
11851 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."),
11852 MountFolderError::MustAutomount => f.write_str("The shared folder is not mountable by directly call APIs, instead the automounter is responsible for mounting it."),
11853 _ => write!(f, "{:?}", *self),
11854 }
11855 }
11856}
11857
11858#[derive(Debug, Clone, PartialEq, Eq)]
11860#[non_exhaustive] pub struct ParentFolderAccessInfo {
11862 pub folder_name: String,
11864 pub shared_folder_id: crate::types::common::SharedFolderId,
11866 pub permissions: Vec<MemberPermission>,
11868 pub path: String,
11870}
11871
11872impl ParentFolderAccessInfo {
11873 pub fn new(
11874 folder_name: String,
11875 shared_folder_id: crate::types::common::SharedFolderId,
11876 permissions: Vec<MemberPermission>,
11877 path: String,
11878 ) -> Self {
11879 ParentFolderAccessInfo {
11880 folder_name,
11881 shared_folder_id,
11882 permissions,
11883 path,
11884 }
11885 }
11886}
11887
11888const PARENT_FOLDER_ACCESS_INFO_FIELDS: &[&str] = &["folder_name",
11889 "shared_folder_id",
11890 "permissions",
11891 "path"];
11892impl ParentFolderAccessInfo {
11893 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
11894 map: V,
11895 ) -> Result<ParentFolderAccessInfo, V::Error> {
11896 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
11897 }
11898
11899 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
11900 mut map: V,
11901 optional: bool,
11902 ) -> Result<Option<ParentFolderAccessInfo>, V::Error> {
11903 let mut field_folder_name = None;
11904 let mut field_shared_folder_id = None;
11905 let mut field_permissions = None;
11906 let mut field_path = None;
11907 let mut nothing = true;
11908 while let Some(key) = map.next_key::<&str>()? {
11909 nothing = false;
11910 match key {
11911 "folder_name" => {
11912 if field_folder_name.is_some() {
11913 return Err(::serde::de::Error::duplicate_field("folder_name"));
11914 }
11915 field_folder_name = Some(map.next_value()?);
11916 }
11917 "shared_folder_id" => {
11918 if field_shared_folder_id.is_some() {
11919 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
11920 }
11921 field_shared_folder_id = Some(map.next_value()?);
11922 }
11923 "permissions" => {
11924 if field_permissions.is_some() {
11925 return Err(::serde::de::Error::duplicate_field("permissions"));
11926 }
11927 field_permissions = Some(map.next_value()?);
11928 }
11929 "path" => {
11930 if field_path.is_some() {
11931 return Err(::serde::de::Error::duplicate_field("path"));
11932 }
11933 field_path = Some(map.next_value()?);
11934 }
11935 _ => {
11936 map.next_value::<::serde_json::Value>()?;
11938 }
11939 }
11940 }
11941 if optional && nothing {
11942 return Ok(None);
11943 }
11944 let result = ParentFolderAccessInfo {
11945 folder_name: field_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("folder_name"))?,
11946 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
11947 permissions: field_permissions.ok_or_else(|| ::serde::de::Error::missing_field("permissions"))?,
11948 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
11949 };
11950 Ok(Some(result))
11951 }
11952
11953 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
11954 &self,
11955 s: &mut S::SerializeStruct,
11956 ) -> Result<(), S::Error> {
11957 use serde::ser::SerializeStruct;
11958 s.serialize_field("folder_name", &self.folder_name)?;
11959 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
11960 s.serialize_field("permissions", &self.permissions)?;
11961 s.serialize_field("path", &self.path)?;
11962 Ok(())
11963 }
11964}
11965
11966impl<'de> ::serde::de::Deserialize<'de> for ParentFolderAccessInfo {
11967 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11968 use serde::de::{MapAccess, Visitor};
11970 struct StructVisitor;
11971 impl<'de> Visitor<'de> for StructVisitor {
11972 type Value = ParentFolderAccessInfo;
11973 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11974 f.write_str("a ParentFolderAccessInfo struct")
11975 }
11976 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
11977 ParentFolderAccessInfo::internal_deserialize(map)
11978 }
11979 }
11980 deserializer.deserialize_struct("ParentFolderAccessInfo", PARENT_FOLDER_ACCESS_INFO_FIELDS, StructVisitor)
11981 }
11982}
11983
11984impl ::serde::ser::Serialize for ParentFolderAccessInfo {
11985 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11986 use serde::ser::SerializeStruct;
11988 let mut s = serializer.serialize_struct("ParentFolderAccessInfo", 4)?;
11989 self.internal_serialize::<S>(&mut s)?;
11990 s.end()
11991 }
11992}
11993
11994#[derive(Debug, Clone, PartialEq, Eq)]
11996#[non_exhaustive] pub struct PathLinkMetadata {
11998 pub url: String,
12000 pub visibility: Visibility,
12002 pub path: String,
12004 pub expires: Option<crate::types::common::DropboxTimestamp>,
12006}
12007
12008impl PathLinkMetadata {
12009 pub fn new(url: String, visibility: Visibility, path: String) -> Self {
12010 PathLinkMetadata {
12011 url,
12012 visibility,
12013 path,
12014 expires: None,
12015 }
12016 }
12017
12018 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
12019 self.expires = Some(value);
12020 self
12021 }
12022}
12023
12024const PATH_LINK_METADATA_FIELDS: &[&str] = &["url",
12025 "visibility",
12026 "path",
12027 "expires"];
12028impl PathLinkMetadata {
12029 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12030 map: V,
12031 ) -> Result<PathLinkMetadata, V::Error> {
12032 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
12033 }
12034
12035 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
12036 mut map: V,
12037 optional: bool,
12038 ) -> Result<Option<PathLinkMetadata>, V::Error> {
12039 let mut field_url = None;
12040 let mut field_visibility = None;
12041 let mut field_path = None;
12042 let mut field_expires = None;
12043 let mut nothing = true;
12044 while let Some(key) = map.next_key::<&str>()? {
12045 nothing = false;
12046 match key {
12047 "url" => {
12048 if field_url.is_some() {
12049 return Err(::serde::de::Error::duplicate_field("url"));
12050 }
12051 field_url = Some(map.next_value()?);
12052 }
12053 "visibility" => {
12054 if field_visibility.is_some() {
12055 return Err(::serde::de::Error::duplicate_field("visibility"));
12056 }
12057 field_visibility = Some(map.next_value()?);
12058 }
12059 "path" => {
12060 if field_path.is_some() {
12061 return Err(::serde::de::Error::duplicate_field("path"));
12062 }
12063 field_path = Some(map.next_value()?);
12064 }
12065 "expires" => {
12066 if field_expires.is_some() {
12067 return Err(::serde::de::Error::duplicate_field("expires"));
12068 }
12069 field_expires = Some(map.next_value()?);
12070 }
12071 _ => {
12072 map.next_value::<::serde_json::Value>()?;
12074 }
12075 }
12076 }
12077 if optional && nothing {
12078 return Ok(None);
12079 }
12080 let result = PathLinkMetadata {
12081 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
12082 visibility: field_visibility.ok_or_else(|| ::serde::de::Error::missing_field("visibility"))?,
12083 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
12084 expires: field_expires.and_then(Option::flatten),
12085 };
12086 Ok(Some(result))
12087 }
12088
12089 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
12090 &self,
12091 s: &mut S::SerializeStruct,
12092 ) -> Result<(), S::Error> {
12093 use serde::ser::SerializeStruct;
12094 s.serialize_field("url", &self.url)?;
12095 s.serialize_field("visibility", &self.visibility)?;
12096 s.serialize_field("path", &self.path)?;
12097 if let Some(val) = &self.expires {
12098 s.serialize_field("expires", val)?;
12099 }
12100 Ok(())
12101 }
12102}
12103
12104impl<'de> ::serde::de::Deserialize<'de> for PathLinkMetadata {
12105 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12106 use serde::de::{MapAccess, Visitor};
12108 struct StructVisitor;
12109 impl<'de> Visitor<'de> for StructVisitor {
12110 type Value = PathLinkMetadata;
12111 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12112 f.write_str("a PathLinkMetadata struct")
12113 }
12114 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12115 PathLinkMetadata::internal_deserialize(map)
12116 }
12117 }
12118 deserializer.deserialize_struct("PathLinkMetadata", PATH_LINK_METADATA_FIELDS, StructVisitor)
12119 }
12120}
12121
12122impl ::serde::ser::Serialize for PathLinkMetadata {
12123 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12124 use serde::ser::SerializeStruct;
12126 let mut s = serializer.serialize_struct("PathLinkMetadata", 4)?;
12127 self.internal_serialize::<S>(&mut s)?;
12128 s.end()
12129 }
12130}
12131
12132impl From<PathLinkMetadata> for LinkMetadata {
12134 fn from(subtype: PathLinkMetadata) -> Self {
12135 LinkMetadata::Path(subtype)
12136 }
12137}
12138#[derive(Debug, Clone, PartialEq, Eq)]
12140pub enum PendingUploadMode {
12141 File,
12143 Folder,
12145}
12146
12147impl<'de> ::serde::de::Deserialize<'de> for PendingUploadMode {
12148 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12149 use serde::de::{self, MapAccess, Visitor};
12151 struct EnumVisitor;
12152 impl<'de> Visitor<'de> for EnumVisitor {
12153 type Value = PendingUploadMode;
12154 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12155 f.write_str("a PendingUploadMode structure")
12156 }
12157 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12158 let tag: &str = match map.next_key()? {
12159 Some(".tag") => map.next_value()?,
12160 _ => return Err(de::Error::missing_field(".tag"))
12161 };
12162 let value = match tag {
12163 "file" => PendingUploadMode::File,
12164 "folder" => PendingUploadMode::Folder,
12165 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
12166 };
12167 crate::eat_json_fields(&mut map)?;
12168 Ok(value)
12169 }
12170 }
12171 const VARIANTS: &[&str] = &["file",
12172 "folder"];
12173 deserializer.deserialize_struct("PendingUploadMode", VARIANTS, EnumVisitor)
12174 }
12175}
12176
12177impl ::serde::ser::Serialize for PendingUploadMode {
12178 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12179 use serde::ser::SerializeStruct;
12181 match self {
12182 PendingUploadMode::File => {
12183 let mut s = serializer.serialize_struct("PendingUploadMode", 1)?;
12185 s.serialize_field(".tag", "file")?;
12186 s.end()
12187 }
12188 PendingUploadMode::Folder => {
12189 let mut s = serializer.serialize_struct("PendingUploadMode", 1)?;
12191 s.serialize_field(".tag", "folder")?;
12192 s.end()
12193 }
12194 }
12195 }
12196}
12197
12198#[derive(Debug, Clone, PartialEq, Eq)]
12200#[non_exhaustive] pub enum PermissionDeniedReason {
12202 UserNotSameTeamAsOwner,
12204 UserNotAllowedByOwner,
12206 TargetIsIndirectMember,
12208 TargetIsOwner,
12210 TargetIsSelf,
12212 TargetNotActive,
12214 FolderIsLimitedTeamFolder,
12216 OwnerNotOnTeam,
12218 PermissionDenied,
12220 RestrictedByTeam,
12222 UserAccountType,
12224 UserNotOnTeam,
12226 FolderIsInsideSharedFolder,
12228 RestrictedByParentFolder,
12230 InsufficientPlan(InsufficientPlan),
12231 Other,
12234}
12235
12236impl<'de> ::serde::de::Deserialize<'de> for PermissionDeniedReason {
12237 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12238 use serde::de::{self, MapAccess, Visitor};
12240 struct EnumVisitor;
12241 impl<'de> Visitor<'de> for EnumVisitor {
12242 type Value = PermissionDeniedReason;
12243 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12244 f.write_str("a PermissionDeniedReason structure")
12245 }
12246 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12247 let tag: &str = match map.next_key()? {
12248 Some(".tag") => map.next_value()?,
12249 _ => return Err(de::Error::missing_field(".tag"))
12250 };
12251 let value = match tag {
12252 "user_not_same_team_as_owner" => PermissionDeniedReason::UserNotSameTeamAsOwner,
12253 "user_not_allowed_by_owner" => PermissionDeniedReason::UserNotAllowedByOwner,
12254 "target_is_indirect_member" => PermissionDeniedReason::TargetIsIndirectMember,
12255 "target_is_owner" => PermissionDeniedReason::TargetIsOwner,
12256 "target_is_self" => PermissionDeniedReason::TargetIsSelf,
12257 "target_not_active" => PermissionDeniedReason::TargetNotActive,
12258 "folder_is_limited_team_folder" => PermissionDeniedReason::FolderIsLimitedTeamFolder,
12259 "owner_not_on_team" => PermissionDeniedReason::OwnerNotOnTeam,
12260 "permission_denied" => PermissionDeniedReason::PermissionDenied,
12261 "restricted_by_team" => PermissionDeniedReason::RestrictedByTeam,
12262 "user_account_type" => PermissionDeniedReason::UserAccountType,
12263 "user_not_on_team" => PermissionDeniedReason::UserNotOnTeam,
12264 "folder_is_inside_shared_folder" => PermissionDeniedReason::FolderIsInsideSharedFolder,
12265 "restricted_by_parent_folder" => PermissionDeniedReason::RestrictedByParentFolder,
12266 "insufficient_plan" => PermissionDeniedReason::InsufficientPlan(InsufficientPlan::internal_deserialize(&mut map)?),
12267 _ => PermissionDeniedReason::Other,
12268 };
12269 crate::eat_json_fields(&mut map)?;
12270 Ok(value)
12271 }
12272 }
12273 const VARIANTS: &[&str] = &["user_not_same_team_as_owner",
12274 "user_not_allowed_by_owner",
12275 "target_is_indirect_member",
12276 "target_is_owner",
12277 "target_is_self",
12278 "target_not_active",
12279 "folder_is_limited_team_folder",
12280 "owner_not_on_team",
12281 "permission_denied",
12282 "restricted_by_team",
12283 "user_account_type",
12284 "user_not_on_team",
12285 "folder_is_inside_shared_folder",
12286 "restricted_by_parent_folder",
12287 "insufficient_plan",
12288 "other"];
12289 deserializer.deserialize_struct("PermissionDeniedReason", VARIANTS, EnumVisitor)
12290 }
12291}
12292
12293impl ::serde::ser::Serialize for PermissionDeniedReason {
12294 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12295 use serde::ser::SerializeStruct;
12297 match self {
12298 PermissionDeniedReason::UserNotSameTeamAsOwner => {
12299 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12301 s.serialize_field(".tag", "user_not_same_team_as_owner")?;
12302 s.end()
12303 }
12304 PermissionDeniedReason::UserNotAllowedByOwner => {
12305 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12307 s.serialize_field(".tag", "user_not_allowed_by_owner")?;
12308 s.end()
12309 }
12310 PermissionDeniedReason::TargetIsIndirectMember => {
12311 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12313 s.serialize_field(".tag", "target_is_indirect_member")?;
12314 s.end()
12315 }
12316 PermissionDeniedReason::TargetIsOwner => {
12317 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12319 s.serialize_field(".tag", "target_is_owner")?;
12320 s.end()
12321 }
12322 PermissionDeniedReason::TargetIsSelf => {
12323 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12325 s.serialize_field(".tag", "target_is_self")?;
12326 s.end()
12327 }
12328 PermissionDeniedReason::TargetNotActive => {
12329 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12331 s.serialize_field(".tag", "target_not_active")?;
12332 s.end()
12333 }
12334 PermissionDeniedReason::FolderIsLimitedTeamFolder => {
12335 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12337 s.serialize_field(".tag", "folder_is_limited_team_folder")?;
12338 s.end()
12339 }
12340 PermissionDeniedReason::OwnerNotOnTeam => {
12341 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12343 s.serialize_field(".tag", "owner_not_on_team")?;
12344 s.end()
12345 }
12346 PermissionDeniedReason::PermissionDenied => {
12347 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12349 s.serialize_field(".tag", "permission_denied")?;
12350 s.end()
12351 }
12352 PermissionDeniedReason::RestrictedByTeam => {
12353 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12355 s.serialize_field(".tag", "restricted_by_team")?;
12356 s.end()
12357 }
12358 PermissionDeniedReason::UserAccountType => {
12359 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12361 s.serialize_field(".tag", "user_account_type")?;
12362 s.end()
12363 }
12364 PermissionDeniedReason::UserNotOnTeam => {
12365 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12367 s.serialize_field(".tag", "user_not_on_team")?;
12368 s.end()
12369 }
12370 PermissionDeniedReason::FolderIsInsideSharedFolder => {
12371 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12373 s.serialize_field(".tag", "folder_is_inside_shared_folder")?;
12374 s.end()
12375 }
12376 PermissionDeniedReason::RestrictedByParentFolder => {
12377 let mut s = serializer.serialize_struct("PermissionDeniedReason", 1)?;
12379 s.serialize_field(".tag", "restricted_by_parent_folder")?;
12380 s.end()
12381 }
12382 PermissionDeniedReason::InsufficientPlan(x) => {
12383 let mut s = serializer.serialize_struct("PermissionDeniedReason", 3)?;
12385 s.serialize_field(".tag", "insufficient_plan")?;
12386 x.internal_serialize::<S>(&mut s)?;
12387 s.end()
12388 }
12389 PermissionDeniedReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
12390 }
12391 }
12392}
12393
12394#[derive(Debug, Clone, PartialEq, Eq)]
12398#[non_exhaustive] pub struct RelinquishAccessArg {
12400 pub file_id: String,
12402}
12403
12404impl RelinquishAccessArg {
12405 pub fn new(file_id: String) -> Self {
12406 RelinquishAccessArg {
12407 file_id,
12408 }
12409 }
12410}
12411
12412const RELINQUISH_ACCESS_ARG_FIELDS: &[&str] = &["file_id"];
12413impl RelinquishAccessArg {
12414 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12415 map: V,
12416 ) -> Result<RelinquishAccessArg, V::Error> {
12417 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
12418 }
12419
12420 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
12421 mut map: V,
12422 optional: bool,
12423 ) -> Result<Option<RelinquishAccessArg>, V::Error> {
12424 let mut field_file_id = None;
12425 let mut nothing = true;
12426 while let Some(key) = map.next_key::<&str>()? {
12427 nothing = false;
12428 match key {
12429 "file_id" => {
12430 if field_file_id.is_some() {
12431 return Err(::serde::de::Error::duplicate_field("file_id"));
12432 }
12433 field_file_id = Some(map.next_value()?);
12434 }
12435 _ => {
12436 map.next_value::<::serde_json::Value>()?;
12438 }
12439 }
12440 }
12441 if optional && nothing {
12442 return Ok(None);
12443 }
12444 let result = RelinquishAccessArg {
12445 file_id: field_file_id.ok_or_else(|| ::serde::de::Error::missing_field("file_id"))?,
12446 };
12447 Ok(Some(result))
12448 }
12449
12450 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
12451 &self,
12452 s: &mut S::SerializeStruct,
12453 ) -> Result<(), S::Error> {
12454 use serde::ser::SerializeStruct;
12455 s.serialize_field("file_id", &self.file_id)?;
12456 Ok(())
12457 }
12458}
12459
12460impl<'de> ::serde::de::Deserialize<'de> for RelinquishAccessArg {
12461 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12462 use serde::de::{MapAccess, Visitor};
12464 struct StructVisitor;
12465 impl<'de> Visitor<'de> for StructVisitor {
12466 type Value = RelinquishAccessArg;
12467 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12468 f.write_str("a RelinquishAccessArg struct")
12469 }
12470 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12471 RelinquishAccessArg::internal_deserialize(map)
12472 }
12473 }
12474 deserializer.deserialize_struct("RelinquishAccessArg", RELINQUISH_ACCESS_ARG_FIELDS, StructVisitor)
12475 }
12476}
12477
12478impl ::serde::ser::Serialize for RelinquishAccessArg {
12479 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12480 use serde::ser::SerializeStruct;
12482 let mut s = serializer.serialize_struct("RelinquishAccessArg", 1)?;
12483 self.internal_serialize::<S>(&mut s)?;
12484 s.end()
12485 }
12486}
12487
12488#[derive(Debug, Clone, PartialEq, Eq)]
12490#[non_exhaustive] pub enum RelinquishAccessError {
12492 InvalidFileId,
12494 EmailUnverified,
12496 Owner,
12498 NoExplicitAccess,
12503 TeamFolder,
12505 NoPermission,
12507 Other,
12510}
12511
12512impl<'de> ::serde::de::Deserialize<'de> for RelinquishAccessError {
12513 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12514 use serde::de::{self, MapAccess, Visitor};
12516 struct EnumVisitor;
12517 impl<'de> Visitor<'de> for EnumVisitor {
12518 type Value = RelinquishAccessError;
12519 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12520 f.write_str("a RelinquishAccessError structure")
12521 }
12522 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12523 let tag: &str = match map.next_key()? {
12524 Some(".tag") => map.next_value()?,
12525 _ => return Err(de::Error::missing_field(".tag"))
12526 };
12527 let value = match tag {
12528 "invalid_file_id" => RelinquishAccessError::InvalidFileId,
12529 "email_unverified" => RelinquishAccessError::EmailUnverified,
12530 "owner" => RelinquishAccessError::Owner,
12531 "no_explicit_access" => RelinquishAccessError::NoExplicitAccess,
12532 "team_folder" => RelinquishAccessError::TeamFolder,
12533 "no_permission" => RelinquishAccessError::NoPermission,
12534 _ => RelinquishAccessError::Other,
12535 };
12536 crate::eat_json_fields(&mut map)?;
12537 Ok(value)
12538 }
12539 }
12540 const VARIANTS: &[&str] = &["invalid_file_id",
12541 "email_unverified",
12542 "owner",
12543 "no_explicit_access",
12544 "team_folder",
12545 "no_permission",
12546 "other"];
12547 deserializer.deserialize_struct("RelinquishAccessError", VARIANTS, EnumVisitor)
12548 }
12549}
12550
12551impl ::serde::ser::Serialize for RelinquishAccessError {
12552 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12553 use serde::ser::SerializeStruct;
12555 match self {
12556 RelinquishAccessError::InvalidFileId => {
12557 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12559 s.serialize_field(".tag", "invalid_file_id")?;
12560 s.end()
12561 }
12562 RelinquishAccessError::EmailUnverified => {
12563 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12565 s.serialize_field(".tag", "email_unverified")?;
12566 s.end()
12567 }
12568 RelinquishAccessError::Owner => {
12569 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12571 s.serialize_field(".tag", "owner")?;
12572 s.end()
12573 }
12574 RelinquishAccessError::NoExplicitAccess => {
12575 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12577 s.serialize_field(".tag", "no_explicit_access")?;
12578 s.end()
12579 }
12580 RelinquishAccessError::TeamFolder => {
12581 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12583 s.serialize_field(".tag", "team_folder")?;
12584 s.end()
12585 }
12586 RelinquishAccessError::NoPermission => {
12587 let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?;
12589 s.serialize_field(".tag", "no_permission")?;
12590 s.end()
12591 }
12592 RelinquishAccessError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
12593 }
12594 }
12595}
12596
12597impl ::std::error::Error for RelinquishAccessError {
12598}
12599
12600impl ::std::fmt::Display for RelinquishAccessError {
12601 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12602 match self {
12603 RelinquishAccessError::InvalidFileId => f.write_str("File or folder not found or has been deleted."),
12604 RelinquishAccessError::EmailUnverified => f.write_str("Caller's email address is not verified."),
12605 RelinquishAccessError::Owner => f.write_str("User is the owner of the file/folder."),
12606 RelinquishAccessError::NoExplicitAccess => f.write_str("User has only non-removable access — inherited from a parent folder or via group membership. Either way, relinquish_access cannot remove the caller's access from this surface; the caller must take action on the source of the access (e.g. leave the parent shared folder, or be removed from the group)."),
12607 RelinquishAccessError::TeamFolder => f.write_str("Team folder restrictions apply."),
12608 RelinquishAccessError::NoPermission => f.write_str("Caller does not have permission to perform this action. Generic fallback."),
12609 _ => write!(f, "{:?}", *self),
12610 }
12611 }
12612}
12613
12614#[derive(Debug, Clone, PartialEq, Eq, Default)]
12616#[non_exhaustive] pub struct RelinquishAccessResult {
12618}
12619
12620const RELINQUISH_ACCESS_RESULT_FIELDS: &[&str] = &[];
12621impl RelinquishAccessResult {
12622 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12624 mut map: V,
12625 ) -> Result<RelinquishAccessResult, V::Error> {
12626 crate::eat_json_fields(&mut map)?;
12628 Ok(RelinquishAccessResult {})
12629 }
12630}
12631
12632impl<'de> ::serde::de::Deserialize<'de> for RelinquishAccessResult {
12633 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12634 use serde::de::{MapAccess, Visitor};
12636 struct StructVisitor;
12637 impl<'de> Visitor<'de> for StructVisitor {
12638 type Value = RelinquishAccessResult;
12639 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12640 f.write_str("a RelinquishAccessResult struct")
12641 }
12642 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12643 RelinquishAccessResult::internal_deserialize(map)
12644 }
12645 }
12646 deserializer.deserialize_struct("RelinquishAccessResult", RELINQUISH_ACCESS_RESULT_FIELDS, StructVisitor)
12647 }
12648}
12649
12650impl ::serde::ser::Serialize for RelinquishAccessResult {
12651 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12652 use serde::ser::SerializeStruct;
12654 serializer.serialize_struct("RelinquishAccessResult", 0)?.end()
12655 }
12656}
12657
12658#[derive(Debug, Clone, PartialEq, Eq)]
12659#[non_exhaustive] pub struct RelinquishFileMembershipArg {
12661 pub file: PathOrId,
12663}
12664
12665impl RelinquishFileMembershipArg {
12666 pub fn new(file: PathOrId) -> Self {
12667 RelinquishFileMembershipArg {
12668 file,
12669 }
12670 }
12671}
12672
12673const RELINQUISH_FILE_MEMBERSHIP_ARG_FIELDS: &[&str] = &["file"];
12674impl RelinquishFileMembershipArg {
12675 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12676 map: V,
12677 ) -> Result<RelinquishFileMembershipArg, V::Error> {
12678 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
12679 }
12680
12681 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
12682 mut map: V,
12683 optional: bool,
12684 ) -> Result<Option<RelinquishFileMembershipArg>, V::Error> {
12685 let mut field_file = None;
12686 let mut nothing = true;
12687 while let Some(key) = map.next_key::<&str>()? {
12688 nothing = false;
12689 match key {
12690 "file" => {
12691 if field_file.is_some() {
12692 return Err(::serde::de::Error::duplicate_field("file"));
12693 }
12694 field_file = Some(map.next_value()?);
12695 }
12696 _ => {
12697 map.next_value::<::serde_json::Value>()?;
12699 }
12700 }
12701 }
12702 if optional && nothing {
12703 return Ok(None);
12704 }
12705 let result = RelinquishFileMembershipArg {
12706 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
12707 };
12708 Ok(Some(result))
12709 }
12710
12711 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
12712 &self,
12713 s: &mut S::SerializeStruct,
12714 ) -> Result<(), S::Error> {
12715 use serde::ser::SerializeStruct;
12716 s.serialize_field("file", &self.file)?;
12717 Ok(())
12718 }
12719}
12720
12721impl<'de> ::serde::de::Deserialize<'de> for RelinquishFileMembershipArg {
12722 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12723 use serde::de::{MapAccess, Visitor};
12725 struct StructVisitor;
12726 impl<'de> Visitor<'de> for StructVisitor {
12727 type Value = RelinquishFileMembershipArg;
12728 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12729 f.write_str("a RelinquishFileMembershipArg struct")
12730 }
12731 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12732 RelinquishFileMembershipArg::internal_deserialize(map)
12733 }
12734 }
12735 deserializer.deserialize_struct("RelinquishFileMembershipArg", RELINQUISH_FILE_MEMBERSHIP_ARG_FIELDS, StructVisitor)
12736 }
12737}
12738
12739impl ::serde::ser::Serialize for RelinquishFileMembershipArg {
12740 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12741 use serde::ser::SerializeStruct;
12743 let mut s = serializer.serialize_struct("RelinquishFileMembershipArg", 1)?;
12744 self.internal_serialize::<S>(&mut s)?;
12745 s.end()
12746 }
12747}
12748
12749#[derive(Debug, Clone, PartialEq, Eq)]
12750#[non_exhaustive] pub enum RelinquishFileMembershipError {
12752 AccessError(SharingFileAccessError),
12753 GroupAccess,
12756 NoPermission,
12758 Other,
12761}
12762
12763impl<'de> ::serde::de::Deserialize<'de> for RelinquishFileMembershipError {
12764 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12765 use serde::de::{self, MapAccess, Visitor};
12767 struct EnumVisitor;
12768 impl<'de> Visitor<'de> for EnumVisitor {
12769 type Value = RelinquishFileMembershipError;
12770 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12771 f.write_str("a RelinquishFileMembershipError structure")
12772 }
12773 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12774 let tag: &str = match map.next_key()? {
12775 Some(".tag") => map.next_value()?,
12776 _ => return Err(de::Error::missing_field(".tag"))
12777 };
12778 let value = match tag {
12779 "access_error" => {
12780 match map.next_key()? {
12781 Some("access_error") => RelinquishFileMembershipError::AccessError(map.next_value()?),
12782 None => return Err(de::Error::missing_field("access_error")),
12783 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
12784 }
12785 }
12786 "group_access" => RelinquishFileMembershipError::GroupAccess,
12787 "no_permission" => RelinquishFileMembershipError::NoPermission,
12788 _ => RelinquishFileMembershipError::Other,
12789 };
12790 crate::eat_json_fields(&mut map)?;
12791 Ok(value)
12792 }
12793 }
12794 const VARIANTS: &[&str] = &["access_error",
12795 "group_access",
12796 "no_permission",
12797 "other"];
12798 deserializer.deserialize_struct("RelinquishFileMembershipError", VARIANTS, EnumVisitor)
12799 }
12800}
12801
12802impl ::serde::ser::Serialize for RelinquishFileMembershipError {
12803 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12804 use serde::ser::SerializeStruct;
12806 match self {
12807 RelinquishFileMembershipError::AccessError(x) => {
12808 let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 2)?;
12810 s.serialize_field(".tag", "access_error")?;
12811 s.serialize_field("access_error", x)?;
12812 s.end()
12813 }
12814 RelinquishFileMembershipError::GroupAccess => {
12815 let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 1)?;
12817 s.serialize_field(".tag", "group_access")?;
12818 s.end()
12819 }
12820 RelinquishFileMembershipError::NoPermission => {
12821 let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 1)?;
12823 s.serialize_field(".tag", "no_permission")?;
12824 s.end()
12825 }
12826 RelinquishFileMembershipError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
12827 }
12828 }
12829}
12830
12831impl ::std::error::Error for RelinquishFileMembershipError {
12832 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
12833 match self {
12834 RelinquishFileMembershipError::AccessError(inner) => Some(inner),
12835 _ => None,
12836 }
12837 }
12838}
12839
12840impl ::std::fmt::Display for RelinquishFileMembershipError {
12841 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12842 match self {
12843 RelinquishFileMembershipError::AccessError(inner) => write!(f, "RelinquishFileMembershipError: {}", inner),
12844 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."),
12845 RelinquishFileMembershipError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
12846 _ => write!(f, "{:?}", *self),
12847 }
12848 }
12849}
12850
12851#[derive(Debug, Clone, PartialEq, Eq)]
12852#[non_exhaustive] pub struct RelinquishFolderMembershipArg {
12854 pub shared_folder_id: crate::types::common::SharedFolderId,
12856 pub leave_a_copy: bool,
12859}
12860
12861impl RelinquishFolderMembershipArg {
12862 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
12863 RelinquishFolderMembershipArg {
12864 shared_folder_id,
12865 leave_a_copy: false,
12866 }
12867 }
12868
12869 pub fn with_leave_a_copy(mut self, value: bool) -> Self {
12870 self.leave_a_copy = value;
12871 self
12872 }
12873}
12874
12875const RELINQUISH_FOLDER_MEMBERSHIP_ARG_FIELDS: &[&str] = &["shared_folder_id",
12876 "leave_a_copy"];
12877impl RelinquishFolderMembershipArg {
12878 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
12879 map: V,
12880 ) -> Result<RelinquishFolderMembershipArg, V::Error> {
12881 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
12882 }
12883
12884 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
12885 mut map: V,
12886 optional: bool,
12887 ) -> Result<Option<RelinquishFolderMembershipArg>, V::Error> {
12888 let mut field_shared_folder_id = None;
12889 let mut field_leave_a_copy = None;
12890 let mut nothing = true;
12891 while let Some(key) = map.next_key::<&str>()? {
12892 nothing = false;
12893 match key {
12894 "shared_folder_id" => {
12895 if field_shared_folder_id.is_some() {
12896 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
12897 }
12898 field_shared_folder_id = Some(map.next_value()?);
12899 }
12900 "leave_a_copy" => {
12901 if field_leave_a_copy.is_some() {
12902 return Err(::serde::de::Error::duplicate_field("leave_a_copy"));
12903 }
12904 field_leave_a_copy = Some(map.next_value()?);
12905 }
12906 _ => {
12907 map.next_value::<::serde_json::Value>()?;
12909 }
12910 }
12911 }
12912 if optional && nothing {
12913 return Ok(None);
12914 }
12915 let result = RelinquishFolderMembershipArg {
12916 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
12917 leave_a_copy: field_leave_a_copy.unwrap_or(false),
12918 };
12919 Ok(Some(result))
12920 }
12921
12922 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
12923 &self,
12924 s: &mut S::SerializeStruct,
12925 ) -> Result<(), S::Error> {
12926 use serde::ser::SerializeStruct;
12927 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
12928 if self.leave_a_copy {
12929 s.serialize_field("leave_a_copy", &self.leave_a_copy)?;
12930 }
12931 Ok(())
12932 }
12933}
12934
12935impl<'de> ::serde::de::Deserialize<'de> for RelinquishFolderMembershipArg {
12936 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12937 use serde::de::{MapAccess, Visitor};
12939 struct StructVisitor;
12940 impl<'de> Visitor<'de> for StructVisitor {
12941 type Value = RelinquishFolderMembershipArg;
12942 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12943 f.write_str("a RelinquishFolderMembershipArg struct")
12944 }
12945 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
12946 RelinquishFolderMembershipArg::internal_deserialize(map)
12947 }
12948 }
12949 deserializer.deserialize_struct("RelinquishFolderMembershipArg", RELINQUISH_FOLDER_MEMBERSHIP_ARG_FIELDS, StructVisitor)
12950 }
12951}
12952
12953impl ::serde::ser::Serialize for RelinquishFolderMembershipArg {
12954 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12955 use serde::ser::SerializeStruct;
12957 let mut s = serializer.serialize_struct("RelinquishFolderMembershipArg", 2)?;
12958 self.internal_serialize::<S>(&mut s)?;
12959 s.end()
12960 }
12961}
12962
12963#[derive(Debug, Clone, PartialEq, Eq)]
12964#[non_exhaustive] pub enum RelinquishFolderMembershipError {
12966 AccessError(SharedFolderAccessError),
12967 FolderOwner,
12970 Mounted,
12973 GroupAccess,
12976 TeamFolder,
12978 NoPermission,
12980 NoExplicitAccess,
12983 Other,
12986}
12987
12988impl<'de> ::serde::de::Deserialize<'de> for RelinquishFolderMembershipError {
12989 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12990 use serde::de::{self, MapAccess, Visitor};
12992 struct EnumVisitor;
12993 impl<'de> Visitor<'de> for EnumVisitor {
12994 type Value = RelinquishFolderMembershipError;
12995 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12996 f.write_str("a RelinquishFolderMembershipError structure")
12997 }
12998 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
12999 let tag: &str = match map.next_key()? {
13000 Some(".tag") => map.next_value()?,
13001 _ => return Err(de::Error::missing_field(".tag"))
13002 };
13003 let value = match tag {
13004 "access_error" => {
13005 match map.next_key()? {
13006 Some("access_error") => RelinquishFolderMembershipError::AccessError(map.next_value()?),
13007 None => return Err(de::Error::missing_field("access_error")),
13008 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13009 }
13010 }
13011 "folder_owner" => RelinquishFolderMembershipError::FolderOwner,
13012 "mounted" => RelinquishFolderMembershipError::Mounted,
13013 "group_access" => RelinquishFolderMembershipError::GroupAccess,
13014 "team_folder" => RelinquishFolderMembershipError::TeamFolder,
13015 "no_permission" => RelinquishFolderMembershipError::NoPermission,
13016 "no_explicit_access" => RelinquishFolderMembershipError::NoExplicitAccess,
13017 _ => RelinquishFolderMembershipError::Other,
13018 };
13019 crate::eat_json_fields(&mut map)?;
13020 Ok(value)
13021 }
13022 }
13023 const VARIANTS: &[&str] = &["access_error",
13024 "folder_owner",
13025 "mounted",
13026 "group_access",
13027 "team_folder",
13028 "no_permission",
13029 "no_explicit_access",
13030 "other"];
13031 deserializer.deserialize_struct("RelinquishFolderMembershipError", VARIANTS, EnumVisitor)
13032 }
13033}
13034
13035impl ::serde::ser::Serialize for RelinquishFolderMembershipError {
13036 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13037 use serde::ser::SerializeStruct;
13039 match self {
13040 RelinquishFolderMembershipError::AccessError(x) => {
13041 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 2)?;
13043 s.serialize_field(".tag", "access_error")?;
13044 s.serialize_field("access_error", x)?;
13045 s.end()
13046 }
13047 RelinquishFolderMembershipError::FolderOwner => {
13048 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13050 s.serialize_field(".tag", "folder_owner")?;
13051 s.end()
13052 }
13053 RelinquishFolderMembershipError::Mounted => {
13054 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13056 s.serialize_field(".tag", "mounted")?;
13057 s.end()
13058 }
13059 RelinquishFolderMembershipError::GroupAccess => {
13060 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13062 s.serialize_field(".tag", "group_access")?;
13063 s.end()
13064 }
13065 RelinquishFolderMembershipError::TeamFolder => {
13066 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13068 s.serialize_field(".tag", "team_folder")?;
13069 s.end()
13070 }
13071 RelinquishFolderMembershipError::NoPermission => {
13072 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13074 s.serialize_field(".tag", "no_permission")?;
13075 s.end()
13076 }
13077 RelinquishFolderMembershipError::NoExplicitAccess => {
13078 let mut s = serializer.serialize_struct("RelinquishFolderMembershipError", 1)?;
13080 s.serialize_field(".tag", "no_explicit_access")?;
13081 s.end()
13082 }
13083 RelinquishFolderMembershipError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13084 }
13085 }
13086}
13087
13088impl ::std::error::Error for RelinquishFolderMembershipError {
13089 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
13090 match self {
13091 RelinquishFolderMembershipError::AccessError(inner) => Some(inner),
13092 _ => None,
13093 }
13094 }
13095}
13096
13097impl ::std::fmt::Display for RelinquishFolderMembershipError {
13098 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13099 match self {
13100 RelinquishFolderMembershipError::AccessError(inner) => write!(f, "RelinquishFolderMembershipError: {}", inner),
13101 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."),
13102 RelinquishFolderMembershipError::Mounted => f.write_str("The shared folder is currently mounted. Unmount the shared folder before relinquishing membership."),
13103 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."),
13104 RelinquishFolderMembershipError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
13105 RelinquishFolderMembershipError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
13106 RelinquishFolderMembershipError::NoExplicitAccess => f.write_str("The current user only has inherited access to the shared folder. You can't relinquish inherited membership to folders."),
13107 _ => write!(f, "{:?}", *self),
13108 }
13109 }
13110}
13111
13112#[derive(Debug, Clone, PartialEq, Eq)]
13114#[non_exhaustive] pub struct RemoveFileMemberArg {
13116 pub file: PathOrId,
13118 pub member: MemberSelector,
13122}
13123
13124impl RemoveFileMemberArg {
13125 pub fn new(file: PathOrId, member: MemberSelector) -> Self {
13126 RemoveFileMemberArg {
13127 file,
13128 member,
13129 }
13130 }
13131}
13132
13133const REMOVE_FILE_MEMBER_ARG_FIELDS: &[&str] = &["file",
13134 "member"];
13135impl RemoveFileMemberArg {
13136 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
13137 map: V,
13138 ) -> Result<RemoveFileMemberArg, V::Error> {
13139 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
13140 }
13141
13142 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
13143 mut map: V,
13144 optional: bool,
13145 ) -> Result<Option<RemoveFileMemberArg>, V::Error> {
13146 let mut field_file = None;
13147 let mut field_member = None;
13148 let mut nothing = true;
13149 while let Some(key) = map.next_key::<&str>()? {
13150 nothing = false;
13151 match key {
13152 "file" => {
13153 if field_file.is_some() {
13154 return Err(::serde::de::Error::duplicate_field("file"));
13155 }
13156 field_file = Some(map.next_value()?);
13157 }
13158 "member" => {
13159 if field_member.is_some() {
13160 return Err(::serde::de::Error::duplicate_field("member"));
13161 }
13162 field_member = Some(map.next_value()?);
13163 }
13164 _ => {
13165 map.next_value::<::serde_json::Value>()?;
13167 }
13168 }
13169 }
13170 if optional && nothing {
13171 return Ok(None);
13172 }
13173 let result = RemoveFileMemberArg {
13174 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
13175 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
13176 };
13177 Ok(Some(result))
13178 }
13179
13180 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
13181 &self,
13182 s: &mut S::SerializeStruct,
13183 ) -> Result<(), S::Error> {
13184 use serde::ser::SerializeStruct;
13185 s.serialize_field("file", &self.file)?;
13186 s.serialize_field("member", &self.member)?;
13187 Ok(())
13188 }
13189}
13190
13191impl<'de> ::serde::de::Deserialize<'de> for RemoveFileMemberArg {
13192 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13193 use serde::de::{MapAccess, Visitor};
13195 struct StructVisitor;
13196 impl<'de> Visitor<'de> for StructVisitor {
13197 type Value = RemoveFileMemberArg;
13198 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13199 f.write_str("a RemoveFileMemberArg struct")
13200 }
13201 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
13202 RemoveFileMemberArg::internal_deserialize(map)
13203 }
13204 }
13205 deserializer.deserialize_struct("RemoveFileMemberArg", REMOVE_FILE_MEMBER_ARG_FIELDS, StructVisitor)
13206 }
13207}
13208
13209impl ::serde::ser::Serialize for RemoveFileMemberArg {
13210 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13211 use serde::ser::SerializeStruct;
13213 let mut s = serializer.serialize_struct("RemoveFileMemberArg", 2)?;
13214 self.internal_serialize::<S>(&mut s)?;
13215 s.end()
13216 }
13217}
13218
13219#[derive(Debug, Clone, PartialEq, Eq)]
13221#[non_exhaustive] pub enum RemoveFileMemberError {
13223 UserError(SharingUserError),
13224 AccessError(SharingFileAccessError),
13225 NoExplicitAccess(MemberAccessLevelResult),
13228 Other,
13231}
13232
13233impl<'de> ::serde::de::Deserialize<'de> for RemoveFileMemberError {
13234 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13235 use serde::de::{self, MapAccess, Visitor};
13237 struct EnumVisitor;
13238 impl<'de> Visitor<'de> for EnumVisitor {
13239 type Value = RemoveFileMemberError;
13240 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13241 f.write_str("a RemoveFileMemberError structure")
13242 }
13243 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13244 let tag: &str = match map.next_key()? {
13245 Some(".tag") => map.next_value()?,
13246 _ => return Err(de::Error::missing_field(".tag"))
13247 };
13248 let value = match tag {
13249 "user_error" => {
13250 match map.next_key()? {
13251 Some("user_error") => RemoveFileMemberError::UserError(map.next_value()?),
13252 None => return Err(de::Error::missing_field("user_error")),
13253 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13254 }
13255 }
13256 "access_error" => {
13257 match map.next_key()? {
13258 Some("access_error") => RemoveFileMemberError::AccessError(map.next_value()?),
13259 None => return Err(de::Error::missing_field("access_error")),
13260 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13261 }
13262 }
13263 "no_explicit_access" => RemoveFileMemberError::NoExplicitAccess(MemberAccessLevelResult::internal_deserialize(&mut map)?),
13264 _ => RemoveFileMemberError::Other,
13265 };
13266 crate::eat_json_fields(&mut map)?;
13267 Ok(value)
13268 }
13269 }
13270 const VARIANTS: &[&str] = &["user_error",
13271 "access_error",
13272 "no_explicit_access",
13273 "other"];
13274 deserializer.deserialize_struct("RemoveFileMemberError", VARIANTS, EnumVisitor)
13275 }
13276}
13277
13278impl ::serde::ser::Serialize for RemoveFileMemberError {
13279 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13280 use serde::ser::SerializeStruct;
13282 match self {
13283 RemoveFileMemberError::UserError(x) => {
13284 let mut s = serializer.serialize_struct("RemoveFileMemberError", 2)?;
13286 s.serialize_field(".tag", "user_error")?;
13287 s.serialize_field("user_error", x)?;
13288 s.end()
13289 }
13290 RemoveFileMemberError::AccessError(x) => {
13291 let mut s = serializer.serialize_struct("RemoveFileMemberError", 2)?;
13293 s.serialize_field(".tag", "access_error")?;
13294 s.serialize_field("access_error", x)?;
13295 s.end()
13296 }
13297 RemoveFileMemberError::NoExplicitAccess(x) => {
13298 let mut s = serializer.serialize_struct("RemoveFileMemberError", 4)?;
13300 s.serialize_field(".tag", "no_explicit_access")?;
13301 x.internal_serialize::<S>(&mut s)?;
13302 s.end()
13303 }
13304 RemoveFileMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13305 }
13306 }
13307}
13308
13309impl ::std::error::Error for RemoveFileMemberError {
13310 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
13311 match self {
13312 RemoveFileMemberError::UserError(inner) => Some(inner),
13313 RemoveFileMemberError::AccessError(inner) => Some(inner),
13314 _ => None,
13315 }
13316 }
13317}
13318
13319impl ::std::fmt::Display for RemoveFileMemberError {
13320 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13321 match self {
13322 RemoveFileMemberError::UserError(inner) => write!(f, "RemoveFileMemberError: {}", inner),
13323 RemoveFileMemberError::AccessError(inner) => write!(f, "RemoveFileMemberError: {}", inner),
13324 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),
13325 _ => write!(f, "{:?}", *self),
13326 }
13327 }
13328}
13329
13330#[derive(Debug, Clone, PartialEq, Eq)]
13331#[non_exhaustive] pub struct RemoveFolderMemberArg {
13333 pub shared_folder_id: crate::types::common::SharedFolderId,
13335 pub member: MemberSelector,
13337 pub leave_a_copy: bool,
13341}
13342
13343impl RemoveFolderMemberArg {
13344 pub fn new(
13345 shared_folder_id: crate::types::common::SharedFolderId,
13346 member: MemberSelector,
13347 leave_a_copy: bool,
13348 ) -> Self {
13349 RemoveFolderMemberArg {
13350 shared_folder_id,
13351 member,
13352 leave_a_copy,
13353 }
13354 }
13355}
13356
13357const REMOVE_FOLDER_MEMBER_ARG_FIELDS: &[&str] = &["shared_folder_id",
13358 "member",
13359 "leave_a_copy"];
13360impl RemoveFolderMemberArg {
13361 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
13362 map: V,
13363 ) -> Result<RemoveFolderMemberArg, V::Error> {
13364 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
13365 }
13366
13367 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
13368 mut map: V,
13369 optional: bool,
13370 ) -> Result<Option<RemoveFolderMemberArg>, V::Error> {
13371 let mut field_shared_folder_id = None;
13372 let mut field_member = None;
13373 let mut field_leave_a_copy = None;
13374 let mut nothing = true;
13375 while let Some(key) = map.next_key::<&str>()? {
13376 nothing = false;
13377 match key {
13378 "shared_folder_id" => {
13379 if field_shared_folder_id.is_some() {
13380 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
13381 }
13382 field_shared_folder_id = Some(map.next_value()?);
13383 }
13384 "member" => {
13385 if field_member.is_some() {
13386 return Err(::serde::de::Error::duplicate_field("member"));
13387 }
13388 field_member = Some(map.next_value()?);
13389 }
13390 "leave_a_copy" => {
13391 if field_leave_a_copy.is_some() {
13392 return Err(::serde::de::Error::duplicate_field("leave_a_copy"));
13393 }
13394 field_leave_a_copy = Some(map.next_value()?);
13395 }
13396 _ => {
13397 map.next_value::<::serde_json::Value>()?;
13399 }
13400 }
13401 }
13402 if optional && nothing {
13403 return Ok(None);
13404 }
13405 let result = RemoveFolderMemberArg {
13406 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
13407 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
13408 leave_a_copy: field_leave_a_copy.ok_or_else(|| ::serde::de::Error::missing_field("leave_a_copy"))?,
13409 };
13410 Ok(Some(result))
13411 }
13412
13413 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
13414 &self,
13415 s: &mut S::SerializeStruct,
13416 ) -> Result<(), S::Error> {
13417 use serde::ser::SerializeStruct;
13418 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
13419 s.serialize_field("member", &self.member)?;
13420 s.serialize_field("leave_a_copy", &self.leave_a_copy)?;
13421 Ok(())
13422 }
13423}
13424
13425impl<'de> ::serde::de::Deserialize<'de> for RemoveFolderMemberArg {
13426 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13427 use serde::de::{MapAccess, Visitor};
13429 struct StructVisitor;
13430 impl<'de> Visitor<'de> for StructVisitor {
13431 type Value = RemoveFolderMemberArg;
13432 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13433 f.write_str("a RemoveFolderMemberArg struct")
13434 }
13435 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
13436 RemoveFolderMemberArg::internal_deserialize(map)
13437 }
13438 }
13439 deserializer.deserialize_struct("RemoveFolderMemberArg", REMOVE_FOLDER_MEMBER_ARG_FIELDS, StructVisitor)
13440 }
13441}
13442
13443impl ::serde::ser::Serialize for RemoveFolderMemberArg {
13444 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13445 use serde::ser::SerializeStruct;
13447 let mut s = serializer.serialize_struct("RemoveFolderMemberArg", 3)?;
13448 self.internal_serialize::<S>(&mut s)?;
13449 s.end()
13450 }
13451}
13452
13453#[derive(Debug, Clone, PartialEq, Eq)]
13454#[non_exhaustive] pub enum RemoveFolderMemberError {
13456 AccessError(SharedFolderAccessError),
13457 MemberError(SharedFolderMemberError),
13458 FolderOwner,
13461 GroupAccess,
13463 TeamFolder,
13465 NoPermission,
13467 TooManyFiles,
13470 Other,
13473}
13474
13475impl<'de> ::serde::de::Deserialize<'de> for RemoveFolderMemberError {
13476 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13477 use serde::de::{self, MapAccess, Visitor};
13479 struct EnumVisitor;
13480 impl<'de> Visitor<'de> for EnumVisitor {
13481 type Value = RemoveFolderMemberError;
13482 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13483 f.write_str("a RemoveFolderMemberError structure")
13484 }
13485 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13486 let tag: &str = match map.next_key()? {
13487 Some(".tag") => map.next_value()?,
13488 _ => return Err(de::Error::missing_field(".tag"))
13489 };
13490 let value = match tag {
13491 "access_error" => {
13492 match map.next_key()? {
13493 Some("access_error") => RemoveFolderMemberError::AccessError(map.next_value()?),
13494 None => return Err(de::Error::missing_field("access_error")),
13495 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13496 }
13497 }
13498 "member_error" => {
13499 match map.next_key()? {
13500 Some("member_error") => RemoveFolderMemberError::MemberError(map.next_value()?),
13501 None => return Err(de::Error::missing_field("member_error")),
13502 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13503 }
13504 }
13505 "folder_owner" => RemoveFolderMemberError::FolderOwner,
13506 "group_access" => RemoveFolderMemberError::GroupAccess,
13507 "team_folder" => RemoveFolderMemberError::TeamFolder,
13508 "no_permission" => RemoveFolderMemberError::NoPermission,
13509 "too_many_files" => RemoveFolderMemberError::TooManyFiles,
13510 _ => RemoveFolderMemberError::Other,
13511 };
13512 crate::eat_json_fields(&mut map)?;
13513 Ok(value)
13514 }
13515 }
13516 const VARIANTS: &[&str] = &["access_error",
13517 "member_error",
13518 "folder_owner",
13519 "group_access",
13520 "team_folder",
13521 "no_permission",
13522 "too_many_files",
13523 "other"];
13524 deserializer.deserialize_struct("RemoveFolderMemberError", VARIANTS, EnumVisitor)
13525 }
13526}
13527
13528impl ::serde::ser::Serialize for RemoveFolderMemberError {
13529 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13530 use serde::ser::SerializeStruct;
13532 match self {
13533 RemoveFolderMemberError::AccessError(x) => {
13534 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 2)?;
13536 s.serialize_field(".tag", "access_error")?;
13537 s.serialize_field("access_error", x)?;
13538 s.end()
13539 }
13540 RemoveFolderMemberError::MemberError(x) => {
13541 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 2)?;
13543 s.serialize_field(".tag", "member_error")?;
13544 s.serialize_field("member_error", x)?;
13545 s.end()
13546 }
13547 RemoveFolderMemberError::FolderOwner => {
13548 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
13550 s.serialize_field(".tag", "folder_owner")?;
13551 s.end()
13552 }
13553 RemoveFolderMemberError::GroupAccess => {
13554 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
13556 s.serialize_field(".tag", "group_access")?;
13557 s.end()
13558 }
13559 RemoveFolderMemberError::TeamFolder => {
13560 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
13562 s.serialize_field(".tag", "team_folder")?;
13563 s.end()
13564 }
13565 RemoveFolderMemberError::NoPermission => {
13566 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
13568 s.serialize_field(".tag", "no_permission")?;
13569 s.end()
13570 }
13571 RemoveFolderMemberError::TooManyFiles => {
13572 let mut s = serializer.serialize_struct("RemoveFolderMemberError", 1)?;
13574 s.serialize_field(".tag", "too_many_files")?;
13575 s.end()
13576 }
13577 RemoveFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13578 }
13579 }
13580}
13581
13582impl ::std::error::Error for RemoveFolderMemberError {
13583 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
13584 match self {
13585 RemoveFolderMemberError::AccessError(inner) => Some(inner),
13586 RemoveFolderMemberError::MemberError(inner) => Some(inner),
13587 _ => None,
13588 }
13589 }
13590}
13591
13592impl ::std::fmt::Display for RemoveFolderMemberError {
13593 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13594 match self {
13595 RemoveFolderMemberError::AccessError(inner) => write!(f, "RemoveFolderMemberError: {}", inner),
13596 RemoveFolderMemberError::MemberError(inner) => write!(f, "RemoveFolderMemberError: {}", inner),
13597 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."),
13598 RemoveFolderMemberError::GroupAccess => f.write_str("The target user has access to the shared folder via a group."),
13599 RemoveFolderMemberError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
13600 RemoveFolderMemberError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
13601 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."),
13602 _ => write!(f, "{:?}", *self),
13603 }
13604 }
13605}
13606
13607#[derive(Debug, Clone, PartialEq, Eq)]
13608pub enum RemoveMemberJobStatus {
13609 InProgress,
13611 Complete(MemberAccessLevelResult),
13614 Failed(RemoveFolderMemberError),
13615}
13616
13617impl<'de> ::serde::de::Deserialize<'de> for RemoveMemberJobStatus {
13618 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13619 use serde::de::{self, MapAccess, Visitor};
13621 struct EnumVisitor;
13622 impl<'de> Visitor<'de> for EnumVisitor {
13623 type Value = RemoveMemberJobStatus;
13624 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13625 f.write_str("a RemoveMemberJobStatus structure")
13626 }
13627 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13628 let tag: &str = match map.next_key()? {
13629 Some(".tag") => map.next_value()?,
13630 _ => return Err(de::Error::missing_field(".tag"))
13631 };
13632 let value = match tag {
13633 "in_progress" => RemoveMemberJobStatus::InProgress,
13634 "complete" => RemoveMemberJobStatus::Complete(MemberAccessLevelResult::internal_deserialize(&mut map)?),
13635 "failed" => {
13636 match map.next_key()? {
13637 Some("failed") => RemoveMemberJobStatus::Failed(map.next_value()?),
13638 None => return Err(de::Error::missing_field("failed")),
13639 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
13640 }
13641 }
13642 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
13643 };
13644 crate::eat_json_fields(&mut map)?;
13645 Ok(value)
13646 }
13647 }
13648 const VARIANTS: &[&str] = &["in_progress",
13649 "complete",
13650 "failed"];
13651 deserializer.deserialize_struct("RemoveMemberJobStatus", VARIANTS, EnumVisitor)
13652 }
13653}
13654
13655impl ::serde::ser::Serialize for RemoveMemberJobStatus {
13656 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13657 use serde::ser::SerializeStruct;
13659 match self {
13660 RemoveMemberJobStatus::InProgress => {
13661 let mut s = serializer.serialize_struct("RemoveMemberJobStatus", 1)?;
13663 s.serialize_field(".tag", "in_progress")?;
13664 s.end()
13665 }
13666 RemoveMemberJobStatus::Complete(x) => {
13667 let mut s = serializer.serialize_struct("RemoveMemberJobStatus", 4)?;
13669 s.serialize_field(".tag", "complete")?;
13670 x.internal_serialize::<S>(&mut s)?;
13671 s.end()
13672 }
13673 RemoveMemberJobStatus::Failed(x) => {
13674 let mut s = serializer.serialize_struct("RemoveMemberJobStatus", 2)?;
13676 s.serialize_field(".tag", "failed")?;
13677 s.serialize_field("failed", x)?;
13678 s.end()
13679 }
13680 }
13681 }
13682}
13683
13684impl From<crate::types::dbx_async::PollResultBase> for RemoveMemberJobStatus {
13686 fn from(parent: crate::types::dbx_async::PollResultBase) -> Self {
13687 match parent {
13688 crate::types::dbx_async::PollResultBase::InProgress => RemoveMemberJobStatus::InProgress,
13689 }
13690 }
13691}
13692#[derive(Debug, Clone, PartialEq, Eq)]
13693#[non_exhaustive] pub enum RequestedLinkAccessLevel {
13695 Viewer,
13697 Editor,
13700 Max,
13702 Default,
13704 Other,
13707}
13708
13709impl<'de> ::serde::de::Deserialize<'de> for RequestedLinkAccessLevel {
13710 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13711 use serde::de::{self, MapAccess, Visitor};
13713 struct EnumVisitor;
13714 impl<'de> Visitor<'de> for EnumVisitor {
13715 type Value = RequestedLinkAccessLevel;
13716 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13717 f.write_str("a RequestedLinkAccessLevel structure")
13718 }
13719 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13720 let tag: &str = match map.next_key()? {
13721 Some(".tag") => map.next_value()?,
13722 _ => return Err(de::Error::missing_field(".tag"))
13723 };
13724 let value = match tag {
13725 "viewer" => RequestedLinkAccessLevel::Viewer,
13726 "editor" => RequestedLinkAccessLevel::Editor,
13727 "max" => RequestedLinkAccessLevel::Max,
13728 "default" => RequestedLinkAccessLevel::Default,
13729 _ => RequestedLinkAccessLevel::Other,
13730 };
13731 crate::eat_json_fields(&mut map)?;
13732 Ok(value)
13733 }
13734 }
13735 const VARIANTS: &[&str] = &["viewer",
13736 "editor",
13737 "max",
13738 "default",
13739 "other"];
13740 deserializer.deserialize_struct("RequestedLinkAccessLevel", VARIANTS, EnumVisitor)
13741 }
13742}
13743
13744impl ::serde::ser::Serialize for RequestedLinkAccessLevel {
13745 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13746 use serde::ser::SerializeStruct;
13748 match self {
13749 RequestedLinkAccessLevel::Viewer => {
13750 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13752 s.serialize_field(".tag", "viewer")?;
13753 s.end()
13754 }
13755 RequestedLinkAccessLevel::Editor => {
13756 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13758 s.serialize_field(".tag", "editor")?;
13759 s.end()
13760 }
13761 RequestedLinkAccessLevel::Max => {
13762 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13764 s.serialize_field(".tag", "max")?;
13765 s.end()
13766 }
13767 RequestedLinkAccessLevel::Default => {
13768 let mut s = serializer.serialize_struct("RequestedLinkAccessLevel", 1)?;
13770 s.serialize_field(".tag", "default")?;
13771 s.end()
13772 }
13773 RequestedLinkAccessLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13774 }
13775 }
13776}
13777
13778#[derive(Debug, Clone, PartialEq, Eq)]
13783pub enum RequestedVisibility {
13784 Public,
13786 TeamOnly,
13788 Password,
13790}
13791
13792impl<'de> ::serde::de::Deserialize<'de> for RequestedVisibility {
13793 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13794 use serde::de::{self, MapAccess, Visitor};
13796 struct EnumVisitor;
13797 impl<'de> Visitor<'de> for EnumVisitor {
13798 type Value = RequestedVisibility;
13799 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13800 f.write_str("a RequestedVisibility structure")
13801 }
13802 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13803 let tag: &str = match map.next_key()? {
13804 Some(".tag") => map.next_value()?,
13805 _ => return Err(de::Error::missing_field(".tag"))
13806 };
13807 let value = match tag {
13808 "public" => RequestedVisibility::Public,
13809 "team_only" => RequestedVisibility::TeamOnly,
13810 "password" => RequestedVisibility::Password,
13811 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
13812 };
13813 crate::eat_json_fields(&mut map)?;
13814 Ok(value)
13815 }
13816 }
13817 const VARIANTS: &[&str] = &["public",
13818 "team_only",
13819 "password"];
13820 deserializer.deserialize_struct("RequestedVisibility", VARIANTS, EnumVisitor)
13821 }
13822}
13823
13824impl ::serde::ser::Serialize for RequestedVisibility {
13825 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13826 use serde::ser::SerializeStruct;
13828 match self {
13829 RequestedVisibility::Public => {
13830 let mut s = serializer.serialize_struct("RequestedVisibility", 1)?;
13832 s.serialize_field(".tag", "public")?;
13833 s.end()
13834 }
13835 RequestedVisibility::TeamOnly => {
13836 let mut s = serializer.serialize_struct("RequestedVisibility", 1)?;
13838 s.serialize_field(".tag", "team_only")?;
13839 s.end()
13840 }
13841 RequestedVisibility::Password => {
13842 let mut s = serializer.serialize_struct("RequestedVisibility", 1)?;
13844 s.serialize_field(".tag", "password")?;
13845 s.end()
13846 }
13847 }
13848 }
13849}
13850
13851#[derive(Debug, Clone, PartialEq, Eq)]
13855#[non_exhaustive] pub enum ResolvedVisibility {
13857 Public,
13859 TeamOnly,
13861 Password,
13863 TeamAndPassword,
13866 SharedFolderOnly,
13869 NoOne,
13873 OnlyYou,
13875 Other,
13878}
13879
13880impl<'de> ::serde::de::Deserialize<'de> for ResolvedVisibility {
13881 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
13882 use serde::de::{self, MapAccess, Visitor};
13884 struct EnumVisitor;
13885 impl<'de> Visitor<'de> for EnumVisitor {
13886 type Value = ResolvedVisibility;
13887 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13888 f.write_str("a ResolvedVisibility structure")
13889 }
13890 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
13891 let tag: &str = match map.next_key()? {
13892 Some(".tag") => map.next_value()?,
13893 _ => return Err(de::Error::missing_field(".tag"))
13894 };
13895 let value = match tag {
13896 "public" => ResolvedVisibility::Public,
13897 "team_only" => ResolvedVisibility::TeamOnly,
13898 "password" => ResolvedVisibility::Password,
13899 "team_and_password" => ResolvedVisibility::TeamAndPassword,
13900 "shared_folder_only" => ResolvedVisibility::SharedFolderOnly,
13901 "no_one" => ResolvedVisibility::NoOne,
13902 "only_you" => ResolvedVisibility::OnlyYou,
13903 _ => ResolvedVisibility::Other,
13904 };
13905 crate::eat_json_fields(&mut map)?;
13906 Ok(value)
13907 }
13908 }
13909 const VARIANTS: &[&str] = &["public",
13910 "team_only",
13911 "password",
13912 "team_and_password",
13913 "shared_folder_only",
13914 "no_one",
13915 "only_you",
13916 "other"];
13917 deserializer.deserialize_struct("ResolvedVisibility", VARIANTS, EnumVisitor)
13918 }
13919}
13920
13921impl ::serde::ser::Serialize for ResolvedVisibility {
13922 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
13923 use serde::ser::SerializeStruct;
13925 match self {
13926 ResolvedVisibility::Public => {
13927 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13929 s.serialize_field(".tag", "public")?;
13930 s.end()
13931 }
13932 ResolvedVisibility::TeamOnly => {
13933 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13935 s.serialize_field(".tag", "team_only")?;
13936 s.end()
13937 }
13938 ResolvedVisibility::Password => {
13939 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13941 s.serialize_field(".tag", "password")?;
13942 s.end()
13943 }
13944 ResolvedVisibility::TeamAndPassword => {
13945 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13947 s.serialize_field(".tag", "team_and_password")?;
13948 s.end()
13949 }
13950 ResolvedVisibility::SharedFolderOnly => {
13951 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13953 s.serialize_field(".tag", "shared_folder_only")?;
13954 s.end()
13955 }
13956 ResolvedVisibility::NoOne => {
13957 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13959 s.serialize_field(".tag", "no_one")?;
13960 s.end()
13961 }
13962 ResolvedVisibility::OnlyYou => {
13963 let mut s = serializer.serialize_struct("ResolvedVisibility", 1)?;
13965 s.serialize_field(".tag", "only_you")?;
13966 s.end()
13967 }
13968 ResolvedVisibility::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
13969 }
13970 }
13971}
13972
13973impl From<RequestedVisibility> for ResolvedVisibility {
13975 fn from(parent: RequestedVisibility) -> Self {
13976 match parent {
13977 RequestedVisibility::Public => ResolvedVisibility::Public,
13978 RequestedVisibility::TeamOnly => ResolvedVisibility::TeamOnly,
13979 RequestedVisibility::Password => ResolvedVisibility::Password,
13980 }
13981 }
13982}
13983#[derive(Debug, Clone, PartialEq, Eq)]
13984#[non_exhaustive] pub struct RevokeSharedLinkArg {
13986 pub url: String,
13988}
13989
13990impl RevokeSharedLinkArg {
13991 pub fn new(url: String) -> Self {
13992 RevokeSharedLinkArg {
13993 url,
13994 }
13995 }
13996}
13997
13998const REVOKE_SHARED_LINK_ARG_FIELDS: &[&str] = &["url"];
13999impl RevokeSharedLinkArg {
14000 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
14001 map: V,
14002 ) -> Result<RevokeSharedLinkArg, V::Error> {
14003 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
14004 }
14005
14006 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
14007 mut map: V,
14008 optional: bool,
14009 ) -> Result<Option<RevokeSharedLinkArg>, V::Error> {
14010 let mut field_url = None;
14011 let mut nothing = true;
14012 while let Some(key) = map.next_key::<&str>()? {
14013 nothing = false;
14014 match key {
14015 "url" => {
14016 if field_url.is_some() {
14017 return Err(::serde::de::Error::duplicate_field("url"));
14018 }
14019 field_url = Some(map.next_value()?);
14020 }
14021 _ => {
14022 map.next_value::<::serde_json::Value>()?;
14024 }
14025 }
14026 }
14027 if optional && nothing {
14028 return Ok(None);
14029 }
14030 let result = RevokeSharedLinkArg {
14031 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
14032 };
14033 Ok(Some(result))
14034 }
14035
14036 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
14037 &self,
14038 s: &mut S::SerializeStruct,
14039 ) -> Result<(), S::Error> {
14040 use serde::ser::SerializeStruct;
14041 s.serialize_field("url", &self.url)?;
14042 Ok(())
14043 }
14044}
14045
14046impl<'de> ::serde::de::Deserialize<'de> for RevokeSharedLinkArg {
14047 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14048 use serde::de::{MapAccess, Visitor};
14050 struct StructVisitor;
14051 impl<'de> Visitor<'de> for StructVisitor {
14052 type Value = RevokeSharedLinkArg;
14053 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14054 f.write_str("a RevokeSharedLinkArg struct")
14055 }
14056 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
14057 RevokeSharedLinkArg::internal_deserialize(map)
14058 }
14059 }
14060 deserializer.deserialize_struct("RevokeSharedLinkArg", REVOKE_SHARED_LINK_ARG_FIELDS, StructVisitor)
14061 }
14062}
14063
14064impl ::serde::ser::Serialize for RevokeSharedLinkArg {
14065 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14066 use serde::ser::SerializeStruct;
14068 let mut s = serializer.serialize_struct("RevokeSharedLinkArg", 1)?;
14069 self.internal_serialize::<S>(&mut s)?;
14070 s.end()
14071 }
14072}
14073
14074#[derive(Debug, Clone, PartialEq, Eq)]
14075#[non_exhaustive] pub enum RevokeSharedLinkError {
14077 SharedLinkNotFound,
14079 SharedLinkAccessDenied,
14081 UnsupportedLinkType,
14083 UnsupportedParameterField,
14085 SharedLinkMalformed,
14087 Other,
14090}
14091
14092impl<'de> ::serde::de::Deserialize<'de> for RevokeSharedLinkError {
14093 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14094 use serde::de::{self, MapAccess, Visitor};
14096 struct EnumVisitor;
14097 impl<'de> Visitor<'de> for EnumVisitor {
14098 type Value = RevokeSharedLinkError;
14099 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14100 f.write_str("a RevokeSharedLinkError structure")
14101 }
14102 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
14103 let tag: &str = match map.next_key()? {
14104 Some(".tag") => map.next_value()?,
14105 _ => return Err(de::Error::missing_field(".tag"))
14106 };
14107 let value = match tag {
14108 "shared_link_not_found" => RevokeSharedLinkError::SharedLinkNotFound,
14109 "shared_link_access_denied" => RevokeSharedLinkError::SharedLinkAccessDenied,
14110 "unsupported_link_type" => RevokeSharedLinkError::UnsupportedLinkType,
14111 "unsupported_parameter_field" => RevokeSharedLinkError::UnsupportedParameterField,
14112 "shared_link_malformed" => RevokeSharedLinkError::SharedLinkMalformed,
14113 _ => RevokeSharedLinkError::Other,
14114 };
14115 crate::eat_json_fields(&mut map)?;
14116 Ok(value)
14117 }
14118 }
14119 const VARIANTS: &[&str] = &["shared_link_not_found",
14120 "shared_link_access_denied",
14121 "unsupported_link_type",
14122 "unsupported_parameter_field",
14123 "other",
14124 "shared_link_malformed"];
14125 deserializer.deserialize_struct("RevokeSharedLinkError", VARIANTS, EnumVisitor)
14126 }
14127}
14128
14129impl ::serde::ser::Serialize for RevokeSharedLinkError {
14130 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14131 use serde::ser::SerializeStruct;
14133 match self {
14134 RevokeSharedLinkError::SharedLinkNotFound => {
14135 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
14137 s.serialize_field(".tag", "shared_link_not_found")?;
14138 s.end()
14139 }
14140 RevokeSharedLinkError::SharedLinkAccessDenied => {
14141 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
14143 s.serialize_field(".tag", "shared_link_access_denied")?;
14144 s.end()
14145 }
14146 RevokeSharedLinkError::UnsupportedLinkType => {
14147 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
14149 s.serialize_field(".tag", "unsupported_link_type")?;
14150 s.end()
14151 }
14152 RevokeSharedLinkError::UnsupportedParameterField => {
14153 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
14155 s.serialize_field(".tag", "unsupported_parameter_field")?;
14156 s.end()
14157 }
14158 RevokeSharedLinkError::SharedLinkMalformed => {
14159 let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?;
14161 s.serialize_field(".tag", "shared_link_malformed")?;
14162 s.end()
14163 }
14164 RevokeSharedLinkError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
14165 }
14166 }
14167}
14168
14169impl ::std::error::Error for RevokeSharedLinkError {
14170}
14171
14172impl ::std::fmt::Display for RevokeSharedLinkError {
14173 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14174 match self {
14175 RevokeSharedLinkError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
14176 RevokeSharedLinkError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
14177 RevokeSharedLinkError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."),
14178 RevokeSharedLinkError::SharedLinkMalformed => f.write_str("Shared link is malformed."),
14179 _ => write!(f, "{:?}", *self),
14180 }
14181 }
14182}
14183
14184impl From<SharedLinkError> for RevokeSharedLinkError {
14186 fn from(parent: SharedLinkError) -> Self {
14187 match parent {
14188 SharedLinkError::SharedLinkNotFound => RevokeSharedLinkError::SharedLinkNotFound,
14189 SharedLinkError::SharedLinkAccessDenied => RevokeSharedLinkError::SharedLinkAccessDenied,
14190 SharedLinkError::UnsupportedLinkType => RevokeSharedLinkError::UnsupportedLinkType,
14191 SharedLinkError::UnsupportedParameterField => RevokeSharedLinkError::UnsupportedParameterField,
14192 SharedLinkError::Other => RevokeSharedLinkError::Other,
14193 }
14194 }
14195}
14196#[derive(Debug, Clone, PartialEq, Eq)]
14197#[non_exhaustive] pub struct SetAccessInheritanceArg {
14199 pub shared_folder_id: crate::types::common::SharedFolderId,
14201 pub access_inheritance: AccessInheritance,
14203}
14204
14205impl SetAccessInheritanceArg {
14206 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
14207 SetAccessInheritanceArg {
14208 shared_folder_id,
14209 access_inheritance: AccessInheritance::Inherit,
14210 }
14211 }
14212
14213 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
14214 self.access_inheritance = value;
14215 self
14216 }
14217}
14218
14219const SET_ACCESS_INHERITANCE_ARG_FIELDS: &[&str] = &["shared_folder_id",
14220 "access_inheritance"];
14221impl SetAccessInheritanceArg {
14222 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
14223 map: V,
14224 ) -> Result<SetAccessInheritanceArg, V::Error> {
14225 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
14226 }
14227
14228 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
14229 mut map: V,
14230 optional: bool,
14231 ) -> Result<Option<SetAccessInheritanceArg>, V::Error> {
14232 let mut field_shared_folder_id = None;
14233 let mut field_access_inheritance = None;
14234 let mut nothing = true;
14235 while let Some(key) = map.next_key::<&str>()? {
14236 nothing = false;
14237 match key {
14238 "shared_folder_id" => {
14239 if field_shared_folder_id.is_some() {
14240 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
14241 }
14242 field_shared_folder_id = Some(map.next_value()?);
14243 }
14244 "access_inheritance" => {
14245 if field_access_inheritance.is_some() {
14246 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
14247 }
14248 field_access_inheritance = Some(map.next_value()?);
14249 }
14250 _ => {
14251 map.next_value::<::serde_json::Value>()?;
14253 }
14254 }
14255 }
14256 if optional && nothing {
14257 return Ok(None);
14258 }
14259 let result = SetAccessInheritanceArg {
14260 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
14261 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
14262 };
14263 Ok(Some(result))
14264 }
14265
14266 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
14267 &self,
14268 s: &mut S::SerializeStruct,
14269 ) -> Result<(), S::Error> {
14270 use serde::ser::SerializeStruct;
14271 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
14272 if self.access_inheritance != AccessInheritance::Inherit {
14273 s.serialize_field("access_inheritance", &self.access_inheritance)?;
14274 }
14275 Ok(())
14276 }
14277}
14278
14279impl<'de> ::serde::de::Deserialize<'de> for SetAccessInheritanceArg {
14280 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14281 use serde::de::{MapAccess, Visitor};
14283 struct StructVisitor;
14284 impl<'de> Visitor<'de> for StructVisitor {
14285 type Value = SetAccessInheritanceArg;
14286 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14287 f.write_str("a SetAccessInheritanceArg struct")
14288 }
14289 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
14290 SetAccessInheritanceArg::internal_deserialize(map)
14291 }
14292 }
14293 deserializer.deserialize_struct("SetAccessInheritanceArg", SET_ACCESS_INHERITANCE_ARG_FIELDS, StructVisitor)
14294 }
14295}
14296
14297impl ::serde::ser::Serialize for SetAccessInheritanceArg {
14298 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14299 use serde::ser::SerializeStruct;
14301 let mut s = serializer.serialize_struct("SetAccessInheritanceArg", 2)?;
14302 self.internal_serialize::<S>(&mut s)?;
14303 s.end()
14304 }
14305}
14306
14307#[derive(Debug, Clone, PartialEq, Eq)]
14308#[non_exhaustive] pub enum SetAccessInheritanceError {
14310 AccessError(SharedFolderAccessError),
14312 NoPermission,
14314 Other,
14317}
14318
14319impl<'de> ::serde::de::Deserialize<'de> for SetAccessInheritanceError {
14320 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14321 use serde::de::{self, MapAccess, Visitor};
14323 struct EnumVisitor;
14324 impl<'de> Visitor<'de> for EnumVisitor {
14325 type Value = SetAccessInheritanceError;
14326 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14327 f.write_str("a SetAccessInheritanceError structure")
14328 }
14329 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
14330 let tag: &str = match map.next_key()? {
14331 Some(".tag") => map.next_value()?,
14332 _ => return Err(de::Error::missing_field(".tag"))
14333 };
14334 let value = match tag {
14335 "access_error" => {
14336 match map.next_key()? {
14337 Some("access_error") => SetAccessInheritanceError::AccessError(map.next_value()?),
14338 None => return Err(de::Error::missing_field("access_error")),
14339 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
14340 }
14341 }
14342 "no_permission" => SetAccessInheritanceError::NoPermission,
14343 _ => SetAccessInheritanceError::Other,
14344 };
14345 crate::eat_json_fields(&mut map)?;
14346 Ok(value)
14347 }
14348 }
14349 const VARIANTS: &[&str] = &["access_error",
14350 "no_permission",
14351 "other"];
14352 deserializer.deserialize_struct("SetAccessInheritanceError", VARIANTS, EnumVisitor)
14353 }
14354}
14355
14356impl ::serde::ser::Serialize for SetAccessInheritanceError {
14357 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14358 use serde::ser::SerializeStruct;
14360 match self {
14361 SetAccessInheritanceError::AccessError(x) => {
14362 let mut s = serializer.serialize_struct("SetAccessInheritanceError", 2)?;
14364 s.serialize_field(".tag", "access_error")?;
14365 s.serialize_field("access_error", x)?;
14366 s.end()
14367 }
14368 SetAccessInheritanceError::NoPermission => {
14369 let mut s = serializer.serialize_struct("SetAccessInheritanceError", 1)?;
14371 s.serialize_field(".tag", "no_permission")?;
14372 s.end()
14373 }
14374 SetAccessInheritanceError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
14375 }
14376 }
14377}
14378
14379impl ::std::error::Error for SetAccessInheritanceError {
14380 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
14381 match self {
14382 SetAccessInheritanceError::AccessError(inner) => Some(inner),
14383 _ => None,
14384 }
14385 }
14386}
14387
14388impl ::std::fmt::Display for SetAccessInheritanceError {
14389 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14390 match self {
14391 SetAccessInheritanceError::AccessError(inner) => write!(f, "Unable to access shared folder: {}", inner),
14392 SetAccessInheritanceError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
14393 _ => write!(f, "{:?}", *self),
14394 }
14395 }
14396}
14397
14398#[derive(Debug, Clone, PartialEq, Eq)]
14399#[non_exhaustive] pub struct ShareFolderArg {
14401 pub path: crate::types::files::WritePathOrId,
14404 pub acl_update_policy: Option<AclUpdatePolicy>,
14406 pub force_async: bool,
14408 pub member_policy: Option<MemberPolicy>,
14410 pub shared_link_policy: Option<SharedLinkPolicy>,
14413 pub viewer_info_policy: Option<ViewerInfoPolicy>,
14415 pub access_inheritance: AccessInheritance,
14417 pub actions: Option<Vec<FolderAction>>,
14421 pub link_settings: Option<LinkSettings>,
14423}
14424
14425impl ShareFolderArg {
14426 pub fn new(path: crate::types::files::WritePathOrId) -> Self {
14427 ShareFolderArg {
14428 path,
14429 acl_update_policy: None,
14430 force_async: false,
14431 member_policy: None,
14432 shared_link_policy: None,
14433 viewer_info_policy: None,
14434 access_inheritance: AccessInheritance::Inherit,
14435 actions: None,
14436 link_settings: None,
14437 }
14438 }
14439
14440 pub fn with_acl_update_policy(mut self, value: AclUpdatePolicy) -> Self {
14441 self.acl_update_policy = Some(value);
14442 self
14443 }
14444
14445 pub fn with_force_async(mut self, value: bool) -> Self {
14446 self.force_async = value;
14447 self
14448 }
14449
14450 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
14451 self.member_policy = Some(value);
14452 self
14453 }
14454
14455 pub fn with_shared_link_policy(mut self, value: SharedLinkPolicy) -> Self {
14456 self.shared_link_policy = Some(value);
14457 self
14458 }
14459
14460 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
14461 self.viewer_info_policy = Some(value);
14462 self
14463 }
14464
14465 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
14466 self.access_inheritance = value;
14467 self
14468 }
14469
14470 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
14471 self.actions = Some(value);
14472 self
14473 }
14474
14475 pub fn with_link_settings(mut self, value: LinkSettings) -> Self {
14476 self.link_settings = Some(value);
14477 self
14478 }
14479}
14480
14481const SHARE_FOLDER_ARG_FIELDS: &[&str] = &["path",
14482 "acl_update_policy",
14483 "force_async",
14484 "member_policy",
14485 "shared_link_policy",
14486 "viewer_info_policy",
14487 "access_inheritance",
14488 "actions",
14489 "link_settings"];
14490impl ShareFolderArg {
14491 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
14492 map: V,
14493 ) -> Result<ShareFolderArg, V::Error> {
14494 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
14495 }
14496
14497 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
14498 mut map: V,
14499 optional: bool,
14500 ) -> Result<Option<ShareFolderArg>, V::Error> {
14501 let mut field_path = None;
14502 let mut field_acl_update_policy = None;
14503 let mut field_force_async = None;
14504 let mut field_member_policy = None;
14505 let mut field_shared_link_policy = None;
14506 let mut field_viewer_info_policy = None;
14507 let mut field_access_inheritance = None;
14508 let mut field_actions = None;
14509 let mut field_link_settings = None;
14510 let mut nothing = true;
14511 while let Some(key) = map.next_key::<&str>()? {
14512 nothing = false;
14513 match key {
14514 "path" => {
14515 if field_path.is_some() {
14516 return Err(::serde::de::Error::duplicate_field("path"));
14517 }
14518 field_path = Some(map.next_value()?);
14519 }
14520 "acl_update_policy" => {
14521 if field_acl_update_policy.is_some() {
14522 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
14523 }
14524 field_acl_update_policy = Some(map.next_value()?);
14525 }
14526 "force_async" => {
14527 if field_force_async.is_some() {
14528 return Err(::serde::de::Error::duplicate_field("force_async"));
14529 }
14530 field_force_async = Some(map.next_value()?);
14531 }
14532 "member_policy" => {
14533 if field_member_policy.is_some() {
14534 return Err(::serde::de::Error::duplicate_field("member_policy"));
14535 }
14536 field_member_policy = Some(map.next_value()?);
14537 }
14538 "shared_link_policy" => {
14539 if field_shared_link_policy.is_some() {
14540 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
14541 }
14542 field_shared_link_policy = Some(map.next_value()?);
14543 }
14544 "viewer_info_policy" => {
14545 if field_viewer_info_policy.is_some() {
14546 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
14547 }
14548 field_viewer_info_policy = Some(map.next_value()?);
14549 }
14550 "access_inheritance" => {
14551 if field_access_inheritance.is_some() {
14552 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
14553 }
14554 field_access_inheritance = Some(map.next_value()?);
14555 }
14556 "actions" => {
14557 if field_actions.is_some() {
14558 return Err(::serde::de::Error::duplicate_field("actions"));
14559 }
14560 field_actions = Some(map.next_value()?);
14561 }
14562 "link_settings" => {
14563 if field_link_settings.is_some() {
14564 return Err(::serde::de::Error::duplicate_field("link_settings"));
14565 }
14566 field_link_settings = Some(map.next_value()?);
14567 }
14568 _ => {
14569 map.next_value::<::serde_json::Value>()?;
14571 }
14572 }
14573 }
14574 if optional && nothing {
14575 return Ok(None);
14576 }
14577 let result = ShareFolderArg {
14578 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
14579 acl_update_policy: field_acl_update_policy.and_then(Option::flatten),
14580 force_async: field_force_async.unwrap_or(false),
14581 member_policy: field_member_policy.and_then(Option::flatten),
14582 shared_link_policy: field_shared_link_policy.and_then(Option::flatten),
14583 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
14584 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
14585 actions: field_actions.and_then(Option::flatten),
14586 link_settings: field_link_settings.and_then(Option::flatten),
14587 };
14588 Ok(Some(result))
14589 }
14590
14591 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
14592 &self,
14593 s: &mut S::SerializeStruct,
14594 ) -> Result<(), S::Error> {
14595 use serde::ser::SerializeStruct;
14596 s.serialize_field("path", &self.path)?;
14597 if let Some(val) = &self.acl_update_policy {
14598 s.serialize_field("acl_update_policy", val)?;
14599 }
14600 if self.force_async {
14601 s.serialize_field("force_async", &self.force_async)?;
14602 }
14603 if let Some(val) = &self.member_policy {
14604 s.serialize_field("member_policy", val)?;
14605 }
14606 if let Some(val) = &self.shared_link_policy {
14607 s.serialize_field("shared_link_policy", val)?;
14608 }
14609 if let Some(val) = &self.viewer_info_policy {
14610 s.serialize_field("viewer_info_policy", val)?;
14611 }
14612 if self.access_inheritance != AccessInheritance::Inherit {
14613 s.serialize_field("access_inheritance", &self.access_inheritance)?;
14614 }
14615 if let Some(val) = &self.actions {
14616 s.serialize_field("actions", val)?;
14617 }
14618 if let Some(val) = &self.link_settings {
14619 s.serialize_field("link_settings", val)?;
14620 }
14621 Ok(())
14622 }
14623}
14624
14625impl<'de> ::serde::de::Deserialize<'de> for ShareFolderArg {
14626 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14627 use serde::de::{MapAccess, Visitor};
14629 struct StructVisitor;
14630 impl<'de> Visitor<'de> for StructVisitor {
14631 type Value = ShareFolderArg;
14632 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14633 f.write_str("a ShareFolderArg struct")
14634 }
14635 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
14636 ShareFolderArg::internal_deserialize(map)
14637 }
14638 }
14639 deserializer.deserialize_struct("ShareFolderArg", SHARE_FOLDER_ARG_FIELDS, StructVisitor)
14640 }
14641}
14642
14643impl ::serde::ser::Serialize for ShareFolderArg {
14644 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14645 use serde::ser::SerializeStruct;
14647 let mut s = serializer.serialize_struct("ShareFolderArg", 9)?;
14648 self.internal_serialize::<S>(&mut s)?;
14649 s.end()
14650 }
14651}
14652
14653impl From<ShareFolderArg> for ShareFolderArgBase {
14655 fn from(subtype: ShareFolderArg) -> Self {
14656 Self {
14657 path: subtype.path,
14658 acl_update_policy: subtype.acl_update_policy,
14659 force_async: subtype.force_async,
14660 member_policy: subtype.member_policy,
14661 shared_link_policy: subtype.shared_link_policy,
14662 viewer_info_policy: subtype.viewer_info_policy,
14663 access_inheritance: subtype.access_inheritance,
14664 }
14665 }
14666}
14667#[derive(Debug, Clone, PartialEq, Eq)]
14668#[non_exhaustive] pub struct ShareFolderArgBase {
14670 pub path: crate::types::files::WritePathOrId,
14673 pub acl_update_policy: Option<AclUpdatePolicy>,
14675 pub force_async: bool,
14677 pub member_policy: Option<MemberPolicy>,
14679 pub shared_link_policy: Option<SharedLinkPolicy>,
14682 pub viewer_info_policy: Option<ViewerInfoPolicy>,
14684 pub access_inheritance: AccessInheritance,
14686}
14687
14688impl ShareFolderArgBase {
14689 pub fn new(path: crate::types::files::WritePathOrId) -> Self {
14690 ShareFolderArgBase {
14691 path,
14692 acl_update_policy: None,
14693 force_async: false,
14694 member_policy: None,
14695 shared_link_policy: None,
14696 viewer_info_policy: None,
14697 access_inheritance: AccessInheritance::Inherit,
14698 }
14699 }
14700
14701 pub fn with_acl_update_policy(mut self, value: AclUpdatePolicy) -> Self {
14702 self.acl_update_policy = Some(value);
14703 self
14704 }
14705
14706 pub fn with_force_async(mut self, value: bool) -> Self {
14707 self.force_async = value;
14708 self
14709 }
14710
14711 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
14712 self.member_policy = Some(value);
14713 self
14714 }
14715
14716 pub fn with_shared_link_policy(mut self, value: SharedLinkPolicy) -> Self {
14717 self.shared_link_policy = Some(value);
14718 self
14719 }
14720
14721 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
14722 self.viewer_info_policy = Some(value);
14723 self
14724 }
14725
14726 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
14727 self.access_inheritance = value;
14728 self
14729 }
14730}
14731
14732const SHARE_FOLDER_ARG_BASE_FIELDS: &[&str] = &["path",
14733 "acl_update_policy",
14734 "force_async",
14735 "member_policy",
14736 "shared_link_policy",
14737 "viewer_info_policy",
14738 "access_inheritance"];
14739impl ShareFolderArgBase {
14740 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
14741 map: V,
14742 ) -> Result<ShareFolderArgBase, V::Error> {
14743 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
14744 }
14745
14746 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
14747 mut map: V,
14748 optional: bool,
14749 ) -> Result<Option<ShareFolderArgBase>, V::Error> {
14750 let mut field_path = None;
14751 let mut field_acl_update_policy = None;
14752 let mut field_force_async = None;
14753 let mut field_member_policy = None;
14754 let mut field_shared_link_policy = None;
14755 let mut field_viewer_info_policy = None;
14756 let mut field_access_inheritance = None;
14757 let mut nothing = true;
14758 while let Some(key) = map.next_key::<&str>()? {
14759 nothing = false;
14760 match key {
14761 "path" => {
14762 if field_path.is_some() {
14763 return Err(::serde::de::Error::duplicate_field("path"));
14764 }
14765 field_path = Some(map.next_value()?);
14766 }
14767 "acl_update_policy" => {
14768 if field_acl_update_policy.is_some() {
14769 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
14770 }
14771 field_acl_update_policy = Some(map.next_value()?);
14772 }
14773 "force_async" => {
14774 if field_force_async.is_some() {
14775 return Err(::serde::de::Error::duplicate_field("force_async"));
14776 }
14777 field_force_async = Some(map.next_value()?);
14778 }
14779 "member_policy" => {
14780 if field_member_policy.is_some() {
14781 return Err(::serde::de::Error::duplicate_field("member_policy"));
14782 }
14783 field_member_policy = Some(map.next_value()?);
14784 }
14785 "shared_link_policy" => {
14786 if field_shared_link_policy.is_some() {
14787 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
14788 }
14789 field_shared_link_policy = Some(map.next_value()?);
14790 }
14791 "viewer_info_policy" => {
14792 if field_viewer_info_policy.is_some() {
14793 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
14794 }
14795 field_viewer_info_policy = Some(map.next_value()?);
14796 }
14797 "access_inheritance" => {
14798 if field_access_inheritance.is_some() {
14799 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
14800 }
14801 field_access_inheritance = Some(map.next_value()?);
14802 }
14803 _ => {
14804 map.next_value::<::serde_json::Value>()?;
14806 }
14807 }
14808 }
14809 if optional && nothing {
14810 return Ok(None);
14811 }
14812 let result = ShareFolderArgBase {
14813 path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?,
14814 acl_update_policy: field_acl_update_policy.and_then(Option::flatten),
14815 force_async: field_force_async.unwrap_or(false),
14816 member_policy: field_member_policy.and_then(Option::flatten),
14817 shared_link_policy: field_shared_link_policy.and_then(Option::flatten),
14818 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
14819 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
14820 };
14821 Ok(Some(result))
14822 }
14823
14824 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
14825 &self,
14826 s: &mut S::SerializeStruct,
14827 ) -> Result<(), S::Error> {
14828 use serde::ser::SerializeStruct;
14829 s.serialize_field("path", &self.path)?;
14830 if let Some(val) = &self.acl_update_policy {
14831 s.serialize_field("acl_update_policy", val)?;
14832 }
14833 if self.force_async {
14834 s.serialize_field("force_async", &self.force_async)?;
14835 }
14836 if let Some(val) = &self.member_policy {
14837 s.serialize_field("member_policy", val)?;
14838 }
14839 if let Some(val) = &self.shared_link_policy {
14840 s.serialize_field("shared_link_policy", val)?;
14841 }
14842 if let Some(val) = &self.viewer_info_policy {
14843 s.serialize_field("viewer_info_policy", val)?;
14844 }
14845 if self.access_inheritance != AccessInheritance::Inherit {
14846 s.serialize_field("access_inheritance", &self.access_inheritance)?;
14847 }
14848 Ok(())
14849 }
14850}
14851
14852impl<'de> ::serde::de::Deserialize<'de> for ShareFolderArgBase {
14853 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14854 use serde::de::{MapAccess, Visitor};
14856 struct StructVisitor;
14857 impl<'de> Visitor<'de> for StructVisitor {
14858 type Value = ShareFolderArgBase;
14859 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14860 f.write_str("a ShareFolderArgBase struct")
14861 }
14862 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
14863 ShareFolderArgBase::internal_deserialize(map)
14864 }
14865 }
14866 deserializer.deserialize_struct("ShareFolderArgBase", SHARE_FOLDER_ARG_BASE_FIELDS, StructVisitor)
14867 }
14868}
14869
14870impl ::serde::ser::Serialize for ShareFolderArgBase {
14871 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14872 use serde::ser::SerializeStruct;
14874 let mut s = serializer.serialize_struct("ShareFolderArgBase", 7)?;
14875 self.internal_serialize::<S>(&mut s)?;
14876 s.end()
14877 }
14878}
14879
14880#[derive(Debug, Clone, PartialEq, Eq)]
14881#[non_exhaustive] pub enum ShareFolderError {
14883 EmailUnverified,
14887 BadPath(SharePathError),
14889 TeamPolicyDisallowsMemberPolicy,
14892 DisallowedSharedLinkPolicy,
14895 NoPermission,
14897 Other,
14900}
14901
14902impl<'de> ::serde::de::Deserialize<'de> for ShareFolderError {
14903 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
14904 use serde::de::{self, MapAccess, Visitor};
14906 struct EnumVisitor;
14907 impl<'de> Visitor<'de> for EnumVisitor {
14908 type Value = ShareFolderError;
14909 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14910 f.write_str("a ShareFolderError structure")
14911 }
14912 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
14913 let tag: &str = match map.next_key()? {
14914 Some(".tag") => map.next_value()?,
14915 _ => return Err(de::Error::missing_field(".tag"))
14916 };
14917 let value = match tag {
14918 "email_unverified" => ShareFolderError::EmailUnverified,
14919 "bad_path" => {
14920 match map.next_key()? {
14921 Some("bad_path") => ShareFolderError::BadPath(map.next_value()?),
14922 None => return Err(de::Error::missing_field("bad_path")),
14923 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
14924 }
14925 }
14926 "team_policy_disallows_member_policy" => ShareFolderError::TeamPolicyDisallowsMemberPolicy,
14927 "disallowed_shared_link_policy" => ShareFolderError::DisallowedSharedLinkPolicy,
14928 "no_permission" => ShareFolderError::NoPermission,
14929 _ => ShareFolderError::Other,
14930 };
14931 crate::eat_json_fields(&mut map)?;
14932 Ok(value)
14933 }
14934 }
14935 const VARIANTS: &[&str] = &["email_unverified",
14936 "bad_path",
14937 "team_policy_disallows_member_policy",
14938 "disallowed_shared_link_policy",
14939 "other",
14940 "no_permission"];
14941 deserializer.deserialize_struct("ShareFolderError", VARIANTS, EnumVisitor)
14942 }
14943}
14944
14945impl ::serde::ser::Serialize for ShareFolderError {
14946 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14947 use serde::ser::SerializeStruct;
14949 match self {
14950 ShareFolderError::EmailUnverified => {
14951 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14953 s.serialize_field(".tag", "email_unverified")?;
14954 s.end()
14955 }
14956 ShareFolderError::BadPath(x) => {
14957 let mut s = serializer.serialize_struct("ShareFolderError", 2)?;
14959 s.serialize_field(".tag", "bad_path")?;
14960 s.serialize_field("bad_path", x)?;
14961 s.end()
14962 }
14963 ShareFolderError::TeamPolicyDisallowsMemberPolicy => {
14964 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14966 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
14967 s.end()
14968 }
14969 ShareFolderError::DisallowedSharedLinkPolicy => {
14970 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14972 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
14973 s.end()
14974 }
14975 ShareFolderError::NoPermission => {
14976 let mut s = serializer.serialize_struct("ShareFolderError", 1)?;
14978 s.serialize_field(".tag", "no_permission")?;
14979 s.end()
14980 }
14981 ShareFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
14982 }
14983 }
14984}
14985
14986impl ::std::error::Error for ShareFolderError {
14987 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
14988 match self {
14989 ShareFolderError::BadPath(inner) => Some(inner),
14990 _ => None,
14991 }
14992 }
14993}
14994
14995impl ::std::fmt::Display for ShareFolderError {
14996 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14997 match self {
14998 ShareFolderError::BadPath(inner) => write!(f, "ShareFolderError: {}", inner),
14999 ShareFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
15000 _ => write!(f, "{:?}", *self),
15001 }
15002 }
15003}
15004
15005impl From<ShareFolderErrorBase> for ShareFolderError {
15007 fn from(parent: ShareFolderErrorBase) -> Self {
15008 match parent {
15009 ShareFolderErrorBase::EmailUnverified => ShareFolderError::EmailUnverified,
15010 ShareFolderErrorBase::BadPath(x) => ShareFolderError::BadPath(x),
15011 ShareFolderErrorBase::TeamPolicyDisallowsMemberPolicy => ShareFolderError::TeamPolicyDisallowsMemberPolicy,
15012 ShareFolderErrorBase::DisallowedSharedLinkPolicy => ShareFolderError::DisallowedSharedLinkPolicy,
15013 ShareFolderErrorBase::Other => ShareFolderError::Other,
15014 }
15015 }
15016}
15017#[derive(Debug, Clone, PartialEq, Eq)]
15018#[non_exhaustive] pub enum ShareFolderErrorBase {
15020 EmailUnverified,
15024 BadPath(SharePathError),
15026 TeamPolicyDisallowsMemberPolicy,
15029 DisallowedSharedLinkPolicy,
15032 Other,
15035}
15036
15037impl<'de> ::serde::de::Deserialize<'de> for ShareFolderErrorBase {
15038 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15039 use serde::de::{self, MapAccess, Visitor};
15041 struct EnumVisitor;
15042 impl<'de> Visitor<'de> for EnumVisitor {
15043 type Value = ShareFolderErrorBase;
15044 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15045 f.write_str("a ShareFolderErrorBase structure")
15046 }
15047 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15048 let tag: &str = match map.next_key()? {
15049 Some(".tag") => map.next_value()?,
15050 _ => return Err(de::Error::missing_field(".tag"))
15051 };
15052 let value = match tag {
15053 "email_unverified" => ShareFolderErrorBase::EmailUnverified,
15054 "bad_path" => {
15055 match map.next_key()? {
15056 Some("bad_path") => ShareFolderErrorBase::BadPath(map.next_value()?),
15057 None => return Err(de::Error::missing_field("bad_path")),
15058 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
15059 }
15060 }
15061 "team_policy_disallows_member_policy" => ShareFolderErrorBase::TeamPolicyDisallowsMemberPolicy,
15062 "disallowed_shared_link_policy" => ShareFolderErrorBase::DisallowedSharedLinkPolicy,
15063 _ => ShareFolderErrorBase::Other,
15064 };
15065 crate::eat_json_fields(&mut map)?;
15066 Ok(value)
15067 }
15068 }
15069 const VARIANTS: &[&str] = &["email_unverified",
15070 "bad_path",
15071 "team_policy_disallows_member_policy",
15072 "disallowed_shared_link_policy",
15073 "other"];
15074 deserializer.deserialize_struct("ShareFolderErrorBase", VARIANTS, EnumVisitor)
15075 }
15076}
15077
15078impl ::serde::ser::Serialize for ShareFolderErrorBase {
15079 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15080 use serde::ser::SerializeStruct;
15082 match self {
15083 ShareFolderErrorBase::EmailUnverified => {
15084 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 1)?;
15086 s.serialize_field(".tag", "email_unverified")?;
15087 s.end()
15088 }
15089 ShareFolderErrorBase::BadPath(x) => {
15090 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 2)?;
15092 s.serialize_field(".tag", "bad_path")?;
15093 s.serialize_field("bad_path", x)?;
15094 s.end()
15095 }
15096 ShareFolderErrorBase::TeamPolicyDisallowsMemberPolicy => {
15097 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 1)?;
15099 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
15100 s.end()
15101 }
15102 ShareFolderErrorBase::DisallowedSharedLinkPolicy => {
15103 let mut s = serializer.serialize_struct("ShareFolderErrorBase", 1)?;
15105 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
15106 s.end()
15107 }
15108 ShareFolderErrorBase::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15109 }
15110 }
15111}
15112
15113#[derive(Debug, Clone, PartialEq, Eq)]
15114#[non_exhaustive] pub enum ShareFolderErrorBaseV2 {
15116 EmailUnverified,
15120 TeamPolicyDisallowsMemberPolicy,
15123 DisallowedSharedLinkPolicy,
15126 Other,
15129}
15130
15131impl<'de> ::serde::de::Deserialize<'de> for ShareFolderErrorBaseV2 {
15132 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15133 use serde::de::{self, MapAccess, Visitor};
15135 struct EnumVisitor;
15136 impl<'de> Visitor<'de> for EnumVisitor {
15137 type Value = ShareFolderErrorBaseV2;
15138 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15139 f.write_str("a ShareFolderErrorBaseV2 structure")
15140 }
15141 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15142 let tag: &str = match map.next_key()? {
15143 Some(".tag") => map.next_value()?,
15144 _ => return Err(de::Error::missing_field(".tag"))
15145 };
15146 let value = match tag {
15147 "email_unverified" => ShareFolderErrorBaseV2::EmailUnverified,
15148 "team_policy_disallows_member_policy" => ShareFolderErrorBaseV2::TeamPolicyDisallowsMemberPolicy,
15149 "disallowed_shared_link_policy" => ShareFolderErrorBaseV2::DisallowedSharedLinkPolicy,
15150 _ => ShareFolderErrorBaseV2::Other,
15151 };
15152 crate::eat_json_fields(&mut map)?;
15153 Ok(value)
15154 }
15155 }
15156 const VARIANTS: &[&str] = &["email_unverified",
15157 "team_policy_disallows_member_policy",
15158 "disallowed_shared_link_policy",
15159 "other"];
15160 deserializer.deserialize_struct("ShareFolderErrorBaseV2", VARIANTS, EnumVisitor)
15161 }
15162}
15163
15164impl ::serde::ser::Serialize for ShareFolderErrorBaseV2 {
15165 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15166 use serde::ser::SerializeStruct;
15168 match self {
15169 ShareFolderErrorBaseV2::EmailUnverified => {
15170 let mut s = serializer.serialize_struct("ShareFolderErrorBaseV2", 1)?;
15172 s.serialize_field(".tag", "email_unverified")?;
15173 s.end()
15174 }
15175 ShareFolderErrorBaseV2::TeamPolicyDisallowsMemberPolicy => {
15176 let mut s = serializer.serialize_struct("ShareFolderErrorBaseV2", 1)?;
15178 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
15179 s.end()
15180 }
15181 ShareFolderErrorBaseV2::DisallowedSharedLinkPolicy => {
15182 let mut s = serializer.serialize_struct("ShareFolderErrorBaseV2", 1)?;
15184 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
15185 s.end()
15186 }
15187 ShareFolderErrorBaseV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15188 }
15189 }
15190}
15191
15192#[derive(Debug, Clone, PartialEq, Eq)]
15193#[non_exhaustive] pub enum ShareFolderErrorV2 {
15195 EmailUnverified,
15199 TeamPolicyDisallowsMemberPolicy,
15202 DisallowedSharedLinkPolicy,
15205 NoPermission,
15207 Other,
15210}
15211
15212impl<'de> ::serde::de::Deserialize<'de> for ShareFolderErrorV2 {
15213 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15214 use serde::de::{self, MapAccess, Visitor};
15216 struct EnumVisitor;
15217 impl<'de> Visitor<'de> for EnumVisitor {
15218 type Value = ShareFolderErrorV2;
15219 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15220 f.write_str("a ShareFolderErrorV2 structure")
15221 }
15222 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15223 let tag: &str = match map.next_key()? {
15224 Some(".tag") => map.next_value()?,
15225 _ => return Err(de::Error::missing_field(".tag"))
15226 };
15227 let value = match tag {
15228 "email_unverified" => ShareFolderErrorV2::EmailUnverified,
15229 "team_policy_disallows_member_policy" => ShareFolderErrorV2::TeamPolicyDisallowsMemberPolicy,
15230 "disallowed_shared_link_policy" => ShareFolderErrorV2::DisallowedSharedLinkPolicy,
15231 "no_permission" => ShareFolderErrorV2::NoPermission,
15232 _ => ShareFolderErrorV2::Other,
15233 };
15234 crate::eat_json_fields(&mut map)?;
15235 Ok(value)
15236 }
15237 }
15238 const VARIANTS: &[&str] = &["email_unverified",
15239 "team_policy_disallows_member_policy",
15240 "disallowed_shared_link_policy",
15241 "other",
15242 "no_permission"];
15243 deserializer.deserialize_struct("ShareFolderErrorV2", VARIANTS, EnumVisitor)
15244 }
15245}
15246
15247impl ::serde::ser::Serialize for ShareFolderErrorV2 {
15248 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15249 use serde::ser::SerializeStruct;
15251 match self {
15252 ShareFolderErrorV2::EmailUnverified => {
15253 let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?;
15255 s.serialize_field(".tag", "email_unverified")?;
15256 s.end()
15257 }
15258 ShareFolderErrorV2::TeamPolicyDisallowsMemberPolicy => {
15259 let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?;
15261 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
15262 s.end()
15263 }
15264 ShareFolderErrorV2::DisallowedSharedLinkPolicy => {
15265 let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?;
15267 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
15268 s.end()
15269 }
15270 ShareFolderErrorV2::NoPermission => {
15271 let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?;
15273 s.serialize_field(".tag", "no_permission")?;
15274 s.end()
15275 }
15276 ShareFolderErrorV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15277 }
15278 }
15279}
15280
15281impl From<ShareFolderErrorBaseV2> for ShareFolderErrorV2 {
15283 fn from(parent: ShareFolderErrorBaseV2) -> Self {
15284 match parent {
15285 ShareFolderErrorBaseV2::EmailUnverified => ShareFolderErrorV2::EmailUnverified,
15286 ShareFolderErrorBaseV2::TeamPolicyDisallowsMemberPolicy => ShareFolderErrorV2::TeamPolicyDisallowsMemberPolicy,
15287 ShareFolderErrorBaseV2::DisallowedSharedLinkPolicy => ShareFolderErrorV2::DisallowedSharedLinkPolicy,
15288 ShareFolderErrorBaseV2::Other => ShareFolderErrorV2::Other,
15289 }
15290 }
15291}
15292#[derive(Debug, Clone, PartialEq, Eq)]
15293pub enum ShareFolderJobStatus {
15294 InProgress,
15296 Complete(SharedFolderMetadata),
15298 Failed(ShareFolderError),
15299}
15300
15301impl<'de> ::serde::de::Deserialize<'de> for ShareFolderJobStatus {
15302 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15303 use serde::de::{self, MapAccess, Visitor};
15305 struct EnumVisitor;
15306 impl<'de> Visitor<'de> for EnumVisitor {
15307 type Value = ShareFolderJobStatus;
15308 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15309 f.write_str("a ShareFolderJobStatus structure")
15310 }
15311 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15312 let tag: &str = match map.next_key()? {
15313 Some(".tag") => map.next_value()?,
15314 _ => return Err(de::Error::missing_field(".tag"))
15315 };
15316 let value = match tag {
15317 "in_progress" => ShareFolderJobStatus::InProgress,
15318 "complete" => ShareFolderJobStatus::Complete(SharedFolderMetadata::internal_deserialize(&mut map)?),
15319 "failed" => {
15320 match map.next_key()? {
15321 Some("failed") => ShareFolderJobStatus::Failed(map.next_value()?),
15322 None => return Err(de::Error::missing_field("failed")),
15323 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
15324 }
15325 }
15326 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
15327 };
15328 crate::eat_json_fields(&mut map)?;
15329 Ok(value)
15330 }
15331 }
15332 const VARIANTS: &[&str] = &["in_progress",
15333 "complete",
15334 "failed"];
15335 deserializer.deserialize_struct("ShareFolderJobStatus", VARIANTS, EnumVisitor)
15336 }
15337}
15338
15339impl ::serde::ser::Serialize for ShareFolderJobStatus {
15340 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15341 use serde::ser::SerializeStruct;
15343 match self {
15344 ShareFolderJobStatus::InProgress => {
15345 let mut s = serializer.serialize_struct("ShareFolderJobStatus", 1)?;
15347 s.serialize_field(".tag", "in_progress")?;
15348 s.end()
15349 }
15350 ShareFolderJobStatus::Complete(x) => {
15351 let mut s = serializer.serialize_struct("ShareFolderJobStatus", 19)?;
15353 s.serialize_field(".tag", "complete")?;
15354 x.internal_serialize::<S>(&mut s)?;
15355 s.end()
15356 }
15357 ShareFolderJobStatus::Failed(x) => {
15358 let mut s = serializer.serialize_struct("ShareFolderJobStatus", 2)?;
15360 s.serialize_field(".tag", "failed")?;
15361 s.serialize_field("failed", x)?;
15362 s.end()
15363 }
15364 }
15365 }
15366}
15367
15368impl From<crate::types::dbx_async::PollResultBase> for ShareFolderJobStatus {
15370 fn from(parent: crate::types::dbx_async::PollResultBase) -> Self {
15371 match parent {
15372 crate::types::dbx_async::PollResultBase::InProgress => ShareFolderJobStatus::InProgress,
15373 }
15374 }
15375}
15376#[derive(Debug, Clone, PartialEq, Eq)]
15377pub enum ShareFolderLaunch {
15378 AsyncJobId(crate::types::dbx_async::AsyncJobId),
15381 Complete(SharedFolderMetadata),
15382}
15383
15384impl<'de> ::serde::de::Deserialize<'de> for ShareFolderLaunch {
15385 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15386 use serde::de::{self, MapAccess, Visitor};
15388 struct EnumVisitor;
15389 impl<'de> Visitor<'de> for EnumVisitor {
15390 type Value = ShareFolderLaunch;
15391 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15392 f.write_str("a ShareFolderLaunch structure")
15393 }
15394 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15395 let tag: &str = match map.next_key()? {
15396 Some(".tag") => map.next_value()?,
15397 _ => return Err(de::Error::missing_field(".tag"))
15398 };
15399 let value = match tag {
15400 "async_job_id" => {
15401 match map.next_key()? {
15402 Some("async_job_id") => ShareFolderLaunch::AsyncJobId(map.next_value()?),
15403 None => return Err(de::Error::missing_field("async_job_id")),
15404 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
15405 }
15406 }
15407 "complete" => ShareFolderLaunch::Complete(SharedFolderMetadata::internal_deserialize(&mut map)?),
15408 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
15409 };
15410 crate::eat_json_fields(&mut map)?;
15411 Ok(value)
15412 }
15413 }
15414 const VARIANTS: &[&str] = &["async_job_id",
15415 "complete"];
15416 deserializer.deserialize_struct("ShareFolderLaunch", VARIANTS, EnumVisitor)
15417 }
15418}
15419
15420impl ::serde::ser::Serialize for ShareFolderLaunch {
15421 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15422 use serde::ser::SerializeStruct;
15424 match self {
15425 ShareFolderLaunch::AsyncJobId(x) => {
15426 let mut s = serializer.serialize_struct("ShareFolderLaunch", 2)?;
15428 s.serialize_field(".tag", "async_job_id")?;
15429 s.serialize_field("async_job_id", x)?;
15430 s.end()
15431 }
15432 ShareFolderLaunch::Complete(x) => {
15433 let mut s = serializer.serialize_struct("ShareFolderLaunch", 19)?;
15435 s.serialize_field(".tag", "complete")?;
15436 x.internal_serialize::<S>(&mut s)?;
15437 s.end()
15438 }
15439 }
15440 }
15441}
15442
15443impl From<crate::types::dbx_async::LaunchResultBase> for ShareFolderLaunch {
15445 fn from(parent: crate::types::dbx_async::LaunchResultBase) -> Self {
15446 match parent {
15447 crate::types::dbx_async::LaunchResultBase::AsyncJobId(x) => ShareFolderLaunch::AsyncJobId(x),
15448 }
15449 }
15450}
15451#[derive(Debug, Clone, PartialEq, Eq)]
15452#[non_exhaustive] pub enum SharePathError {
15454 IsFile,
15456 InsideSharedFolder,
15458 ContainsSharedFolder,
15460 ContainsAppFolder,
15462 ContainsTeamFolder,
15464 IsAppFolder,
15466 InsideAppFolder,
15468 IsPublicFolder,
15470 InsidePublicFolder,
15472 AlreadyShared(SharedFolderMetadata),
15474 InvalidPath,
15476 IsOsxPackage,
15478 InsideOsxPackage,
15480 IsVault,
15482 IsVaultLocked,
15484 IsFamily,
15486 Other,
15489}
15490
15491impl<'de> ::serde::de::Deserialize<'de> for SharePathError {
15492 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15493 use serde::de::{self, MapAccess, Visitor};
15495 struct EnumVisitor;
15496 impl<'de> Visitor<'de> for EnumVisitor {
15497 type Value = SharePathError;
15498 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15499 f.write_str("a SharePathError structure")
15500 }
15501 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15502 let tag: &str = match map.next_key()? {
15503 Some(".tag") => map.next_value()?,
15504 _ => return Err(de::Error::missing_field(".tag"))
15505 };
15506 let value = match tag {
15507 "is_file" => SharePathError::IsFile,
15508 "inside_shared_folder" => SharePathError::InsideSharedFolder,
15509 "contains_shared_folder" => SharePathError::ContainsSharedFolder,
15510 "contains_app_folder" => SharePathError::ContainsAppFolder,
15511 "contains_team_folder" => SharePathError::ContainsTeamFolder,
15512 "is_app_folder" => SharePathError::IsAppFolder,
15513 "inside_app_folder" => SharePathError::InsideAppFolder,
15514 "is_public_folder" => SharePathError::IsPublicFolder,
15515 "inside_public_folder" => SharePathError::InsidePublicFolder,
15516 "already_shared" => SharePathError::AlreadyShared(SharedFolderMetadata::internal_deserialize(&mut map)?),
15517 "invalid_path" => SharePathError::InvalidPath,
15518 "is_osx_package" => SharePathError::IsOsxPackage,
15519 "inside_osx_package" => SharePathError::InsideOsxPackage,
15520 "is_vault" => SharePathError::IsVault,
15521 "is_vault_locked" => SharePathError::IsVaultLocked,
15522 "is_family" => SharePathError::IsFamily,
15523 _ => SharePathError::Other,
15524 };
15525 crate::eat_json_fields(&mut map)?;
15526 Ok(value)
15527 }
15528 }
15529 const VARIANTS: &[&str] = &["is_file",
15530 "inside_shared_folder",
15531 "contains_shared_folder",
15532 "contains_app_folder",
15533 "contains_team_folder",
15534 "is_app_folder",
15535 "inside_app_folder",
15536 "is_public_folder",
15537 "inside_public_folder",
15538 "already_shared",
15539 "invalid_path",
15540 "is_osx_package",
15541 "inside_osx_package",
15542 "is_vault",
15543 "is_vault_locked",
15544 "is_family",
15545 "other"];
15546 deserializer.deserialize_struct("SharePathError", VARIANTS, EnumVisitor)
15547 }
15548}
15549
15550impl ::serde::ser::Serialize for SharePathError {
15551 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15552 use serde::ser::SerializeStruct;
15554 match self {
15555 SharePathError::IsFile => {
15556 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15558 s.serialize_field(".tag", "is_file")?;
15559 s.end()
15560 }
15561 SharePathError::InsideSharedFolder => {
15562 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15564 s.serialize_field(".tag", "inside_shared_folder")?;
15565 s.end()
15566 }
15567 SharePathError::ContainsSharedFolder => {
15568 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15570 s.serialize_field(".tag", "contains_shared_folder")?;
15571 s.end()
15572 }
15573 SharePathError::ContainsAppFolder => {
15574 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15576 s.serialize_field(".tag", "contains_app_folder")?;
15577 s.end()
15578 }
15579 SharePathError::ContainsTeamFolder => {
15580 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15582 s.serialize_field(".tag", "contains_team_folder")?;
15583 s.end()
15584 }
15585 SharePathError::IsAppFolder => {
15586 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15588 s.serialize_field(".tag", "is_app_folder")?;
15589 s.end()
15590 }
15591 SharePathError::InsideAppFolder => {
15592 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15594 s.serialize_field(".tag", "inside_app_folder")?;
15595 s.end()
15596 }
15597 SharePathError::IsPublicFolder => {
15598 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15600 s.serialize_field(".tag", "is_public_folder")?;
15601 s.end()
15602 }
15603 SharePathError::InsidePublicFolder => {
15604 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15606 s.serialize_field(".tag", "inside_public_folder")?;
15607 s.end()
15608 }
15609 SharePathError::AlreadyShared(x) => {
15610 let mut s = serializer.serialize_struct("SharePathError", 19)?;
15612 s.serialize_field(".tag", "already_shared")?;
15613 x.internal_serialize::<S>(&mut s)?;
15614 s.end()
15615 }
15616 SharePathError::InvalidPath => {
15617 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15619 s.serialize_field(".tag", "invalid_path")?;
15620 s.end()
15621 }
15622 SharePathError::IsOsxPackage => {
15623 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15625 s.serialize_field(".tag", "is_osx_package")?;
15626 s.end()
15627 }
15628 SharePathError::InsideOsxPackage => {
15629 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15631 s.serialize_field(".tag", "inside_osx_package")?;
15632 s.end()
15633 }
15634 SharePathError::IsVault => {
15635 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15637 s.serialize_field(".tag", "is_vault")?;
15638 s.end()
15639 }
15640 SharePathError::IsVaultLocked => {
15641 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15643 s.serialize_field(".tag", "is_vault_locked")?;
15644 s.end()
15645 }
15646 SharePathError::IsFamily => {
15647 let mut s = serializer.serialize_struct("SharePathError", 1)?;
15649 s.serialize_field(".tag", "is_family")?;
15650 s.end()
15651 }
15652 SharePathError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15653 }
15654 }
15655}
15656
15657impl ::std::error::Error for SharePathError {
15658}
15659
15660impl ::std::fmt::Display for SharePathError {
15661 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15662 match self {
15663 SharePathError::IsFile => f.write_str("A file is at the specified path."),
15664 SharePathError::InsideSharedFolder => f.write_str("We do not support sharing a folder inside a shared folder."),
15665 SharePathError::ContainsSharedFolder => f.write_str("We do not support shared folders that contain shared folders."),
15666 SharePathError::ContainsAppFolder => f.write_str("We do not support shared folders that contain app folders."),
15667 SharePathError::ContainsTeamFolder => f.write_str("We do not support shared folders that contain team folders."),
15668 SharePathError::IsAppFolder => f.write_str("We do not support sharing an app folder."),
15669 SharePathError::InsideAppFolder => f.write_str("We do not support sharing a folder inside an app folder."),
15670 SharePathError::IsPublicFolder => f.write_str("A public folder can't be shared this way. Use a public link instead."),
15671 SharePathError::InsidePublicFolder => f.write_str("A folder inside a public folder can't be shared this way. Use a public link instead."),
15672 SharePathError::AlreadyShared(inner) => write!(f, "Folder is already shared. Contains metadata about the existing shared folder: {:?}", inner),
15673 SharePathError::InvalidPath => f.write_str("Path is not valid."),
15674 SharePathError::IsOsxPackage => f.write_str("We do not support sharing a Mac OS X package."),
15675 SharePathError::InsideOsxPackage => f.write_str("We do not support sharing a folder inside a Mac OS X package."),
15676 SharePathError::IsVault => f.write_str("We do not support sharing the Vault folder."),
15677 SharePathError::IsVaultLocked => f.write_str("We do not support sharing a folder inside a locked Vault."),
15678 SharePathError::IsFamily => f.write_str("We do not support sharing the Family folder."),
15679 _ => write!(f, "{:?}", *self),
15680 }
15681 }
15682}
15683
15684#[derive(Debug, Clone, PartialEq, Eq)]
15685#[non_exhaustive] pub enum SharePathErrorBaseV2 {
15687 IsFile,
15689 InsideSharedFolder,
15691 ContainsSharedFolder,
15693 ContainsTeamFolder,
15695 IsAppFolder,
15697 InsideAppFolder,
15699 IsPublicFolder,
15701 InsidePublicFolder,
15703 AlreadyShared(SharedFolderMetadata),
15705 InvalidPath,
15707 IsOsxPackage,
15709 InsideOsxPackage,
15711 IsVault,
15713 IsVaultLocked,
15715 Other,
15718}
15719
15720impl<'de> ::serde::de::Deserialize<'de> for SharePathErrorBaseV2 {
15721 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15722 use serde::de::{self, MapAccess, Visitor};
15724 struct EnumVisitor;
15725 impl<'de> Visitor<'de> for EnumVisitor {
15726 type Value = SharePathErrorBaseV2;
15727 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15728 f.write_str("a SharePathErrorBaseV2 structure")
15729 }
15730 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15731 let tag: &str = match map.next_key()? {
15732 Some(".tag") => map.next_value()?,
15733 _ => return Err(de::Error::missing_field(".tag"))
15734 };
15735 let value = match tag {
15736 "is_file" => SharePathErrorBaseV2::IsFile,
15737 "inside_shared_folder" => SharePathErrorBaseV2::InsideSharedFolder,
15738 "contains_shared_folder" => SharePathErrorBaseV2::ContainsSharedFolder,
15739 "contains_team_folder" => SharePathErrorBaseV2::ContainsTeamFolder,
15740 "is_app_folder" => SharePathErrorBaseV2::IsAppFolder,
15741 "inside_app_folder" => SharePathErrorBaseV2::InsideAppFolder,
15742 "is_public_folder" => SharePathErrorBaseV2::IsPublicFolder,
15743 "inside_public_folder" => SharePathErrorBaseV2::InsidePublicFolder,
15744 "already_shared" => SharePathErrorBaseV2::AlreadyShared(SharedFolderMetadata::internal_deserialize(&mut map)?),
15745 "invalid_path" => SharePathErrorBaseV2::InvalidPath,
15746 "is_osx_package" => SharePathErrorBaseV2::IsOsxPackage,
15747 "inside_osx_package" => SharePathErrorBaseV2::InsideOsxPackage,
15748 "is_vault" => SharePathErrorBaseV2::IsVault,
15749 "is_vault_locked" => SharePathErrorBaseV2::IsVaultLocked,
15750 _ => SharePathErrorBaseV2::Other,
15751 };
15752 crate::eat_json_fields(&mut map)?;
15753 Ok(value)
15754 }
15755 }
15756 const VARIANTS: &[&str] = &["is_file",
15757 "inside_shared_folder",
15758 "contains_shared_folder",
15759 "contains_team_folder",
15760 "is_app_folder",
15761 "inside_app_folder",
15762 "is_public_folder",
15763 "inside_public_folder",
15764 "already_shared",
15765 "invalid_path",
15766 "is_osx_package",
15767 "inside_osx_package",
15768 "is_vault",
15769 "is_vault_locked",
15770 "other"];
15771 deserializer.deserialize_struct("SharePathErrorBaseV2", VARIANTS, EnumVisitor)
15772 }
15773}
15774
15775impl ::serde::ser::Serialize for SharePathErrorBaseV2 {
15776 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15777 use serde::ser::SerializeStruct;
15779 match self {
15780 SharePathErrorBaseV2::IsFile => {
15781 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15783 s.serialize_field(".tag", "is_file")?;
15784 s.end()
15785 }
15786 SharePathErrorBaseV2::InsideSharedFolder => {
15787 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15789 s.serialize_field(".tag", "inside_shared_folder")?;
15790 s.end()
15791 }
15792 SharePathErrorBaseV2::ContainsSharedFolder => {
15793 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15795 s.serialize_field(".tag", "contains_shared_folder")?;
15796 s.end()
15797 }
15798 SharePathErrorBaseV2::ContainsTeamFolder => {
15799 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15801 s.serialize_field(".tag", "contains_team_folder")?;
15802 s.end()
15803 }
15804 SharePathErrorBaseV2::IsAppFolder => {
15805 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15807 s.serialize_field(".tag", "is_app_folder")?;
15808 s.end()
15809 }
15810 SharePathErrorBaseV2::InsideAppFolder => {
15811 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15813 s.serialize_field(".tag", "inside_app_folder")?;
15814 s.end()
15815 }
15816 SharePathErrorBaseV2::IsPublicFolder => {
15817 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15819 s.serialize_field(".tag", "is_public_folder")?;
15820 s.end()
15821 }
15822 SharePathErrorBaseV2::InsidePublicFolder => {
15823 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15825 s.serialize_field(".tag", "inside_public_folder")?;
15826 s.end()
15827 }
15828 SharePathErrorBaseV2::AlreadyShared(x) => {
15829 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 19)?;
15831 s.serialize_field(".tag", "already_shared")?;
15832 x.internal_serialize::<S>(&mut s)?;
15833 s.end()
15834 }
15835 SharePathErrorBaseV2::InvalidPath => {
15836 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15838 s.serialize_field(".tag", "invalid_path")?;
15839 s.end()
15840 }
15841 SharePathErrorBaseV2::IsOsxPackage => {
15842 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15844 s.serialize_field(".tag", "is_osx_package")?;
15845 s.end()
15846 }
15847 SharePathErrorBaseV2::InsideOsxPackage => {
15848 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15850 s.serialize_field(".tag", "inside_osx_package")?;
15851 s.end()
15852 }
15853 SharePathErrorBaseV2::IsVault => {
15854 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15856 s.serialize_field(".tag", "is_vault")?;
15857 s.end()
15858 }
15859 SharePathErrorBaseV2::IsVaultLocked => {
15860 let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?;
15862 s.serialize_field(".tag", "is_vault_locked")?;
15863 s.end()
15864 }
15865 SharePathErrorBaseV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
15866 }
15867 }
15868}
15869
15870#[derive(Debug, Clone, PartialEq, Eq)]
15871#[non_exhaustive] pub enum SharePathErrorV2 {
15873 IsFile,
15875 InsideSharedFolder,
15877 ContainsSharedFolder,
15879 ContainsTeamFolder,
15881 IsAppFolder,
15883 InsideAppFolder,
15885 IsPublicFolder,
15887 InsidePublicFolder,
15889 AlreadyShared(SharedFolderMetadata),
15891 InvalidPath,
15893 IsOsxPackage,
15895 InsideOsxPackage,
15897 IsVault,
15899 IsVaultLocked,
15901 IsFamily,
15903 ContainsAppFolder,
15905 Other,
15908}
15909
15910impl<'de> ::serde::de::Deserialize<'de> for SharePathErrorV2 {
15911 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15912 use serde::de::{self, MapAccess, Visitor};
15914 struct EnumVisitor;
15915 impl<'de> Visitor<'de> for EnumVisitor {
15916 type Value = SharePathErrorV2;
15917 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15918 f.write_str("a SharePathErrorV2 structure")
15919 }
15920 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
15921 let tag: &str = match map.next_key()? {
15922 Some(".tag") => map.next_value()?,
15923 _ => return Err(de::Error::missing_field(".tag"))
15924 };
15925 let value = match tag {
15926 "is_file" => SharePathErrorV2::IsFile,
15927 "inside_shared_folder" => SharePathErrorV2::InsideSharedFolder,
15928 "contains_shared_folder" => SharePathErrorV2::ContainsSharedFolder,
15929 "contains_team_folder" => SharePathErrorV2::ContainsTeamFolder,
15930 "is_app_folder" => SharePathErrorV2::IsAppFolder,
15931 "inside_app_folder" => SharePathErrorV2::InsideAppFolder,
15932 "is_public_folder" => SharePathErrorV2::IsPublicFolder,
15933 "inside_public_folder" => SharePathErrorV2::InsidePublicFolder,
15934 "already_shared" => SharePathErrorV2::AlreadyShared(SharedFolderMetadata::internal_deserialize(&mut map)?),
15935 "invalid_path" => SharePathErrorV2::InvalidPath,
15936 "is_osx_package" => SharePathErrorV2::IsOsxPackage,
15937 "inside_osx_package" => SharePathErrorV2::InsideOsxPackage,
15938 "is_vault" => SharePathErrorV2::IsVault,
15939 "is_vault_locked" => SharePathErrorV2::IsVaultLocked,
15940 "is_family" => SharePathErrorV2::IsFamily,
15941 "contains_app_folder" => SharePathErrorV2::ContainsAppFolder,
15942 _ => SharePathErrorV2::Other,
15943 };
15944 crate::eat_json_fields(&mut map)?;
15945 Ok(value)
15946 }
15947 }
15948 const VARIANTS: &[&str] = &["is_file",
15949 "inside_shared_folder",
15950 "contains_shared_folder",
15951 "contains_team_folder",
15952 "is_app_folder",
15953 "inside_app_folder",
15954 "is_public_folder",
15955 "inside_public_folder",
15956 "already_shared",
15957 "invalid_path",
15958 "is_osx_package",
15959 "inside_osx_package",
15960 "is_vault",
15961 "is_vault_locked",
15962 "other",
15963 "is_family",
15964 "contains_app_folder"];
15965 deserializer.deserialize_struct("SharePathErrorV2", VARIANTS, EnumVisitor)
15966 }
15967}
15968
15969impl ::serde::ser::Serialize for SharePathErrorV2 {
15970 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
15971 use serde::ser::SerializeStruct;
15973 match self {
15974 SharePathErrorV2::IsFile => {
15975 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15977 s.serialize_field(".tag", "is_file")?;
15978 s.end()
15979 }
15980 SharePathErrorV2::InsideSharedFolder => {
15981 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15983 s.serialize_field(".tag", "inside_shared_folder")?;
15984 s.end()
15985 }
15986 SharePathErrorV2::ContainsSharedFolder => {
15987 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15989 s.serialize_field(".tag", "contains_shared_folder")?;
15990 s.end()
15991 }
15992 SharePathErrorV2::ContainsTeamFolder => {
15993 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
15995 s.serialize_field(".tag", "contains_team_folder")?;
15996 s.end()
15997 }
15998 SharePathErrorV2::IsAppFolder => {
15999 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16001 s.serialize_field(".tag", "is_app_folder")?;
16002 s.end()
16003 }
16004 SharePathErrorV2::InsideAppFolder => {
16005 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16007 s.serialize_field(".tag", "inside_app_folder")?;
16008 s.end()
16009 }
16010 SharePathErrorV2::IsPublicFolder => {
16011 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16013 s.serialize_field(".tag", "is_public_folder")?;
16014 s.end()
16015 }
16016 SharePathErrorV2::InsidePublicFolder => {
16017 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16019 s.serialize_field(".tag", "inside_public_folder")?;
16020 s.end()
16021 }
16022 SharePathErrorV2::AlreadyShared(x) => {
16023 let mut s = serializer.serialize_struct("SharePathErrorV2", 19)?;
16025 s.serialize_field(".tag", "already_shared")?;
16026 x.internal_serialize::<S>(&mut s)?;
16027 s.end()
16028 }
16029 SharePathErrorV2::InvalidPath => {
16030 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16032 s.serialize_field(".tag", "invalid_path")?;
16033 s.end()
16034 }
16035 SharePathErrorV2::IsOsxPackage => {
16036 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16038 s.serialize_field(".tag", "is_osx_package")?;
16039 s.end()
16040 }
16041 SharePathErrorV2::InsideOsxPackage => {
16042 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16044 s.serialize_field(".tag", "inside_osx_package")?;
16045 s.end()
16046 }
16047 SharePathErrorV2::IsVault => {
16048 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16050 s.serialize_field(".tag", "is_vault")?;
16051 s.end()
16052 }
16053 SharePathErrorV2::IsVaultLocked => {
16054 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16056 s.serialize_field(".tag", "is_vault_locked")?;
16057 s.end()
16058 }
16059 SharePathErrorV2::IsFamily => {
16060 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16062 s.serialize_field(".tag", "is_family")?;
16063 s.end()
16064 }
16065 SharePathErrorV2::ContainsAppFolder => {
16066 let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?;
16068 s.serialize_field(".tag", "contains_app_folder")?;
16069 s.end()
16070 }
16071 SharePathErrorV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
16072 }
16073 }
16074}
16075
16076impl From<SharePathErrorBaseV2> for SharePathErrorV2 {
16078 fn from(parent: SharePathErrorBaseV2) -> Self {
16079 match parent {
16080 SharePathErrorBaseV2::IsFile => SharePathErrorV2::IsFile,
16081 SharePathErrorBaseV2::InsideSharedFolder => SharePathErrorV2::InsideSharedFolder,
16082 SharePathErrorBaseV2::ContainsSharedFolder => SharePathErrorV2::ContainsSharedFolder,
16083 SharePathErrorBaseV2::ContainsTeamFolder => SharePathErrorV2::ContainsTeamFolder,
16084 SharePathErrorBaseV2::IsAppFolder => SharePathErrorV2::IsAppFolder,
16085 SharePathErrorBaseV2::InsideAppFolder => SharePathErrorV2::InsideAppFolder,
16086 SharePathErrorBaseV2::IsPublicFolder => SharePathErrorV2::IsPublicFolder,
16087 SharePathErrorBaseV2::InsidePublicFolder => SharePathErrorV2::InsidePublicFolder,
16088 SharePathErrorBaseV2::AlreadyShared(x) => SharePathErrorV2::AlreadyShared(x),
16089 SharePathErrorBaseV2::InvalidPath => SharePathErrorV2::InvalidPath,
16090 SharePathErrorBaseV2::IsOsxPackage => SharePathErrorV2::IsOsxPackage,
16091 SharePathErrorBaseV2::InsideOsxPackage => SharePathErrorV2::InsideOsxPackage,
16092 SharePathErrorBaseV2::IsVault => SharePathErrorV2::IsVault,
16093 SharePathErrorBaseV2::IsVaultLocked => SharePathErrorV2::IsVaultLocked,
16094 SharePathErrorBaseV2::Other => SharePathErrorV2::Other,
16095 }
16096 }
16097}
16098#[derive(Debug, Clone, PartialEq, Eq)]
16100#[non_exhaustive] pub struct SharedContentLinkMetadata {
16102 pub audience_options: Vec<LinkAudience>,
16107 pub current_audience: LinkAudience,
16109 pub link_permissions: Vec<LinkPermission>,
16111 pub password_protected: bool,
16113 pub url: String,
16115 pub access_level: Option<AccessLevel>,
16117 pub audience_restricting_shared_folder: Option<AudienceRestrictingSharedFolder>,
16119 pub expiry: Option<crate::types::common::DropboxTimestamp>,
16122 pub audience_exceptions: Option<AudienceExceptions>,
16126}
16127
16128impl SharedContentLinkMetadata {
16129 pub fn new(
16130 audience_options: Vec<LinkAudience>,
16131 current_audience: LinkAudience,
16132 link_permissions: Vec<LinkPermission>,
16133 password_protected: bool,
16134 url: String,
16135 ) -> Self {
16136 SharedContentLinkMetadata {
16137 audience_options,
16138 current_audience,
16139 link_permissions,
16140 password_protected,
16141 url,
16142 access_level: None,
16143 audience_restricting_shared_folder: None,
16144 expiry: None,
16145 audience_exceptions: None,
16146 }
16147 }
16148
16149 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
16150 self.access_level = Some(value);
16151 self
16152 }
16153
16154 pub fn with_audience_restricting_shared_folder(
16155 mut self,
16156 value: AudienceRestrictingSharedFolder,
16157 ) -> Self {
16158 self.audience_restricting_shared_folder = Some(value);
16159 self
16160 }
16161
16162 pub fn with_expiry(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
16163 self.expiry = Some(value);
16164 self
16165 }
16166
16167 pub fn with_audience_exceptions(mut self, value: AudienceExceptions) -> Self {
16168 self.audience_exceptions = Some(value);
16169 self
16170 }
16171}
16172
16173const SHARED_CONTENT_LINK_METADATA_FIELDS: &[&str] = &["audience_options",
16174 "current_audience",
16175 "link_permissions",
16176 "password_protected",
16177 "url",
16178 "access_level",
16179 "audience_restricting_shared_folder",
16180 "expiry",
16181 "audience_exceptions"];
16182impl SharedContentLinkMetadata {
16183 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
16184 map: V,
16185 ) -> Result<SharedContentLinkMetadata, V::Error> {
16186 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
16187 }
16188
16189 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
16190 mut map: V,
16191 optional: bool,
16192 ) -> Result<Option<SharedContentLinkMetadata>, V::Error> {
16193 let mut field_audience_options = None;
16194 let mut field_current_audience = None;
16195 let mut field_link_permissions = None;
16196 let mut field_password_protected = None;
16197 let mut field_url = None;
16198 let mut field_access_level = None;
16199 let mut field_audience_restricting_shared_folder = None;
16200 let mut field_expiry = None;
16201 let mut field_audience_exceptions = None;
16202 let mut nothing = true;
16203 while let Some(key) = map.next_key::<&str>()? {
16204 nothing = false;
16205 match key {
16206 "audience_options" => {
16207 if field_audience_options.is_some() {
16208 return Err(::serde::de::Error::duplicate_field("audience_options"));
16209 }
16210 field_audience_options = Some(map.next_value()?);
16211 }
16212 "current_audience" => {
16213 if field_current_audience.is_some() {
16214 return Err(::serde::de::Error::duplicate_field("current_audience"));
16215 }
16216 field_current_audience = Some(map.next_value()?);
16217 }
16218 "link_permissions" => {
16219 if field_link_permissions.is_some() {
16220 return Err(::serde::de::Error::duplicate_field("link_permissions"));
16221 }
16222 field_link_permissions = Some(map.next_value()?);
16223 }
16224 "password_protected" => {
16225 if field_password_protected.is_some() {
16226 return Err(::serde::de::Error::duplicate_field("password_protected"));
16227 }
16228 field_password_protected = Some(map.next_value()?);
16229 }
16230 "url" => {
16231 if field_url.is_some() {
16232 return Err(::serde::de::Error::duplicate_field("url"));
16233 }
16234 field_url = Some(map.next_value()?);
16235 }
16236 "access_level" => {
16237 if field_access_level.is_some() {
16238 return Err(::serde::de::Error::duplicate_field("access_level"));
16239 }
16240 field_access_level = Some(map.next_value()?);
16241 }
16242 "audience_restricting_shared_folder" => {
16243 if field_audience_restricting_shared_folder.is_some() {
16244 return Err(::serde::de::Error::duplicate_field("audience_restricting_shared_folder"));
16245 }
16246 field_audience_restricting_shared_folder = Some(map.next_value()?);
16247 }
16248 "expiry" => {
16249 if field_expiry.is_some() {
16250 return Err(::serde::de::Error::duplicate_field("expiry"));
16251 }
16252 field_expiry = Some(map.next_value()?);
16253 }
16254 "audience_exceptions" => {
16255 if field_audience_exceptions.is_some() {
16256 return Err(::serde::de::Error::duplicate_field("audience_exceptions"));
16257 }
16258 field_audience_exceptions = Some(map.next_value()?);
16259 }
16260 _ => {
16261 map.next_value::<::serde_json::Value>()?;
16263 }
16264 }
16265 }
16266 if optional && nothing {
16267 return Ok(None);
16268 }
16269 let result = SharedContentLinkMetadata {
16270 audience_options: field_audience_options.ok_or_else(|| ::serde::de::Error::missing_field("audience_options"))?,
16271 current_audience: field_current_audience.ok_or_else(|| ::serde::de::Error::missing_field("current_audience"))?,
16272 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
16273 password_protected: field_password_protected.ok_or_else(|| ::serde::de::Error::missing_field("password_protected"))?,
16274 url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?,
16275 access_level: field_access_level.and_then(Option::flatten),
16276 audience_restricting_shared_folder: field_audience_restricting_shared_folder.and_then(Option::flatten),
16277 expiry: field_expiry.and_then(Option::flatten),
16278 audience_exceptions: field_audience_exceptions.and_then(Option::flatten),
16279 };
16280 Ok(Some(result))
16281 }
16282
16283 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
16284 &self,
16285 s: &mut S::SerializeStruct,
16286 ) -> Result<(), S::Error> {
16287 use serde::ser::SerializeStruct;
16288 s.serialize_field("audience_options", &self.audience_options)?;
16289 s.serialize_field("current_audience", &self.current_audience)?;
16290 s.serialize_field("link_permissions", &self.link_permissions)?;
16291 s.serialize_field("password_protected", &self.password_protected)?;
16292 s.serialize_field("url", &self.url)?;
16293 if let Some(val) = &self.access_level {
16294 s.serialize_field("access_level", val)?;
16295 }
16296 if let Some(val) = &self.audience_restricting_shared_folder {
16297 s.serialize_field("audience_restricting_shared_folder", val)?;
16298 }
16299 if let Some(val) = &self.expiry {
16300 s.serialize_field("expiry", val)?;
16301 }
16302 if let Some(val) = &self.audience_exceptions {
16303 s.serialize_field("audience_exceptions", val)?;
16304 }
16305 Ok(())
16306 }
16307}
16308
16309impl<'de> ::serde::de::Deserialize<'de> for SharedContentLinkMetadata {
16310 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16311 use serde::de::{MapAccess, Visitor};
16313 struct StructVisitor;
16314 impl<'de> Visitor<'de> for StructVisitor {
16315 type Value = SharedContentLinkMetadata;
16316 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16317 f.write_str("a SharedContentLinkMetadata struct")
16318 }
16319 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
16320 SharedContentLinkMetadata::internal_deserialize(map)
16321 }
16322 }
16323 deserializer.deserialize_struct("SharedContentLinkMetadata", SHARED_CONTENT_LINK_METADATA_FIELDS, StructVisitor)
16324 }
16325}
16326
16327impl ::serde::ser::Serialize for SharedContentLinkMetadata {
16328 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16329 use serde::ser::SerializeStruct;
16331 let mut s = serializer.serialize_struct("SharedContentLinkMetadata", 9)?;
16332 self.internal_serialize::<S>(&mut s)?;
16333 s.end()
16334 }
16335}
16336
16337impl From<SharedContentLinkMetadata> for SharedContentLinkMetadataBase {
16339 fn from(subtype: SharedContentLinkMetadata) -> Self {
16340 Self {
16341 audience_options: subtype.audience_options,
16342 current_audience: subtype.current_audience,
16343 link_permissions: subtype.link_permissions,
16344 password_protected: subtype.password_protected,
16345 access_level: subtype.access_level,
16346 audience_restricting_shared_folder: subtype.audience_restricting_shared_folder,
16347 expiry: subtype.expiry,
16348 }
16349 }
16350}
16351#[derive(Debug, Clone, PartialEq, Eq)]
16352#[non_exhaustive] pub struct SharedContentLinkMetadataBase {
16354 pub audience_options: Vec<LinkAudience>,
16359 pub current_audience: LinkAudience,
16361 pub link_permissions: Vec<LinkPermission>,
16363 pub password_protected: bool,
16365 pub access_level: Option<AccessLevel>,
16367 pub audience_restricting_shared_folder: Option<AudienceRestrictingSharedFolder>,
16369 pub expiry: Option<crate::types::common::DropboxTimestamp>,
16372}
16373
16374impl SharedContentLinkMetadataBase {
16375 pub fn new(
16376 audience_options: Vec<LinkAudience>,
16377 current_audience: LinkAudience,
16378 link_permissions: Vec<LinkPermission>,
16379 password_protected: bool,
16380 ) -> Self {
16381 SharedContentLinkMetadataBase {
16382 audience_options,
16383 current_audience,
16384 link_permissions,
16385 password_protected,
16386 access_level: None,
16387 audience_restricting_shared_folder: None,
16388 expiry: None,
16389 }
16390 }
16391
16392 pub fn with_access_level(mut self, value: AccessLevel) -> Self {
16393 self.access_level = Some(value);
16394 self
16395 }
16396
16397 pub fn with_audience_restricting_shared_folder(
16398 mut self,
16399 value: AudienceRestrictingSharedFolder,
16400 ) -> Self {
16401 self.audience_restricting_shared_folder = Some(value);
16402 self
16403 }
16404
16405 pub fn with_expiry(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
16406 self.expiry = Some(value);
16407 self
16408 }
16409}
16410
16411const SHARED_CONTENT_LINK_METADATA_BASE_FIELDS: &[&str] = &["audience_options",
16412 "current_audience",
16413 "link_permissions",
16414 "password_protected",
16415 "access_level",
16416 "audience_restricting_shared_folder",
16417 "expiry"];
16418impl SharedContentLinkMetadataBase {
16419 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
16420 map: V,
16421 ) -> Result<SharedContentLinkMetadataBase, V::Error> {
16422 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
16423 }
16424
16425 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
16426 mut map: V,
16427 optional: bool,
16428 ) -> Result<Option<SharedContentLinkMetadataBase>, V::Error> {
16429 let mut field_audience_options = None;
16430 let mut field_current_audience = None;
16431 let mut field_link_permissions = None;
16432 let mut field_password_protected = None;
16433 let mut field_access_level = None;
16434 let mut field_audience_restricting_shared_folder = None;
16435 let mut field_expiry = None;
16436 let mut nothing = true;
16437 while let Some(key) = map.next_key::<&str>()? {
16438 nothing = false;
16439 match key {
16440 "audience_options" => {
16441 if field_audience_options.is_some() {
16442 return Err(::serde::de::Error::duplicate_field("audience_options"));
16443 }
16444 field_audience_options = Some(map.next_value()?);
16445 }
16446 "current_audience" => {
16447 if field_current_audience.is_some() {
16448 return Err(::serde::de::Error::duplicate_field("current_audience"));
16449 }
16450 field_current_audience = Some(map.next_value()?);
16451 }
16452 "link_permissions" => {
16453 if field_link_permissions.is_some() {
16454 return Err(::serde::de::Error::duplicate_field("link_permissions"));
16455 }
16456 field_link_permissions = Some(map.next_value()?);
16457 }
16458 "password_protected" => {
16459 if field_password_protected.is_some() {
16460 return Err(::serde::de::Error::duplicate_field("password_protected"));
16461 }
16462 field_password_protected = Some(map.next_value()?);
16463 }
16464 "access_level" => {
16465 if field_access_level.is_some() {
16466 return Err(::serde::de::Error::duplicate_field("access_level"));
16467 }
16468 field_access_level = Some(map.next_value()?);
16469 }
16470 "audience_restricting_shared_folder" => {
16471 if field_audience_restricting_shared_folder.is_some() {
16472 return Err(::serde::de::Error::duplicate_field("audience_restricting_shared_folder"));
16473 }
16474 field_audience_restricting_shared_folder = Some(map.next_value()?);
16475 }
16476 "expiry" => {
16477 if field_expiry.is_some() {
16478 return Err(::serde::de::Error::duplicate_field("expiry"));
16479 }
16480 field_expiry = Some(map.next_value()?);
16481 }
16482 _ => {
16483 map.next_value::<::serde_json::Value>()?;
16485 }
16486 }
16487 }
16488 if optional && nothing {
16489 return Ok(None);
16490 }
16491 let result = SharedContentLinkMetadataBase {
16492 audience_options: field_audience_options.ok_or_else(|| ::serde::de::Error::missing_field("audience_options"))?,
16493 current_audience: field_current_audience.ok_or_else(|| ::serde::de::Error::missing_field("current_audience"))?,
16494 link_permissions: field_link_permissions.ok_or_else(|| ::serde::de::Error::missing_field("link_permissions"))?,
16495 password_protected: field_password_protected.ok_or_else(|| ::serde::de::Error::missing_field("password_protected"))?,
16496 access_level: field_access_level.and_then(Option::flatten),
16497 audience_restricting_shared_folder: field_audience_restricting_shared_folder.and_then(Option::flatten),
16498 expiry: field_expiry.and_then(Option::flatten),
16499 };
16500 Ok(Some(result))
16501 }
16502
16503 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
16504 &self,
16505 s: &mut S::SerializeStruct,
16506 ) -> Result<(), S::Error> {
16507 use serde::ser::SerializeStruct;
16508 s.serialize_field("audience_options", &self.audience_options)?;
16509 s.serialize_field("current_audience", &self.current_audience)?;
16510 s.serialize_field("link_permissions", &self.link_permissions)?;
16511 s.serialize_field("password_protected", &self.password_protected)?;
16512 if let Some(val) = &self.access_level {
16513 s.serialize_field("access_level", val)?;
16514 }
16515 if let Some(val) = &self.audience_restricting_shared_folder {
16516 s.serialize_field("audience_restricting_shared_folder", val)?;
16517 }
16518 if let Some(val) = &self.expiry {
16519 s.serialize_field("expiry", val)?;
16520 }
16521 Ok(())
16522 }
16523}
16524
16525impl<'de> ::serde::de::Deserialize<'de> for SharedContentLinkMetadataBase {
16526 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16527 use serde::de::{MapAccess, Visitor};
16529 struct StructVisitor;
16530 impl<'de> Visitor<'de> for StructVisitor {
16531 type Value = SharedContentLinkMetadataBase;
16532 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16533 f.write_str("a SharedContentLinkMetadataBase struct")
16534 }
16535 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
16536 SharedContentLinkMetadataBase::internal_deserialize(map)
16537 }
16538 }
16539 deserializer.deserialize_struct("SharedContentLinkMetadataBase", SHARED_CONTENT_LINK_METADATA_BASE_FIELDS, StructVisitor)
16540 }
16541}
16542
16543impl ::serde::ser::Serialize for SharedContentLinkMetadataBase {
16544 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16545 use serde::ser::SerializeStruct;
16547 let mut s = serializer.serialize_struct("SharedContentLinkMetadataBase", 7)?;
16548 self.internal_serialize::<S>(&mut s)?;
16549 s.end()
16550 }
16551}
16552
16553#[derive(Debug, Clone, PartialEq, Eq)]
16558#[non_exhaustive] pub struct SharedFileMembers {
16560 pub users: Vec<UserFileMembershipInfo>,
16562 pub groups: Vec<GroupMembershipInfo>,
16564 pub invitees: Vec<InviteeMembershipInfo>,
16566 pub cursor: Option<String>,
16570}
16571
16572impl SharedFileMembers {
16573 pub fn new(
16574 users: Vec<UserFileMembershipInfo>,
16575 groups: Vec<GroupMembershipInfo>,
16576 invitees: Vec<InviteeMembershipInfo>,
16577 ) -> Self {
16578 SharedFileMembers {
16579 users,
16580 groups,
16581 invitees,
16582 cursor: None,
16583 }
16584 }
16585
16586 pub fn with_cursor(mut self, value: String) -> Self {
16587 self.cursor = Some(value);
16588 self
16589 }
16590}
16591
16592const SHARED_FILE_MEMBERS_FIELDS: &[&str] = &["users",
16593 "groups",
16594 "invitees",
16595 "cursor"];
16596impl SharedFileMembers {
16597 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
16598 map: V,
16599 ) -> Result<SharedFileMembers, V::Error> {
16600 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
16601 }
16602
16603 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
16604 mut map: V,
16605 optional: bool,
16606 ) -> Result<Option<SharedFileMembers>, V::Error> {
16607 let mut field_users = None;
16608 let mut field_groups = None;
16609 let mut field_invitees = None;
16610 let mut field_cursor = None;
16611 let mut nothing = true;
16612 while let Some(key) = map.next_key::<&str>()? {
16613 nothing = false;
16614 match key {
16615 "users" => {
16616 if field_users.is_some() {
16617 return Err(::serde::de::Error::duplicate_field("users"));
16618 }
16619 field_users = Some(map.next_value()?);
16620 }
16621 "groups" => {
16622 if field_groups.is_some() {
16623 return Err(::serde::de::Error::duplicate_field("groups"));
16624 }
16625 field_groups = Some(map.next_value()?);
16626 }
16627 "invitees" => {
16628 if field_invitees.is_some() {
16629 return Err(::serde::de::Error::duplicate_field("invitees"));
16630 }
16631 field_invitees = Some(map.next_value()?);
16632 }
16633 "cursor" => {
16634 if field_cursor.is_some() {
16635 return Err(::serde::de::Error::duplicate_field("cursor"));
16636 }
16637 field_cursor = Some(map.next_value()?);
16638 }
16639 _ => {
16640 map.next_value::<::serde_json::Value>()?;
16642 }
16643 }
16644 }
16645 if optional && nothing {
16646 return Ok(None);
16647 }
16648 let result = SharedFileMembers {
16649 users: field_users.ok_or_else(|| ::serde::de::Error::missing_field("users"))?,
16650 groups: field_groups.ok_or_else(|| ::serde::de::Error::missing_field("groups"))?,
16651 invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?,
16652 cursor: field_cursor.and_then(Option::flatten),
16653 };
16654 Ok(Some(result))
16655 }
16656
16657 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
16658 &self,
16659 s: &mut S::SerializeStruct,
16660 ) -> Result<(), S::Error> {
16661 use serde::ser::SerializeStruct;
16662 s.serialize_field("users", &self.users)?;
16663 s.serialize_field("groups", &self.groups)?;
16664 s.serialize_field("invitees", &self.invitees)?;
16665 if let Some(val) = &self.cursor {
16666 s.serialize_field("cursor", val)?;
16667 }
16668 Ok(())
16669 }
16670}
16671
16672impl<'de> ::serde::de::Deserialize<'de> for SharedFileMembers {
16673 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
16674 use serde::de::{MapAccess, Visitor};
16676 struct StructVisitor;
16677 impl<'de> Visitor<'de> for StructVisitor {
16678 type Value = SharedFileMembers;
16679 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16680 f.write_str("a SharedFileMembers struct")
16681 }
16682 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
16683 SharedFileMembers::internal_deserialize(map)
16684 }
16685 }
16686 deserializer.deserialize_struct("SharedFileMembers", SHARED_FILE_MEMBERS_FIELDS, StructVisitor)
16687 }
16688}
16689
16690impl ::serde::ser::Serialize for SharedFileMembers {
16691 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16692 use serde::ser::SerializeStruct;
16694 let mut s = serializer.serialize_struct("SharedFileMembers", 4)?;
16695 self.internal_serialize::<S>(&mut s)?;
16696 s.end()
16697 }
16698}
16699
16700#[derive(Debug, Clone, PartialEq, Eq)]
16702#[non_exhaustive] pub struct SharedFileMetadata {
16704 pub id: crate::types::files::FileId,
16706 pub name: String,
16708 pub policy: FolderPolicy,
16710 pub preview_url: String,
16712 pub access_type: Option<AccessLevel>,
16714 pub expected_link_metadata: Option<ExpectedSharedContentLinkMetadata>,
16717 pub link_metadata: Option<SharedContentLinkMetadata>,
16720 pub owner_display_names: Option<Vec<String>>,
16724 pub owner_team: Option<crate::types::users::Team>,
16726 pub parent_shared_folder_id: Option<crate::types::common::SharedFolderId>,
16729 pub path_display: Option<String>,
16733 pub path_lower: Option<String>,
16735 pub permissions: Option<Vec<FilePermission>>,
16739 pub time_invited: Option<crate::types::common::DropboxTimestamp>,
16743}
16744
16745impl SharedFileMetadata {
16746 pub fn new(
16747 id: crate::types::files::FileId,
16748 name: String,
16749 policy: FolderPolicy,
16750 preview_url: String,
16751 ) -> Self {
16752 SharedFileMetadata {
16753 id,
16754 name,
16755 policy,
16756 preview_url,
16757 access_type: None,
16758 expected_link_metadata: None,
16759 link_metadata: None,
16760 owner_display_names: None,
16761 owner_team: None,
16762 parent_shared_folder_id: None,
16763 path_display: None,
16764 path_lower: None,
16765 permissions: None,
16766 time_invited: None,
16767 }
16768 }
16769
16770 pub fn with_access_type(mut self, value: AccessLevel) -> Self {
16771 self.access_type = Some(value);
16772 self
16773 }
16774
16775 pub fn with_expected_link_metadata(
16776 mut self,
16777 value: ExpectedSharedContentLinkMetadata,
16778 ) -> Self {
16779 self.expected_link_metadata = Some(value);
16780 self
16781 }
16782
16783 pub fn with_link_metadata(mut self, value: SharedContentLinkMetadata) -> Self {
16784 self.link_metadata = Some(value);
16785 self
16786 }
16787
16788 pub fn with_owner_display_names(mut self, value: Vec<String>) -> Self {
16789 self.owner_display_names = Some(value);
16790 self
16791 }
16792
16793 pub fn with_owner_team(mut self, value: crate::types::users::Team) -> Self {
16794 self.owner_team = Some(value);
16795 self
16796 }
16797
16798 pub fn with_parent_shared_folder_id(
16799 mut self,
16800 value: crate::types::common::SharedFolderId,
16801 ) -> Self {
16802 self.parent_shared_folder_id = Some(value);
16803 self
16804 }
16805
16806 pub fn with_path_display(mut self, value: String) -> Self {
16807 self.path_display = Some(value);
16808 self
16809 }
16810
16811 pub fn with_path_lower(mut self, value: String) -> Self {
16812 self.path_lower = Some(value);
16813 self
16814 }
16815
16816 pub fn with_permissions(mut self, value: Vec<FilePermission>) -> Self {
16817 self.permissions = Some(value);
16818 self
16819 }
16820
16821 pub fn with_time_invited(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
16822 self.time_invited = Some(value);
16823 self
16824 }
16825}
16826
16827const SHARED_FILE_METADATA_FIELDS: &[&str] = &["id",
16828 "name",
16829 "policy",
16830 "preview_url",
16831 "access_type",
16832 "expected_link_metadata",
16833 "link_metadata",
16834 "owner_display_names",
16835 "owner_team",
16836 "parent_shared_folder_id",
16837 "path_display",
16838 "path_lower",
16839 "permissions",
16840 "time_invited"];
16841impl SharedFileMetadata {
16842 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
16843 map: V,
16844 ) -> Result<SharedFileMetadata, V::Error> {
16845 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
16846 }
16847
16848 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
16849 mut map: V,
16850 optional: bool,
16851 ) -> Result<Option<SharedFileMetadata>, V::Error> {
16852 let mut field_id = None;
16853 let mut field_name = None;
16854 let mut field_policy = None;
16855 let mut field_preview_url = None;
16856 let mut field_access_type = None;
16857 let mut field_expected_link_metadata = None;
16858 let mut field_link_metadata = None;
16859 let mut field_owner_display_names = None;
16860 let mut field_owner_team = None;
16861 let mut field_parent_shared_folder_id = None;
16862 let mut field_path_display = None;
16863 let mut field_path_lower = None;
16864 let mut field_permissions = None;
16865 let mut field_time_invited = None;
16866 let mut nothing = true;
16867 while let Some(key) = map.next_key::<&str>()? {
16868 nothing = false;
16869 match key {
16870 "id" => {
16871 if field_id.is_some() {
16872 return Err(::serde::de::Error::duplicate_field("id"));
16873 }
16874 field_id = Some(map.next_value()?);
16875 }
16876 "name" => {
16877 if field_name.is_some() {
16878 return Err(::serde::de::Error::duplicate_field("name"));
16879 }
16880 field_name = Some(map.next_value()?);
16881 }
16882 "policy" => {
16883 if field_policy.is_some() {
16884 return Err(::serde::de::Error::duplicate_field("policy"));
16885 }
16886 field_policy = Some(map.next_value()?);
16887 }
16888 "preview_url" => {
16889 if field_preview_url.is_some() {
16890 return Err(::serde::de::Error::duplicate_field("preview_url"));
16891 }
16892 field_preview_url = Some(map.next_value()?);
16893 }
16894 "access_type" => {
16895 if field_access_type.is_some() {
16896 return Err(::serde::de::Error::duplicate_field("access_type"));
16897 }
16898 field_access_type = Some(map.next_value()?);
16899 }
16900 "expected_link_metadata" => {
16901 if field_expected_link_metadata.is_some() {
16902 return Err(::serde::de::Error::duplicate_field("expected_link_metadata"));
16903 }
16904 field_expected_link_metadata = Some(map.next_value()?);
16905 }
16906 "link_metadata" => {
16907 if field_link_metadata.is_some() {
16908 return Err(::serde::de::Error::duplicate_field("link_metadata"));
16909 }
16910 field_link_metadata = Some(map.next_value()?);
16911 }
16912 "owner_display_names" => {
16913 if field_owner_display_names.is_some() {
16914 return Err(::serde::de::Error::duplicate_field("owner_display_names"));
16915 }
16916 field_owner_display_names = Some(map.next_value()?);
16917 }
16918 "owner_team" => {
16919 if field_owner_team.is_some() {
16920 return Err(::serde::de::Error::duplicate_field("owner_team"));
16921 }
16922 field_owner_team = Some(map.next_value()?);
16923 }
16924 "parent_shared_folder_id" => {
16925 if field_parent_shared_folder_id.is_some() {
16926 return Err(::serde::de::Error::duplicate_field("parent_shared_folder_id"));
16927 }
16928 field_parent_shared_folder_id = Some(map.next_value()?);
16929 }
16930 "path_display" => {
16931 if field_path_display.is_some() {
16932 return Err(::serde::de::Error::duplicate_field("path_display"));
16933 }
16934 field_path_display = Some(map.next_value()?);
16935 }
16936 "path_lower" => {
16937 if field_path_lower.is_some() {
16938 return Err(::serde::de::Error::duplicate_field("path_lower"));
16939 }
16940 field_path_lower = Some(map.next_value()?);
16941 }
16942 "permissions" => {
16943 if field_permissions.is_some() {
16944 return Err(::serde::de::Error::duplicate_field("permissions"));
16945 }
16946 field_permissions = Some(map.next_value()?);
16947 }
16948 "time_invited" => {
16949 if field_time_invited.is_some() {
16950 return Err(::serde::de::Error::duplicate_field("time_invited"));
16951 }
16952 field_time_invited = Some(map.next_value()?);
16953 }
16954 _ => {
16955 map.next_value::<::serde_json::Value>()?;
16957 }
16958 }
16959 }
16960 if optional && nothing {
16961 return Ok(None);
16962 }
16963 let result = SharedFileMetadata {
16964 id: field_id.ok_or_else(|| ::serde::de::Error::missing_field("id"))?,
16965 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
16966 policy: field_policy.ok_or_else(|| ::serde::de::Error::missing_field("policy"))?,
16967 preview_url: field_preview_url.ok_or_else(|| ::serde::de::Error::missing_field("preview_url"))?,
16968 access_type: field_access_type.and_then(Option::flatten),
16969 expected_link_metadata: field_expected_link_metadata.and_then(Option::flatten),
16970 link_metadata: field_link_metadata.and_then(Option::flatten),
16971 owner_display_names: field_owner_display_names.and_then(Option::flatten),
16972 owner_team: field_owner_team.and_then(Option::flatten),
16973 parent_shared_folder_id: field_parent_shared_folder_id.and_then(Option::flatten),
16974 path_display: field_path_display.and_then(Option::flatten),
16975 path_lower: field_path_lower.and_then(Option::flatten),
16976 permissions: field_permissions.and_then(Option::flatten),
16977 time_invited: field_time_invited.and_then(Option::flatten),
16978 };
16979 Ok(Some(result))
16980 }
16981
16982 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
16983 &self,
16984 s: &mut S::SerializeStruct,
16985 ) -> Result<(), S::Error> {
16986 use serde::ser::SerializeStruct;
16987 s.serialize_field("id", &self.id)?;
16988 s.serialize_field("name", &self.name)?;
16989 s.serialize_field("policy", &self.policy)?;
16990 s.serialize_field("preview_url", &self.preview_url)?;
16991 if let Some(val) = &self.access_type {
16992 s.serialize_field("access_type", val)?;
16993 }
16994 if let Some(val) = &self.expected_link_metadata {
16995 s.serialize_field("expected_link_metadata", val)?;
16996 }
16997 if let Some(val) = &self.link_metadata {
16998 s.serialize_field("link_metadata", val)?;
16999 }
17000 if let Some(val) = &self.owner_display_names {
17001 s.serialize_field("owner_display_names", val)?;
17002 }
17003 if let Some(val) = &self.owner_team {
17004 s.serialize_field("owner_team", val)?;
17005 }
17006 if let Some(val) = &self.parent_shared_folder_id {
17007 s.serialize_field("parent_shared_folder_id", val)?;
17008 }
17009 if let Some(val) = &self.path_display {
17010 s.serialize_field("path_display", val)?;
17011 }
17012 if let Some(val) = &self.path_lower {
17013 s.serialize_field("path_lower", val)?;
17014 }
17015 if let Some(val) = &self.permissions {
17016 s.serialize_field("permissions", val)?;
17017 }
17018 if let Some(val) = &self.time_invited {
17019 s.serialize_field("time_invited", val)?;
17020 }
17021 Ok(())
17022 }
17023}
17024
17025impl<'de> ::serde::de::Deserialize<'de> for SharedFileMetadata {
17026 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17027 use serde::de::{MapAccess, Visitor};
17029 struct StructVisitor;
17030 impl<'de> Visitor<'de> for StructVisitor {
17031 type Value = SharedFileMetadata;
17032 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17033 f.write_str("a SharedFileMetadata struct")
17034 }
17035 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
17036 SharedFileMetadata::internal_deserialize(map)
17037 }
17038 }
17039 deserializer.deserialize_struct("SharedFileMetadata", SHARED_FILE_METADATA_FIELDS, StructVisitor)
17040 }
17041}
17042
17043impl ::serde::ser::Serialize for SharedFileMetadata {
17044 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17045 use serde::ser::SerializeStruct;
17047 let mut s = serializer.serialize_struct("SharedFileMetadata", 14)?;
17048 self.internal_serialize::<S>(&mut s)?;
17049 s.end()
17050 }
17051}
17052
17053#[derive(Debug, Clone, PartialEq, Eq)]
17055#[non_exhaustive] pub enum SharedFolderAccessError {
17057 InvalidId,
17059 NotAMember,
17061 InvalidMember,
17063 #[deprecated]
17065 EmailUnverified,
17066 Unmounted,
17068 Other,
17071}
17072
17073impl<'de> ::serde::de::Deserialize<'de> for SharedFolderAccessError {
17074 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17075 use serde::de::{self, MapAccess, Visitor};
17077 struct EnumVisitor;
17078 impl<'de> Visitor<'de> for EnumVisitor {
17079 type Value = SharedFolderAccessError;
17080 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17081 f.write_str("a SharedFolderAccessError structure")
17082 }
17083 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
17084 let tag: &str = match map.next_key()? {
17085 Some(".tag") => map.next_value()?,
17086 _ => return Err(de::Error::missing_field(".tag"))
17087 };
17088 let value = match tag {
17089 "invalid_id" => SharedFolderAccessError::InvalidId,
17090 "not_a_member" => SharedFolderAccessError::NotAMember,
17091 "invalid_member" => SharedFolderAccessError::InvalidMember,
17092 #[allow(deprecated)]
17093 "email_unverified" => SharedFolderAccessError::EmailUnverified,
17094 "unmounted" => SharedFolderAccessError::Unmounted,
17095 _ => SharedFolderAccessError::Other,
17096 };
17097 crate::eat_json_fields(&mut map)?;
17098 Ok(value)
17099 }
17100 }
17101 const VARIANTS: &[&str] = &["invalid_id",
17102 "not_a_member",
17103 "invalid_member",
17104 "email_unverified",
17105 "unmounted",
17106 "other"];
17107 deserializer.deserialize_struct("SharedFolderAccessError", VARIANTS, EnumVisitor)
17108 }
17109}
17110
17111impl ::serde::ser::Serialize for SharedFolderAccessError {
17112 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17113 use serde::ser::SerializeStruct;
17115 match self {
17116 SharedFolderAccessError::InvalidId => {
17117 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
17119 s.serialize_field(".tag", "invalid_id")?;
17120 s.end()
17121 }
17122 SharedFolderAccessError::NotAMember => {
17123 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
17125 s.serialize_field(".tag", "not_a_member")?;
17126 s.end()
17127 }
17128 SharedFolderAccessError::InvalidMember => {
17129 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
17131 s.serialize_field(".tag", "invalid_member")?;
17132 s.end()
17133 }
17134 #[allow(deprecated)]
17135 SharedFolderAccessError::EmailUnverified => {
17136 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
17138 s.serialize_field(".tag", "email_unverified")?;
17139 s.end()
17140 }
17141 SharedFolderAccessError::Unmounted => {
17142 let mut s = serializer.serialize_struct("SharedFolderAccessError", 1)?;
17144 s.serialize_field(".tag", "unmounted")?;
17145 s.end()
17146 }
17147 SharedFolderAccessError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
17148 }
17149 }
17150}
17151
17152impl ::std::error::Error for SharedFolderAccessError {
17153}
17154
17155impl ::std::fmt::Display for SharedFolderAccessError {
17156 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17157 match self {
17158 SharedFolderAccessError::InvalidId => f.write_str("This shared folder ID is invalid."),
17159 SharedFolderAccessError::NotAMember => f.write_str("The user is not a member of the shared folder thus cannot access it."),
17160 SharedFolderAccessError::InvalidMember => f.write_str("The user does not exist or their account is disabled."),
17161 #[allow(deprecated)] SharedFolderAccessError::EmailUnverified => f.write_str("Field is deprecated. Never set."),
17162 SharedFolderAccessError::Unmounted => f.write_str("The shared folder is unmounted."),
17163 _ => write!(f, "{:?}", *self),
17164 }
17165 }
17166}
17167
17168#[derive(Debug, Clone, PartialEq, Eq)]
17169#[non_exhaustive] pub enum SharedFolderMemberError {
17171 InvalidDropboxId,
17173 NotAMember,
17175 NoExplicitAccess(MemberAccessLevelResult),
17177 Other,
17180}
17181
17182impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMemberError {
17183 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17184 use serde::de::{self, MapAccess, Visitor};
17186 struct EnumVisitor;
17187 impl<'de> Visitor<'de> for EnumVisitor {
17188 type Value = SharedFolderMemberError;
17189 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17190 f.write_str("a SharedFolderMemberError structure")
17191 }
17192 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
17193 let tag: &str = match map.next_key()? {
17194 Some(".tag") => map.next_value()?,
17195 _ => return Err(de::Error::missing_field(".tag"))
17196 };
17197 let value = match tag {
17198 "invalid_dropbox_id" => SharedFolderMemberError::InvalidDropboxId,
17199 "not_a_member" => SharedFolderMemberError::NotAMember,
17200 "no_explicit_access" => SharedFolderMemberError::NoExplicitAccess(MemberAccessLevelResult::internal_deserialize(&mut map)?),
17201 _ => SharedFolderMemberError::Other,
17202 };
17203 crate::eat_json_fields(&mut map)?;
17204 Ok(value)
17205 }
17206 }
17207 const VARIANTS: &[&str] = &["invalid_dropbox_id",
17208 "not_a_member",
17209 "no_explicit_access",
17210 "other"];
17211 deserializer.deserialize_struct("SharedFolderMemberError", VARIANTS, EnumVisitor)
17212 }
17213}
17214
17215impl ::serde::ser::Serialize for SharedFolderMemberError {
17216 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17217 use serde::ser::SerializeStruct;
17219 match self {
17220 SharedFolderMemberError::InvalidDropboxId => {
17221 let mut s = serializer.serialize_struct("SharedFolderMemberError", 1)?;
17223 s.serialize_field(".tag", "invalid_dropbox_id")?;
17224 s.end()
17225 }
17226 SharedFolderMemberError::NotAMember => {
17227 let mut s = serializer.serialize_struct("SharedFolderMemberError", 1)?;
17229 s.serialize_field(".tag", "not_a_member")?;
17230 s.end()
17231 }
17232 SharedFolderMemberError::NoExplicitAccess(x) => {
17233 let mut s = serializer.serialize_struct("SharedFolderMemberError", 4)?;
17235 s.serialize_field(".tag", "no_explicit_access")?;
17236 x.internal_serialize::<S>(&mut s)?;
17237 s.end()
17238 }
17239 SharedFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
17240 }
17241 }
17242}
17243
17244impl ::std::error::Error for SharedFolderMemberError {
17245}
17246
17247impl ::std::fmt::Display for SharedFolderMemberError {
17248 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17249 match self {
17250 SharedFolderMemberError::InvalidDropboxId => f.write_str("The target dropbox_id is invalid."),
17251 SharedFolderMemberError::NotAMember => f.write_str("The target dropbox_id is not a member of the shared folder."),
17252 SharedFolderMemberError::NoExplicitAccess(inner) => write!(f, "The target member only has inherited access to the shared folder: {:?}", inner),
17253 _ => write!(f, "{:?}", *self),
17254 }
17255 }
17256}
17257
17258#[derive(Debug, Clone, PartialEq, Eq)]
17260#[non_exhaustive] pub struct SharedFolderMembers {
17262 pub users: Vec<UserMembershipInfo>,
17264 pub groups: Vec<GroupMembershipInfo>,
17266 pub invitees: Vec<InviteeMembershipInfo>,
17268 pub cursor: Option<String>,
17273}
17274
17275impl SharedFolderMembers {
17276 pub fn new(
17277 users: Vec<UserMembershipInfo>,
17278 groups: Vec<GroupMembershipInfo>,
17279 invitees: Vec<InviteeMembershipInfo>,
17280 ) -> Self {
17281 SharedFolderMembers {
17282 users,
17283 groups,
17284 invitees,
17285 cursor: None,
17286 }
17287 }
17288
17289 pub fn with_cursor(mut self, value: String) -> Self {
17290 self.cursor = Some(value);
17291 self
17292 }
17293}
17294
17295const SHARED_FOLDER_MEMBERS_FIELDS: &[&str] = &["users",
17296 "groups",
17297 "invitees",
17298 "cursor"];
17299impl SharedFolderMembers {
17300 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
17301 map: V,
17302 ) -> Result<SharedFolderMembers, V::Error> {
17303 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
17304 }
17305
17306 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
17307 mut map: V,
17308 optional: bool,
17309 ) -> Result<Option<SharedFolderMembers>, V::Error> {
17310 let mut field_users = None;
17311 let mut field_groups = None;
17312 let mut field_invitees = None;
17313 let mut field_cursor = None;
17314 let mut nothing = true;
17315 while let Some(key) = map.next_key::<&str>()? {
17316 nothing = false;
17317 match key {
17318 "users" => {
17319 if field_users.is_some() {
17320 return Err(::serde::de::Error::duplicate_field("users"));
17321 }
17322 field_users = Some(map.next_value()?);
17323 }
17324 "groups" => {
17325 if field_groups.is_some() {
17326 return Err(::serde::de::Error::duplicate_field("groups"));
17327 }
17328 field_groups = Some(map.next_value()?);
17329 }
17330 "invitees" => {
17331 if field_invitees.is_some() {
17332 return Err(::serde::de::Error::duplicate_field("invitees"));
17333 }
17334 field_invitees = Some(map.next_value()?);
17335 }
17336 "cursor" => {
17337 if field_cursor.is_some() {
17338 return Err(::serde::de::Error::duplicate_field("cursor"));
17339 }
17340 field_cursor = Some(map.next_value()?);
17341 }
17342 _ => {
17343 map.next_value::<::serde_json::Value>()?;
17345 }
17346 }
17347 }
17348 if optional && nothing {
17349 return Ok(None);
17350 }
17351 let result = SharedFolderMembers {
17352 users: field_users.ok_or_else(|| ::serde::de::Error::missing_field("users"))?,
17353 groups: field_groups.ok_or_else(|| ::serde::de::Error::missing_field("groups"))?,
17354 invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?,
17355 cursor: field_cursor.and_then(Option::flatten),
17356 };
17357 Ok(Some(result))
17358 }
17359
17360 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
17361 &self,
17362 s: &mut S::SerializeStruct,
17363 ) -> Result<(), S::Error> {
17364 use serde::ser::SerializeStruct;
17365 s.serialize_field("users", &self.users)?;
17366 s.serialize_field("groups", &self.groups)?;
17367 s.serialize_field("invitees", &self.invitees)?;
17368 if let Some(val) = &self.cursor {
17369 s.serialize_field("cursor", val)?;
17370 }
17371 Ok(())
17372 }
17373}
17374
17375impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMembers {
17376 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17377 use serde::de::{MapAccess, Visitor};
17379 struct StructVisitor;
17380 impl<'de> Visitor<'de> for StructVisitor {
17381 type Value = SharedFolderMembers;
17382 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17383 f.write_str("a SharedFolderMembers struct")
17384 }
17385 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
17386 SharedFolderMembers::internal_deserialize(map)
17387 }
17388 }
17389 deserializer.deserialize_struct("SharedFolderMembers", SHARED_FOLDER_MEMBERS_FIELDS, StructVisitor)
17390 }
17391}
17392
17393impl ::serde::ser::Serialize for SharedFolderMembers {
17394 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17395 use serde::ser::SerializeStruct;
17397 let mut s = serializer.serialize_struct("SharedFolderMembers", 4)?;
17398 self.internal_serialize::<S>(&mut s)?;
17399 s.end()
17400 }
17401}
17402
17403#[derive(Debug, Clone, PartialEq, Eq)]
17405#[non_exhaustive] pub struct SharedFolderMetadata {
17407 pub access_type: AccessLevel,
17409 pub is_inside_team_folder: bool,
17411 pub is_team_folder: bool,
17413 pub name: String,
17415 pub policy: FolderPolicy,
17417 pub preview_url: String,
17419 pub shared_folder_id: crate::types::common::SharedFolderId,
17421 pub time_invited: crate::types::common::DropboxTimestamp,
17423 pub owner_display_names: Option<Vec<String>>,
17427 pub owner_team: Option<crate::types::users::Team>,
17430 pub parent_shared_folder_id: Option<crate::types::common::SharedFolderId>,
17433 pub path_display: Option<String>,
17435 pub path_lower: Option<String>,
17437 pub parent_folder_name: Option<String>,
17439 pub link_metadata: Option<SharedContentLinkMetadata>,
17442 pub permissions: Option<Vec<FolderPermission>>,
17445 pub access_inheritance: AccessInheritance,
17447 pub folder_id: Option<crate::types::files::FileId>,
17449}
17450
17451impl SharedFolderMetadata {
17452 pub fn new(
17453 access_type: AccessLevel,
17454 is_inside_team_folder: bool,
17455 is_team_folder: bool,
17456 name: String,
17457 policy: FolderPolicy,
17458 preview_url: String,
17459 shared_folder_id: crate::types::common::SharedFolderId,
17460 time_invited: crate::types::common::DropboxTimestamp,
17461 ) -> Self {
17462 SharedFolderMetadata {
17463 access_type,
17464 is_inside_team_folder,
17465 is_team_folder,
17466 name,
17467 policy,
17468 preview_url,
17469 shared_folder_id,
17470 time_invited,
17471 owner_display_names: None,
17472 owner_team: None,
17473 parent_shared_folder_id: None,
17474 path_display: None,
17475 path_lower: None,
17476 parent_folder_name: None,
17477 link_metadata: None,
17478 permissions: None,
17479 access_inheritance: AccessInheritance::Inherit,
17480 folder_id: None,
17481 }
17482 }
17483
17484 pub fn with_owner_display_names(mut self, value: Vec<String>) -> Self {
17485 self.owner_display_names = Some(value);
17486 self
17487 }
17488
17489 pub fn with_owner_team(mut self, value: crate::types::users::Team) -> Self {
17490 self.owner_team = Some(value);
17491 self
17492 }
17493
17494 pub fn with_parent_shared_folder_id(
17495 mut self,
17496 value: crate::types::common::SharedFolderId,
17497 ) -> Self {
17498 self.parent_shared_folder_id = Some(value);
17499 self
17500 }
17501
17502 pub fn with_path_display(mut self, value: String) -> Self {
17503 self.path_display = Some(value);
17504 self
17505 }
17506
17507 pub fn with_path_lower(mut self, value: String) -> Self {
17508 self.path_lower = Some(value);
17509 self
17510 }
17511
17512 pub fn with_parent_folder_name(mut self, value: String) -> Self {
17513 self.parent_folder_name = Some(value);
17514 self
17515 }
17516
17517 pub fn with_link_metadata(mut self, value: SharedContentLinkMetadata) -> Self {
17518 self.link_metadata = Some(value);
17519 self
17520 }
17521
17522 pub fn with_permissions(mut self, value: Vec<FolderPermission>) -> Self {
17523 self.permissions = Some(value);
17524 self
17525 }
17526
17527 pub fn with_access_inheritance(mut self, value: AccessInheritance) -> Self {
17528 self.access_inheritance = value;
17529 self
17530 }
17531
17532 pub fn with_folder_id(mut self, value: crate::types::files::FileId) -> Self {
17533 self.folder_id = Some(value);
17534 self
17535 }
17536}
17537
17538const SHARED_FOLDER_METADATA_FIELDS: &[&str] = &["access_type",
17539 "is_inside_team_folder",
17540 "is_team_folder",
17541 "name",
17542 "policy",
17543 "preview_url",
17544 "shared_folder_id",
17545 "time_invited",
17546 "owner_display_names",
17547 "owner_team",
17548 "parent_shared_folder_id",
17549 "path_display",
17550 "path_lower",
17551 "parent_folder_name",
17552 "link_metadata",
17553 "permissions",
17554 "access_inheritance",
17555 "folder_id"];
17556impl SharedFolderMetadata {
17557 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
17558 map: V,
17559 ) -> Result<SharedFolderMetadata, V::Error> {
17560 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
17561 }
17562
17563 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
17564 mut map: V,
17565 optional: bool,
17566 ) -> Result<Option<SharedFolderMetadata>, V::Error> {
17567 let mut field_access_type = None;
17568 let mut field_is_inside_team_folder = None;
17569 let mut field_is_team_folder = None;
17570 let mut field_name = None;
17571 let mut field_policy = None;
17572 let mut field_preview_url = None;
17573 let mut field_shared_folder_id = None;
17574 let mut field_time_invited = None;
17575 let mut field_owner_display_names = None;
17576 let mut field_owner_team = None;
17577 let mut field_parent_shared_folder_id = None;
17578 let mut field_path_display = None;
17579 let mut field_path_lower = None;
17580 let mut field_parent_folder_name = None;
17581 let mut field_link_metadata = None;
17582 let mut field_permissions = None;
17583 let mut field_access_inheritance = None;
17584 let mut field_folder_id = None;
17585 let mut nothing = true;
17586 while let Some(key) = map.next_key::<&str>()? {
17587 nothing = false;
17588 match key {
17589 "access_type" => {
17590 if field_access_type.is_some() {
17591 return Err(::serde::de::Error::duplicate_field("access_type"));
17592 }
17593 field_access_type = Some(map.next_value()?);
17594 }
17595 "is_inside_team_folder" => {
17596 if field_is_inside_team_folder.is_some() {
17597 return Err(::serde::de::Error::duplicate_field("is_inside_team_folder"));
17598 }
17599 field_is_inside_team_folder = Some(map.next_value()?);
17600 }
17601 "is_team_folder" => {
17602 if field_is_team_folder.is_some() {
17603 return Err(::serde::de::Error::duplicate_field("is_team_folder"));
17604 }
17605 field_is_team_folder = Some(map.next_value()?);
17606 }
17607 "name" => {
17608 if field_name.is_some() {
17609 return Err(::serde::de::Error::duplicate_field("name"));
17610 }
17611 field_name = Some(map.next_value()?);
17612 }
17613 "policy" => {
17614 if field_policy.is_some() {
17615 return Err(::serde::de::Error::duplicate_field("policy"));
17616 }
17617 field_policy = Some(map.next_value()?);
17618 }
17619 "preview_url" => {
17620 if field_preview_url.is_some() {
17621 return Err(::serde::de::Error::duplicate_field("preview_url"));
17622 }
17623 field_preview_url = Some(map.next_value()?);
17624 }
17625 "shared_folder_id" => {
17626 if field_shared_folder_id.is_some() {
17627 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
17628 }
17629 field_shared_folder_id = Some(map.next_value()?);
17630 }
17631 "time_invited" => {
17632 if field_time_invited.is_some() {
17633 return Err(::serde::de::Error::duplicate_field("time_invited"));
17634 }
17635 field_time_invited = Some(map.next_value()?);
17636 }
17637 "owner_display_names" => {
17638 if field_owner_display_names.is_some() {
17639 return Err(::serde::de::Error::duplicate_field("owner_display_names"));
17640 }
17641 field_owner_display_names = Some(map.next_value()?);
17642 }
17643 "owner_team" => {
17644 if field_owner_team.is_some() {
17645 return Err(::serde::de::Error::duplicate_field("owner_team"));
17646 }
17647 field_owner_team = Some(map.next_value()?);
17648 }
17649 "parent_shared_folder_id" => {
17650 if field_parent_shared_folder_id.is_some() {
17651 return Err(::serde::de::Error::duplicate_field("parent_shared_folder_id"));
17652 }
17653 field_parent_shared_folder_id = Some(map.next_value()?);
17654 }
17655 "path_display" => {
17656 if field_path_display.is_some() {
17657 return Err(::serde::de::Error::duplicate_field("path_display"));
17658 }
17659 field_path_display = Some(map.next_value()?);
17660 }
17661 "path_lower" => {
17662 if field_path_lower.is_some() {
17663 return Err(::serde::de::Error::duplicate_field("path_lower"));
17664 }
17665 field_path_lower = Some(map.next_value()?);
17666 }
17667 "parent_folder_name" => {
17668 if field_parent_folder_name.is_some() {
17669 return Err(::serde::de::Error::duplicate_field("parent_folder_name"));
17670 }
17671 field_parent_folder_name = Some(map.next_value()?);
17672 }
17673 "link_metadata" => {
17674 if field_link_metadata.is_some() {
17675 return Err(::serde::de::Error::duplicate_field("link_metadata"));
17676 }
17677 field_link_metadata = Some(map.next_value()?);
17678 }
17679 "permissions" => {
17680 if field_permissions.is_some() {
17681 return Err(::serde::de::Error::duplicate_field("permissions"));
17682 }
17683 field_permissions = Some(map.next_value()?);
17684 }
17685 "access_inheritance" => {
17686 if field_access_inheritance.is_some() {
17687 return Err(::serde::de::Error::duplicate_field("access_inheritance"));
17688 }
17689 field_access_inheritance = Some(map.next_value()?);
17690 }
17691 "folder_id" => {
17692 if field_folder_id.is_some() {
17693 return Err(::serde::de::Error::duplicate_field("folder_id"));
17694 }
17695 field_folder_id = Some(map.next_value()?);
17696 }
17697 _ => {
17698 map.next_value::<::serde_json::Value>()?;
17700 }
17701 }
17702 }
17703 if optional && nothing {
17704 return Ok(None);
17705 }
17706 let result = SharedFolderMetadata {
17707 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
17708 is_inside_team_folder: field_is_inside_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_inside_team_folder"))?,
17709 is_team_folder: field_is_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_team_folder"))?,
17710 name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?,
17711 policy: field_policy.ok_or_else(|| ::serde::de::Error::missing_field("policy"))?,
17712 preview_url: field_preview_url.ok_or_else(|| ::serde::de::Error::missing_field("preview_url"))?,
17713 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
17714 time_invited: field_time_invited.ok_or_else(|| ::serde::de::Error::missing_field("time_invited"))?,
17715 owner_display_names: field_owner_display_names.and_then(Option::flatten),
17716 owner_team: field_owner_team.and_then(Option::flatten),
17717 parent_shared_folder_id: field_parent_shared_folder_id.and_then(Option::flatten),
17718 path_display: field_path_display.and_then(Option::flatten),
17719 path_lower: field_path_lower.and_then(Option::flatten),
17720 parent_folder_name: field_parent_folder_name.and_then(Option::flatten),
17721 link_metadata: field_link_metadata.and_then(Option::flatten),
17722 permissions: field_permissions.and_then(Option::flatten),
17723 access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit),
17724 folder_id: field_folder_id.and_then(Option::flatten),
17725 };
17726 Ok(Some(result))
17727 }
17728
17729 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
17730 &self,
17731 s: &mut S::SerializeStruct,
17732 ) -> Result<(), S::Error> {
17733 use serde::ser::SerializeStruct;
17734 s.serialize_field("access_type", &self.access_type)?;
17735 s.serialize_field("is_inside_team_folder", &self.is_inside_team_folder)?;
17736 s.serialize_field("is_team_folder", &self.is_team_folder)?;
17737 s.serialize_field("name", &self.name)?;
17738 s.serialize_field("policy", &self.policy)?;
17739 s.serialize_field("preview_url", &self.preview_url)?;
17740 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
17741 s.serialize_field("time_invited", &self.time_invited)?;
17742 if let Some(val) = &self.owner_display_names {
17743 s.serialize_field("owner_display_names", val)?;
17744 }
17745 if let Some(val) = &self.owner_team {
17746 s.serialize_field("owner_team", val)?;
17747 }
17748 if let Some(val) = &self.parent_shared_folder_id {
17749 s.serialize_field("parent_shared_folder_id", val)?;
17750 }
17751 if let Some(val) = &self.path_display {
17752 s.serialize_field("path_display", val)?;
17753 }
17754 if let Some(val) = &self.path_lower {
17755 s.serialize_field("path_lower", val)?;
17756 }
17757 if let Some(val) = &self.parent_folder_name {
17758 s.serialize_field("parent_folder_name", val)?;
17759 }
17760 if let Some(val) = &self.link_metadata {
17761 s.serialize_field("link_metadata", val)?;
17762 }
17763 if let Some(val) = &self.permissions {
17764 s.serialize_field("permissions", val)?;
17765 }
17766 if self.access_inheritance != AccessInheritance::Inherit {
17767 s.serialize_field("access_inheritance", &self.access_inheritance)?;
17768 }
17769 if let Some(val) = &self.folder_id {
17770 s.serialize_field("folder_id", val)?;
17771 }
17772 Ok(())
17773 }
17774}
17775
17776impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMetadata {
17777 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
17778 use serde::de::{MapAccess, Visitor};
17780 struct StructVisitor;
17781 impl<'de> Visitor<'de> for StructVisitor {
17782 type Value = SharedFolderMetadata;
17783 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17784 f.write_str("a SharedFolderMetadata struct")
17785 }
17786 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
17787 SharedFolderMetadata::internal_deserialize(map)
17788 }
17789 }
17790 deserializer.deserialize_struct("SharedFolderMetadata", SHARED_FOLDER_METADATA_FIELDS, StructVisitor)
17791 }
17792}
17793
17794impl ::serde::ser::Serialize for SharedFolderMetadata {
17795 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
17796 use serde::ser::SerializeStruct;
17798 let mut s = serializer.serialize_struct("SharedFolderMetadata", 18)?;
17799 self.internal_serialize::<S>(&mut s)?;
17800 s.end()
17801 }
17802}
17803
17804impl From<SharedFolderMetadata> for SharedFolderMetadataBase {
17806 fn from(subtype: SharedFolderMetadata) -> Self {
17807 Self {
17808 access_type: subtype.access_type,
17809 is_inside_team_folder: subtype.is_inside_team_folder,
17810 is_team_folder: subtype.is_team_folder,
17811 owner_display_names: subtype.owner_display_names,
17812 owner_team: subtype.owner_team,
17813 parent_shared_folder_id: subtype.parent_shared_folder_id,
17814 path_display: subtype.path_display,
17815 path_lower: subtype.path_lower,
17816 parent_folder_name: subtype.parent_folder_name,
17817 }
17818 }
17819}
17820#[derive(Debug, Clone, PartialEq, Eq)]
17822#[non_exhaustive] pub struct SharedFolderMetadataBase {
17824 pub access_type: AccessLevel,
17826 pub is_inside_team_folder: bool,
17828 pub is_team_folder: bool,
17830 pub owner_display_names: Option<Vec<String>>,
17834 pub owner_team: Option<crate::types::users::Team>,
17837 pub parent_shared_folder_id: Option<crate::types::common::SharedFolderId>,
17840 pub path_display: Option<String>,
17842 pub path_lower: Option<String>,
17844 pub parent_folder_name: Option<String>,
17846}
17847
17848impl SharedFolderMetadataBase {
17849 pub fn new(
17850 access_type: AccessLevel,
17851 is_inside_team_folder: bool,
17852 is_team_folder: bool,
17853 ) -> Self {
17854 SharedFolderMetadataBase {
17855 access_type,
17856 is_inside_team_folder,
17857 is_team_folder,
17858 owner_display_names: None,
17859 owner_team: None,
17860 parent_shared_folder_id: None,
17861 path_display: None,
17862 path_lower: None,
17863 parent_folder_name: None,
17864 }
17865 }
17866
17867 pub fn with_owner_display_names(mut self, value: Vec<String>) -> Self {
17868 self.owner_display_names = Some(value);
17869 self
17870 }
17871
17872 pub fn with_owner_team(mut self, value: crate::types::users::Team) -> Self {
17873 self.owner_team = Some(value);
17874 self
17875 }
17876
17877 pub fn with_parent_shared_folder_id(
17878 mut self,
17879 value: crate::types::common::SharedFolderId,
17880 ) -> Self {
17881 self.parent_shared_folder_id = Some(value);
17882 self
17883 }
17884
17885 pub fn with_path_display(mut self, value: String) -> Self {
17886 self.path_display = Some(value);
17887 self
17888 }
17889
17890 pub fn with_path_lower(mut self, value: String) -> Self {
17891 self.path_lower = Some(value);
17892 self
17893 }
17894
17895 pub fn with_parent_folder_name(mut self, value: String) -> Self {
17896 self.parent_folder_name = Some(value);
17897 self
17898 }
17899}
17900
17901const SHARED_FOLDER_METADATA_BASE_FIELDS: &[&str] = &["access_type",
17902 "is_inside_team_folder",
17903 "is_team_folder",
17904 "owner_display_names",
17905 "owner_team",
17906 "parent_shared_folder_id",
17907 "path_display",
17908 "path_lower",
17909 "parent_folder_name"];
17910impl SharedFolderMetadataBase {
17911 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
17912 map: V,
17913 ) -> Result<SharedFolderMetadataBase, V::Error> {
17914 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
17915 }
17916
17917 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
17918 mut map: V,
17919 optional: bool,
17920 ) -> Result<Option<SharedFolderMetadataBase>, V::Error> {
17921 let mut field_access_type = None;
17922 let mut field_is_inside_team_folder = None;
17923 let mut field_is_team_folder = None;
17924 let mut field_owner_display_names = None;
17925 let mut field_owner_team = None;
17926 let mut field_parent_shared_folder_id = None;
17927 let mut field_path_display = None;
17928 let mut field_path_lower = None;
17929 let mut field_parent_folder_name = None;
17930 let mut nothing = true;
17931 while let Some(key) = map.next_key::<&str>()? {
17932 nothing = false;
17933 match key {
17934 "access_type" => {
17935 if field_access_type.is_some() {
17936 return Err(::serde::de::Error::duplicate_field("access_type"));
17937 }
17938 field_access_type = Some(map.next_value()?);
17939 }
17940 "is_inside_team_folder" => {
17941 if field_is_inside_team_folder.is_some() {
17942 return Err(::serde::de::Error::duplicate_field("is_inside_team_folder"));
17943 }
17944 field_is_inside_team_folder = Some(map.next_value()?);
17945 }
17946 "is_team_folder" => {
17947 if field_is_team_folder.is_some() {
17948 return Err(::serde::de::Error::duplicate_field("is_team_folder"));
17949 }
17950 field_is_team_folder = Some(map.next_value()?);
17951 }
17952 "owner_display_names" => {
17953 if field_owner_display_names.is_some() {
17954 return Err(::serde::de::Error::duplicate_field("owner_display_names"));
17955 }
17956 field_owner_display_names = Some(map.next_value()?);
17957 }
17958 "owner_team" => {
17959 if field_owner_team.is_some() {
17960 return Err(::serde::de::Error::duplicate_field("owner_team"));
17961 }
17962 field_owner_team = Some(map.next_value()?);
17963 }
17964 "parent_shared_folder_id" => {
17965 if field_parent_shared_folder_id.is_some() {
17966 return Err(::serde::de::Error::duplicate_field("parent_shared_folder_id"));
17967 }
17968 field_parent_shared_folder_id = Some(map.next_value()?);
17969 }
17970 "path_display" => {
17971 if field_path_display.is_some() {
17972 return Err(::serde::de::Error::duplicate_field("path_display"));
17973 }
17974 field_path_display = Some(map.next_value()?);
17975 }
17976 "path_lower" => {
17977 if field_path_lower.is_some() {
17978 return Err(::serde::de::Error::duplicate_field("path_lower"));
17979 }
17980 field_path_lower = Some(map.next_value()?);
17981 }
17982 "parent_folder_name" => {
17983 if field_parent_folder_name.is_some() {
17984 return Err(::serde::de::Error::duplicate_field("parent_folder_name"));
17985 }
17986 field_parent_folder_name = Some(map.next_value()?);
17987 }
17988 _ => {
17989 map.next_value::<::serde_json::Value>()?;
17991 }
17992 }
17993 }
17994 if optional && nothing {
17995 return Ok(None);
17996 }
17997 let result = SharedFolderMetadataBase {
17998 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
17999 is_inside_team_folder: field_is_inside_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_inside_team_folder"))?,
18000 is_team_folder: field_is_team_folder.ok_or_else(|| ::serde::de::Error::missing_field("is_team_folder"))?,
18001 owner_display_names: field_owner_display_names.and_then(Option::flatten),
18002 owner_team: field_owner_team.and_then(Option::flatten),
18003 parent_shared_folder_id: field_parent_shared_folder_id.and_then(Option::flatten),
18004 path_display: field_path_display.and_then(Option::flatten),
18005 path_lower: field_path_lower.and_then(Option::flatten),
18006 parent_folder_name: field_parent_folder_name.and_then(Option::flatten),
18007 };
18008 Ok(Some(result))
18009 }
18010
18011 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
18012 &self,
18013 s: &mut S::SerializeStruct,
18014 ) -> Result<(), S::Error> {
18015 use serde::ser::SerializeStruct;
18016 s.serialize_field("access_type", &self.access_type)?;
18017 s.serialize_field("is_inside_team_folder", &self.is_inside_team_folder)?;
18018 s.serialize_field("is_team_folder", &self.is_team_folder)?;
18019 if let Some(val) = &self.owner_display_names {
18020 s.serialize_field("owner_display_names", val)?;
18021 }
18022 if let Some(val) = &self.owner_team {
18023 s.serialize_field("owner_team", val)?;
18024 }
18025 if let Some(val) = &self.parent_shared_folder_id {
18026 s.serialize_field("parent_shared_folder_id", val)?;
18027 }
18028 if let Some(val) = &self.path_display {
18029 s.serialize_field("path_display", val)?;
18030 }
18031 if let Some(val) = &self.path_lower {
18032 s.serialize_field("path_lower", val)?;
18033 }
18034 if let Some(val) = &self.parent_folder_name {
18035 s.serialize_field("parent_folder_name", val)?;
18036 }
18037 Ok(())
18038 }
18039}
18040
18041impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMetadataBase {
18042 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18043 use serde::de::{MapAccess, Visitor};
18045 struct StructVisitor;
18046 impl<'de> Visitor<'de> for StructVisitor {
18047 type Value = SharedFolderMetadataBase;
18048 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18049 f.write_str("a SharedFolderMetadataBase struct")
18050 }
18051 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
18052 SharedFolderMetadataBase::internal_deserialize(map)
18053 }
18054 }
18055 deserializer.deserialize_struct("SharedFolderMetadataBase", SHARED_FOLDER_METADATA_BASE_FIELDS, StructVisitor)
18056 }
18057}
18058
18059impl ::serde::ser::Serialize for SharedFolderMetadataBase {
18060 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18061 use serde::ser::SerializeStruct;
18063 let mut s = serializer.serialize_struct("SharedFolderMetadataBase", 9)?;
18064 self.internal_serialize::<S>(&mut s)?;
18065 s.end()
18066 }
18067}
18068
18069#[derive(Debug, Clone, PartialEq, Eq)]
18070#[non_exhaustive] pub enum SharedLinkAccessFailureReason {
18072 LoginRequired,
18074 EmailVerifyRequired,
18078 PasswordRequired,
18080 TeamOnly,
18082 OwnerOnly,
18084 Other,
18087}
18088
18089impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAccessFailureReason {
18090 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18091 use serde::de::{self, MapAccess, Visitor};
18093 struct EnumVisitor;
18094 impl<'de> Visitor<'de> for EnumVisitor {
18095 type Value = SharedLinkAccessFailureReason;
18096 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18097 f.write_str("a SharedLinkAccessFailureReason structure")
18098 }
18099 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18100 let tag: &str = match map.next_key()? {
18101 Some(".tag") => map.next_value()?,
18102 _ => return Err(de::Error::missing_field(".tag"))
18103 };
18104 let value = match tag {
18105 "login_required" => SharedLinkAccessFailureReason::LoginRequired,
18106 "email_verify_required" => SharedLinkAccessFailureReason::EmailVerifyRequired,
18107 "password_required" => SharedLinkAccessFailureReason::PasswordRequired,
18108 "team_only" => SharedLinkAccessFailureReason::TeamOnly,
18109 "owner_only" => SharedLinkAccessFailureReason::OwnerOnly,
18110 _ => SharedLinkAccessFailureReason::Other,
18111 };
18112 crate::eat_json_fields(&mut map)?;
18113 Ok(value)
18114 }
18115 }
18116 const VARIANTS: &[&str] = &["login_required",
18117 "email_verify_required",
18118 "password_required",
18119 "team_only",
18120 "owner_only",
18121 "other"];
18122 deserializer.deserialize_struct("SharedLinkAccessFailureReason", VARIANTS, EnumVisitor)
18123 }
18124}
18125
18126impl ::serde::ser::Serialize for SharedLinkAccessFailureReason {
18127 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18128 use serde::ser::SerializeStruct;
18130 match self {
18131 SharedLinkAccessFailureReason::LoginRequired => {
18132 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
18134 s.serialize_field(".tag", "login_required")?;
18135 s.end()
18136 }
18137 SharedLinkAccessFailureReason::EmailVerifyRequired => {
18138 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
18140 s.serialize_field(".tag", "email_verify_required")?;
18141 s.end()
18142 }
18143 SharedLinkAccessFailureReason::PasswordRequired => {
18144 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
18146 s.serialize_field(".tag", "password_required")?;
18147 s.end()
18148 }
18149 SharedLinkAccessFailureReason::TeamOnly => {
18150 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
18152 s.serialize_field(".tag", "team_only")?;
18153 s.end()
18154 }
18155 SharedLinkAccessFailureReason::OwnerOnly => {
18156 let mut s = serializer.serialize_struct("SharedLinkAccessFailureReason", 1)?;
18158 s.serialize_field(".tag", "owner_only")?;
18159 s.end()
18160 }
18161 SharedLinkAccessFailureReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18162 }
18163 }
18164}
18165
18166#[derive(Debug, Clone, PartialEq, Eq)]
18167#[non_exhaustive] pub enum SharedLinkAlreadyExistsMetadata {
18169 Metadata(SharedLinkMetadata),
18171 Other,
18174}
18175
18176impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAlreadyExistsMetadata {
18177 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18178 use serde::de::{self, MapAccess, Visitor};
18180 struct EnumVisitor;
18181 impl<'de> Visitor<'de> for EnumVisitor {
18182 type Value = SharedLinkAlreadyExistsMetadata;
18183 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18184 f.write_str("a SharedLinkAlreadyExistsMetadata structure")
18185 }
18186 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18187 let tag: &str = match map.next_key()? {
18188 Some(".tag") => map.next_value()?,
18189 _ => return Err(de::Error::missing_field(".tag"))
18190 };
18191 let value = match tag {
18192 "metadata" => {
18193 match map.next_key()? {
18194 Some("metadata") => SharedLinkAlreadyExistsMetadata::Metadata(map.next_value()?),
18195 None => return Err(de::Error::missing_field("metadata")),
18196 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
18197 }
18198 }
18199 _ => SharedLinkAlreadyExistsMetadata::Other,
18200 };
18201 crate::eat_json_fields(&mut map)?;
18202 Ok(value)
18203 }
18204 }
18205 const VARIANTS: &[&str] = &["metadata",
18206 "other"];
18207 deserializer.deserialize_struct("SharedLinkAlreadyExistsMetadata", VARIANTS, EnumVisitor)
18208 }
18209}
18210
18211impl ::serde::ser::Serialize for SharedLinkAlreadyExistsMetadata {
18212 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18213 use serde::ser::SerializeStruct;
18215 match self {
18216 SharedLinkAlreadyExistsMetadata::Metadata(x) => {
18217 let mut s = serializer.serialize_struct("SharedLinkAlreadyExistsMetadata", 2)?;
18219 s.serialize_field(".tag", "metadata")?;
18220 s.serialize_field("metadata", x)?;
18221 s.end()
18222 }
18223 SharedLinkAlreadyExistsMetadata::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18224 }
18225 }
18226}
18227
18228#[derive(Debug, Clone, PartialEq, Eq)]
18229#[non_exhaustive] pub enum SharedLinkError {
18231 SharedLinkNotFound,
18233 SharedLinkAccessDenied,
18235 UnsupportedLinkType,
18237 UnsupportedParameterField,
18239 Other,
18242}
18243
18244impl<'de> ::serde::de::Deserialize<'de> for SharedLinkError {
18245 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18246 use serde::de::{self, MapAccess, Visitor};
18248 struct EnumVisitor;
18249 impl<'de> Visitor<'de> for EnumVisitor {
18250 type Value = SharedLinkError;
18251 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18252 f.write_str("a SharedLinkError structure")
18253 }
18254 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18255 let tag: &str = match map.next_key()? {
18256 Some(".tag") => map.next_value()?,
18257 _ => return Err(de::Error::missing_field(".tag"))
18258 };
18259 let value = match tag {
18260 "shared_link_not_found" => SharedLinkError::SharedLinkNotFound,
18261 "shared_link_access_denied" => SharedLinkError::SharedLinkAccessDenied,
18262 "unsupported_link_type" => SharedLinkError::UnsupportedLinkType,
18263 "unsupported_parameter_field" => SharedLinkError::UnsupportedParameterField,
18264 _ => SharedLinkError::Other,
18265 };
18266 crate::eat_json_fields(&mut map)?;
18267 Ok(value)
18268 }
18269 }
18270 const VARIANTS: &[&str] = &["shared_link_not_found",
18271 "shared_link_access_denied",
18272 "unsupported_link_type",
18273 "unsupported_parameter_field",
18274 "other"];
18275 deserializer.deserialize_struct("SharedLinkError", VARIANTS, EnumVisitor)
18276 }
18277}
18278
18279impl ::serde::ser::Serialize for SharedLinkError {
18280 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18281 use serde::ser::SerializeStruct;
18283 match self {
18284 SharedLinkError::SharedLinkNotFound => {
18285 let mut s = serializer.serialize_struct("SharedLinkError", 1)?;
18287 s.serialize_field(".tag", "shared_link_not_found")?;
18288 s.end()
18289 }
18290 SharedLinkError::SharedLinkAccessDenied => {
18291 let mut s = serializer.serialize_struct("SharedLinkError", 1)?;
18293 s.serialize_field(".tag", "shared_link_access_denied")?;
18294 s.end()
18295 }
18296 SharedLinkError::UnsupportedLinkType => {
18297 let mut s = serializer.serialize_struct("SharedLinkError", 1)?;
18299 s.serialize_field(".tag", "unsupported_link_type")?;
18300 s.end()
18301 }
18302 SharedLinkError::UnsupportedParameterField => {
18303 let mut s = serializer.serialize_struct("SharedLinkError", 1)?;
18305 s.serialize_field(".tag", "unsupported_parameter_field")?;
18306 s.end()
18307 }
18308 SharedLinkError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18309 }
18310 }
18311}
18312
18313impl ::std::error::Error for SharedLinkError {
18314}
18315
18316impl ::std::fmt::Display for SharedLinkError {
18317 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18318 match self {
18319 SharedLinkError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
18320 SharedLinkError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
18321 SharedLinkError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."),
18322 _ => write!(f, "{:?}", *self),
18323 }
18324 }
18325}
18326
18327#[derive(Debug, Clone, PartialEq, Eq)]
18329#[non_exhaustive] pub enum SharedLinkMetadata {
18331 File(FileLinkMetadata),
18332 Folder(FolderLinkMetadata),
18333 Other,
18336}
18337
18338impl<'de> ::serde::de::Deserialize<'de> for SharedLinkMetadata {
18339 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18340 use serde::de::{self, MapAccess, Visitor};
18342 struct EnumVisitor;
18343 impl<'de> Visitor<'de> for EnumVisitor {
18344 type Value = SharedLinkMetadata;
18345 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18346 f.write_str("a SharedLinkMetadata structure")
18347 }
18348 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18349 let tag = match map.next_key()? {
18350 Some(".tag") => map.next_value()?,
18351 _ => return Err(de::Error::missing_field(".tag"))
18352 };
18353 match tag {
18354 "file" => Ok(SharedLinkMetadata::File(FileLinkMetadata::internal_deserialize(map)?)),
18355 "folder" => Ok(SharedLinkMetadata::Folder(FolderLinkMetadata::internal_deserialize(map)?)),
18356 _ => {
18357 crate::eat_json_fields(&mut map)?;
18358 Ok(SharedLinkMetadata::Other)
18359 }
18360 }
18361 }
18362 }
18363 const VARIANTS: &[&str] = &["file",
18364 "folder"];
18365 deserializer.deserialize_struct("SharedLinkMetadata", VARIANTS, EnumVisitor)
18366 }
18367}
18368
18369impl ::serde::ser::Serialize for SharedLinkMetadata {
18370 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18371 use serde::ser::SerializeStruct;
18373 match self {
18374 SharedLinkMetadata::File(x) => {
18375 let mut s = serializer.serialize_struct("SharedLinkMetadata", 13)?;
18376 s.serialize_field(".tag", "file")?;
18377 x.internal_serialize::<S>(&mut s)?;
18378 s.end()
18379 }
18380 SharedLinkMetadata::Folder(x) => {
18381 let mut s = serializer.serialize_struct("SharedLinkMetadata", 9)?;
18382 s.serialize_field(".tag", "folder")?;
18383 x.internal_serialize::<S>(&mut s)?;
18384 s.end()
18385 }
18386 SharedLinkMetadata::Other => Err(::serde::ser::Error::custom("cannot serialize unknown variant"))
18387 }
18388 }
18389}
18390
18391#[derive(Debug, Clone, PartialEq, Eq)]
18393#[non_exhaustive] pub enum SharedLinkMetadataError {
18395 SharedLinkNotFound,
18397 SharedLinkAccessDenied,
18399 UnsupportedLinkType,
18401 UnsupportedParameterField,
18403 Other,
18406}
18407
18408impl<'de> ::serde::de::Deserialize<'de> for SharedLinkMetadataError {
18409 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18410 use serde::de::{self, MapAccess, Visitor};
18412 struct EnumVisitor;
18413 impl<'de> Visitor<'de> for EnumVisitor {
18414 type Value = SharedLinkMetadataError;
18415 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18416 f.write_str("a SharedLinkMetadataError structure")
18417 }
18418 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18419 let tag: &str = match map.next_key()? {
18420 Some(".tag") => map.next_value()?,
18421 _ => return Err(de::Error::missing_field(".tag"))
18422 };
18423 let value = match tag {
18424 "shared_link_not_found" => SharedLinkMetadataError::SharedLinkNotFound,
18425 "shared_link_access_denied" => SharedLinkMetadataError::SharedLinkAccessDenied,
18426 "unsupported_link_type" => SharedLinkMetadataError::UnsupportedLinkType,
18427 "unsupported_parameter_field" => SharedLinkMetadataError::UnsupportedParameterField,
18428 _ => SharedLinkMetadataError::Other,
18429 };
18430 crate::eat_json_fields(&mut map)?;
18431 Ok(value)
18432 }
18433 }
18434 const VARIANTS: &[&str] = &["shared_link_not_found",
18435 "shared_link_access_denied",
18436 "unsupported_link_type",
18437 "unsupported_parameter_field",
18438 "other"];
18439 deserializer.deserialize_struct("SharedLinkMetadataError", VARIANTS, EnumVisitor)
18440 }
18441}
18442
18443impl ::serde::ser::Serialize for SharedLinkMetadataError {
18444 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18445 use serde::ser::SerializeStruct;
18447 match self {
18448 SharedLinkMetadataError::SharedLinkNotFound => {
18449 let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?;
18451 s.serialize_field(".tag", "shared_link_not_found")?;
18452 s.end()
18453 }
18454 SharedLinkMetadataError::SharedLinkAccessDenied => {
18455 let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?;
18457 s.serialize_field(".tag", "shared_link_access_denied")?;
18458 s.end()
18459 }
18460 SharedLinkMetadataError::UnsupportedLinkType => {
18461 let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?;
18463 s.serialize_field(".tag", "unsupported_link_type")?;
18464 s.end()
18465 }
18466 SharedLinkMetadataError::UnsupportedParameterField => {
18467 let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?;
18469 s.serialize_field(".tag", "unsupported_parameter_field")?;
18470 s.end()
18471 }
18472 SharedLinkMetadataError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18473 }
18474 }
18475}
18476
18477impl ::std::error::Error for SharedLinkMetadataError {
18478}
18479
18480impl ::std::fmt::Display for SharedLinkMetadataError {
18481 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18482 match self {
18483 SharedLinkMetadataError::SharedLinkNotFound => f.write_str("The shared link wasn't found."),
18484 SharedLinkMetadataError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."),
18485 SharedLinkMetadataError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."),
18486 _ => write!(f, "{:?}", *self),
18487 }
18488 }
18489}
18490
18491impl From<SharedLinkError> for SharedLinkMetadataError {
18493 fn from(parent: SharedLinkError) -> Self {
18494 match parent {
18495 SharedLinkError::SharedLinkNotFound => SharedLinkMetadataError::SharedLinkNotFound,
18496 SharedLinkError::SharedLinkAccessDenied => SharedLinkMetadataError::SharedLinkAccessDenied,
18497 SharedLinkError::UnsupportedLinkType => SharedLinkMetadataError::UnsupportedLinkType,
18498 SharedLinkError::UnsupportedParameterField => SharedLinkMetadataError::UnsupportedParameterField,
18499 SharedLinkError::Other => SharedLinkMetadataError::Other,
18500 }
18501 }
18502}
18503#[derive(Debug, Clone, PartialEq, Eq)]
18505#[non_exhaustive] pub enum SharedLinkPolicy {
18507 Anyone,
18509 #[deprecated]
18511 Team,
18512 Members,
18514 Other,
18517}
18518
18519impl<'de> ::serde::de::Deserialize<'de> for SharedLinkPolicy {
18520 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18521 use serde::de::{self, MapAccess, Visitor};
18523 struct EnumVisitor;
18524 impl<'de> Visitor<'de> for EnumVisitor {
18525 type Value = SharedLinkPolicy;
18526 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18527 f.write_str("a SharedLinkPolicy structure")
18528 }
18529 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18530 let tag: &str = match map.next_key()? {
18531 Some(".tag") => map.next_value()?,
18532 _ => return Err(de::Error::missing_field(".tag"))
18533 };
18534 let value = match tag {
18535 "anyone" => SharedLinkPolicy::Anyone,
18536 #[allow(deprecated)]
18537 "team" => SharedLinkPolicy::Team,
18538 "members" => SharedLinkPolicy::Members,
18539 _ => SharedLinkPolicy::Other,
18540 };
18541 crate::eat_json_fields(&mut map)?;
18542 Ok(value)
18543 }
18544 }
18545 const VARIANTS: &[&str] = &["anyone",
18546 "team",
18547 "members",
18548 "other"];
18549 deserializer.deserialize_struct("SharedLinkPolicy", VARIANTS, EnumVisitor)
18550 }
18551}
18552
18553impl ::serde::ser::Serialize for SharedLinkPolicy {
18554 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18555 use serde::ser::SerializeStruct;
18557 match self {
18558 SharedLinkPolicy::Anyone => {
18559 let mut s = serializer.serialize_struct("SharedLinkPolicy", 1)?;
18561 s.serialize_field(".tag", "anyone")?;
18562 s.end()
18563 }
18564 #[allow(deprecated)]
18565 SharedLinkPolicy::Team => {
18566 let mut s = serializer.serialize_struct("SharedLinkPolicy", 1)?;
18568 s.serialize_field(".tag", "team")?;
18569 s.end()
18570 }
18571 SharedLinkPolicy::Members => {
18572 let mut s = serializer.serialize_struct("SharedLinkPolicy", 1)?;
18574 s.serialize_field(".tag", "members")?;
18575 s.end()
18576 }
18577 SharedLinkPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18578 }
18579 }
18580}
18581
18582#[derive(Debug, Clone, PartialEq, Eq, Default)]
18583#[non_exhaustive] pub struct SharedLinkSettings {
18585 pub require_password: Option<bool>,
18587 pub link_password: Option<String>,
18589 pub expires: Option<crate::types::common::DropboxTimestamp>,
18591 pub audience: Option<LinkAudience>,
18596 pub access: Option<RequestedLinkAccessLevel>,
18599 #[deprecated]
18601 pub requested_visibility: Option<RequestedVisibility>,
18602 pub allow_download: Option<bool>,
18604}
18605
18606impl SharedLinkSettings {
18607 pub fn with_require_password(mut self, value: bool) -> Self {
18608 self.require_password = Some(value);
18609 self
18610 }
18611
18612 pub fn with_link_password(mut self, value: String) -> Self {
18613 self.link_password = Some(value);
18614 self
18615 }
18616
18617 pub fn with_expires(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
18618 self.expires = Some(value);
18619 self
18620 }
18621
18622 pub fn with_audience(mut self, value: LinkAudience) -> Self {
18623 self.audience = Some(value);
18624 self
18625 }
18626
18627 pub fn with_access(mut self, value: RequestedLinkAccessLevel) -> Self {
18628 self.access = Some(value);
18629 self
18630 }
18631
18632 #[deprecated]
18633 #[allow(deprecated)]
18634 pub fn with_requested_visibility(mut self, value: RequestedVisibility) -> Self {
18635 self.requested_visibility = Some(value);
18636 self
18637 }
18638
18639 pub fn with_allow_download(mut self, value: bool) -> Self {
18640 self.allow_download = Some(value);
18641 self
18642 }
18643}
18644
18645const SHARED_LINK_SETTINGS_FIELDS: &[&str] = &["require_password",
18646 "link_password",
18647 "expires",
18648 "audience",
18649 "access",
18650 "requested_visibility",
18651 "allow_download"];
18652impl SharedLinkSettings {
18653 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
18655 mut map: V,
18656 ) -> Result<SharedLinkSettings, V::Error> {
18657 let mut field_require_password = None;
18658 let mut field_link_password = None;
18659 let mut field_expires = None;
18660 let mut field_audience = None;
18661 let mut field_access = None;
18662 let mut field_requested_visibility = None;
18663 let mut field_allow_download = None;
18664 while let Some(key) = map.next_key::<&str>()? {
18665 match key {
18666 "require_password" => {
18667 if field_require_password.is_some() {
18668 return Err(::serde::de::Error::duplicate_field("require_password"));
18669 }
18670 field_require_password = Some(map.next_value()?);
18671 }
18672 "link_password" => {
18673 if field_link_password.is_some() {
18674 return Err(::serde::de::Error::duplicate_field("link_password"));
18675 }
18676 field_link_password = Some(map.next_value()?);
18677 }
18678 "expires" => {
18679 if field_expires.is_some() {
18680 return Err(::serde::de::Error::duplicate_field("expires"));
18681 }
18682 field_expires = Some(map.next_value()?);
18683 }
18684 "audience" => {
18685 if field_audience.is_some() {
18686 return Err(::serde::de::Error::duplicate_field("audience"));
18687 }
18688 field_audience = Some(map.next_value()?);
18689 }
18690 "access" => {
18691 if field_access.is_some() {
18692 return Err(::serde::de::Error::duplicate_field("access"));
18693 }
18694 field_access = Some(map.next_value()?);
18695 }
18696 "requested_visibility" => {
18697 if field_requested_visibility.is_some() {
18698 return Err(::serde::de::Error::duplicate_field("requested_visibility"));
18699 }
18700 field_requested_visibility = Some(map.next_value()?);
18701 }
18702 "allow_download" => {
18703 if field_allow_download.is_some() {
18704 return Err(::serde::de::Error::duplicate_field("allow_download"));
18705 }
18706 field_allow_download = Some(map.next_value()?);
18707 }
18708 _ => {
18709 map.next_value::<::serde_json::Value>()?;
18711 }
18712 }
18713 }
18714 let result = SharedLinkSettings {
18715 require_password: field_require_password.and_then(Option::flatten),
18716 link_password: field_link_password.and_then(Option::flatten),
18717 expires: field_expires.and_then(Option::flatten),
18718 audience: field_audience.and_then(Option::flatten),
18719 access: field_access.and_then(Option::flatten),
18720 #[allow(deprecated)] requested_visibility: field_requested_visibility.and_then(Option::flatten),
18721 allow_download: field_allow_download.and_then(Option::flatten),
18722 };
18723 Ok(result)
18724 }
18725
18726 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
18727 &self,
18728 s: &mut S::SerializeStruct,
18729 ) -> Result<(), S::Error> {
18730 use serde::ser::SerializeStruct;
18731 if let Some(val) = &self.require_password {
18732 s.serialize_field("require_password", val)?;
18733 }
18734 if let Some(val) = &self.link_password {
18735 s.serialize_field("link_password", val)?;
18736 }
18737 if let Some(val) = &self.expires {
18738 s.serialize_field("expires", val)?;
18739 }
18740 if let Some(val) = &self.audience {
18741 s.serialize_field("audience", val)?;
18742 }
18743 if let Some(val) = &self.access {
18744 s.serialize_field("access", val)?;
18745 }
18746 #[allow(deprecated)]
18747 if let Some(val) = &self.requested_visibility {
18748 s.serialize_field("requested_visibility", val)?;
18749 }
18750 if let Some(val) = &self.allow_download {
18751 s.serialize_field("allow_download", val)?;
18752 }
18753 Ok(())
18754 }
18755}
18756
18757impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettings {
18758 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18759 use serde::de::{MapAccess, Visitor};
18761 struct StructVisitor;
18762 impl<'de> Visitor<'de> for StructVisitor {
18763 type Value = SharedLinkSettings;
18764 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18765 f.write_str("a SharedLinkSettings struct")
18766 }
18767 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
18768 SharedLinkSettings::internal_deserialize(map)
18769 }
18770 }
18771 deserializer.deserialize_struct("SharedLinkSettings", SHARED_LINK_SETTINGS_FIELDS, StructVisitor)
18772 }
18773}
18774
18775impl ::serde::ser::Serialize for SharedLinkSettings {
18776 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18777 use serde::ser::SerializeStruct;
18779 let mut s = serializer.serialize_struct("SharedLinkSettings", 7)?;
18780 self.internal_serialize::<S>(&mut s)?;
18781 s.end()
18782 }
18783}
18784
18785#[derive(Debug, Clone, PartialEq, Eq)]
18786pub enum SharedLinkSettingsError {
18787 InvalidSettings,
18792 NotAuthorized,
18797}
18798
18799impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsError {
18800 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18801 use serde::de::{self, MapAccess, Visitor};
18803 struct EnumVisitor;
18804 impl<'de> Visitor<'de> for EnumVisitor {
18805 type Value = SharedLinkSettingsError;
18806 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18807 f.write_str("a SharedLinkSettingsError structure")
18808 }
18809 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18810 let tag: &str = match map.next_key()? {
18811 Some(".tag") => map.next_value()?,
18812 _ => return Err(de::Error::missing_field(".tag"))
18813 };
18814 let value = match tag {
18815 "invalid_settings" => SharedLinkSettingsError::InvalidSettings,
18816 "not_authorized" => SharedLinkSettingsError::NotAuthorized,
18817 _ => return Err(de::Error::unknown_variant(tag, VARIANTS))
18818 };
18819 crate::eat_json_fields(&mut map)?;
18820 Ok(value)
18821 }
18822 }
18823 const VARIANTS: &[&str] = &["invalid_settings",
18824 "not_authorized"];
18825 deserializer.deserialize_struct("SharedLinkSettingsError", VARIANTS, EnumVisitor)
18826 }
18827}
18828
18829impl ::serde::ser::Serialize for SharedLinkSettingsError {
18830 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18831 use serde::ser::SerializeStruct;
18833 match self {
18834 SharedLinkSettingsError::InvalidSettings => {
18835 let mut s = serializer.serialize_struct("SharedLinkSettingsError", 1)?;
18837 s.serialize_field(".tag", "invalid_settings")?;
18838 s.end()
18839 }
18840 SharedLinkSettingsError::NotAuthorized => {
18841 let mut s = serializer.serialize_struct("SharedLinkSettingsError", 1)?;
18843 s.serialize_field(".tag", "not_authorized")?;
18844 s.end()
18845 }
18846 }
18847 }
18848}
18849
18850impl ::std::error::Error for SharedLinkSettingsError {
18851}
18852
18853impl ::std::fmt::Display for SharedLinkSettingsError {
18854 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18855 write!(f, "{:?}", *self)
18856 }
18857}
18858
18859#[derive(Debug, Clone, PartialEq, Eq)]
18861#[non_exhaustive] pub enum SharingFileAccessError {
18863 NoPermission,
18865 InvalidFile,
18867 IsFolder,
18869 InsidePublicFolder,
18871 InsideOsxPackage,
18873 Other,
18876}
18877
18878impl<'de> ::serde::de::Deserialize<'de> for SharingFileAccessError {
18879 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18880 use serde::de::{self, MapAccess, Visitor};
18882 struct EnumVisitor;
18883 impl<'de> Visitor<'de> for EnumVisitor {
18884 type Value = SharingFileAccessError;
18885 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18886 f.write_str("a SharingFileAccessError structure")
18887 }
18888 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18889 let tag: &str = match map.next_key()? {
18890 Some(".tag") => map.next_value()?,
18891 _ => return Err(de::Error::missing_field(".tag"))
18892 };
18893 let value = match tag {
18894 "no_permission" => SharingFileAccessError::NoPermission,
18895 "invalid_file" => SharingFileAccessError::InvalidFile,
18896 "is_folder" => SharingFileAccessError::IsFolder,
18897 "inside_public_folder" => SharingFileAccessError::InsidePublicFolder,
18898 "inside_osx_package" => SharingFileAccessError::InsideOsxPackage,
18899 _ => SharingFileAccessError::Other,
18900 };
18901 crate::eat_json_fields(&mut map)?;
18902 Ok(value)
18903 }
18904 }
18905 const VARIANTS: &[&str] = &["no_permission",
18906 "invalid_file",
18907 "is_folder",
18908 "inside_public_folder",
18909 "inside_osx_package",
18910 "other"];
18911 deserializer.deserialize_struct("SharingFileAccessError", VARIANTS, EnumVisitor)
18912 }
18913}
18914
18915impl ::serde::ser::Serialize for SharingFileAccessError {
18916 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
18917 use serde::ser::SerializeStruct;
18919 match self {
18920 SharingFileAccessError::NoPermission => {
18921 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
18923 s.serialize_field(".tag", "no_permission")?;
18924 s.end()
18925 }
18926 SharingFileAccessError::InvalidFile => {
18927 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
18929 s.serialize_field(".tag", "invalid_file")?;
18930 s.end()
18931 }
18932 SharingFileAccessError::IsFolder => {
18933 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
18935 s.serialize_field(".tag", "is_folder")?;
18936 s.end()
18937 }
18938 SharingFileAccessError::InsidePublicFolder => {
18939 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
18941 s.serialize_field(".tag", "inside_public_folder")?;
18942 s.end()
18943 }
18944 SharingFileAccessError::InsideOsxPackage => {
18945 let mut s = serializer.serialize_struct("SharingFileAccessError", 1)?;
18947 s.serialize_field(".tag", "inside_osx_package")?;
18948 s.end()
18949 }
18950 SharingFileAccessError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
18951 }
18952 }
18953}
18954
18955impl ::std::error::Error for SharingFileAccessError {
18956}
18957
18958impl ::std::fmt::Display for SharingFileAccessError {
18959 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18960 match self {
18961 SharingFileAccessError::NoPermission => f.write_str("Current user does not have sufficient privileges to perform the desired action."),
18962 SharingFileAccessError::InvalidFile => f.write_str("File specified was not found."),
18963 SharingFileAccessError::IsFolder => f.write_str("A folder can't be shared this way. Use folder sharing or a shared link instead."),
18964 SharingFileAccessError::InsidePublicFolder => f.write_str("A file inside a public folder can't be shared this way. Use a public link instead."),
18965 SharingFileAccessError::InsideOsxPackage => f.write_str("A Mac OS X package can't be shared this way. Use a shared link instead."),
18966 _ => write!(f, "{:?}", *self),
18967 }
18968 }
18969}
18970
18971#[derive(Debug, Clone, PartialEq, Eq)]
18973#[non_exhaustive] pub enum SharingUserError {
18975 EmailUnverified,
18979 Other,
18982}
18983
18984impl<'de> ::serde::de::Deserialize<'de> for SharingUserError {
18985 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
18986 use serde::de::{self, MapAccess, Visitor};
18988 struct EnumVisitor;
18989 impl<'de> Visitor<'de> for EnumVisitor {
18990 type Value = SharingUserError;
18991 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18992 f.write_str("a SharingUserError structure")
18993 }
18994 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
18995 let tag: &str = match map.next_key()? {
18996 Some(".tag") => map.next_value()?,
18997 _ => return Err(de::Error::missing_field(".tag"))
18998 };
18999 let value = match tag {
19000 "email_unverified" => SharingUserError::EmailUnverified,
19001 _ => SharingUserError::Other,
19002 };
19003 crate::eat_json_fields(&mut map)?;
19004 Ok(value)
19005 }
19006 }
19007 const VARIANTS: &[&str] = &["email_unverified",
19008 "other"];
19009 deserializer.deserialize_struct("SharingUserError", VARIANTS, EnumVisitor)
19010 }
19011}
19012
19013impl ::serde::ser::Serialize for SharingUserError {
19014 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19015 use serde::ser::SerializeStruct;
19017 match self {
19018 SharingUserError::EmailUnverified => {
19019 let mut s = serializer.serialize_struct("SharingUserError", 1)?;
19021 s.serialize_field(".tag", "email_unverified")?;
19022 s.end()
19023 }
19024 SharingUserError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
19025 }
19026 }
19027}
19028
19029impl ::std::error::Error for SharingUserError {
19030}
19031
19032impl ::std::fmt::Display for SharingUserError {
19033 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19034 write!(f, "{:?}", *self)
19035 }
19036}
19037
19038#[derive(Debug, Clone, PartialEq, Eq)]
19040#[non_exhaustive] pub struct TeamMemberInfo {
19042 pub team_info: TeamInfo,
19044 pub display_name: String,
19046 pub member_id: Option<String>,
19049}
19050
19051impl TeamMemberInfo {
19052 pub fn new(team_info: TeamInfo, display_name: String) -> Self {
19053 TeamMemberInfo {
19054 team_info,
19055 display_name,
19056 member_id: None,
19057 }
19058 }
19059
19060 pub fn with_member_id(mut self, value: String) -> Self {
19061 self.member_id = Some(value);
19062 self
19063 }
19064}
19065
19066const TEAM_MEMBER_INFO_FIELDS: &[&str] = &["team_info",
19067 "display_name",
19068 "member_id"];
19069impl TeamMemberInfo {
19070 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19071 map: V,
19072 ) -> Result<TeamMemberInfo, V::Error> {
19073 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19074 }
19075
19076 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19077 mut map: V,
19078 optional: bool,
19079 ) -> Result<Option<TeamMemberInfo>, V::Error> {
19080 let mut field_team_info = None;
19081 let mut field_display_name = None;
19082 let mut field_member_id = None;
19083 let mut nothing = true;
19084 while let Some(key) = map.next_key::<&str>()? {
19085 nothing = false;
19086 match key {
19087 "team_info" => {
19088 if field_team_info.is_some() {
19089 return Err(::serde::de::Error::duplicate_field("team_info"));
19090 }
19091 field_team_info = Some(map.next_value()?);
19092 }
19093 "display_name" => {
19094 if field_display_name.is_some() {
19095 return Err(::serde::de::Error::duplicate_field("display_name"));
19096 }
19097 field_display_name = Some(map.next_value()?);
19098 }
19099 "member_id" => {
19100 if field_member_id.is_some() {
19101 return Err(::serde::de::Error::duplicate_field("member_id"));
19102 }
19103 field_member_id = Some(map.next_value()?);
19104 }
19105 _ => {
19106 map.next_value::<::serde_json::Value>()?;
19108 }
19109 }
19110 }
19111 if optional && nothing {
19112 return Ok(None);
19113 }
19114 let result = TeamMemberInfo {
19115 team_info: field_team_info.ok_or_else(|| ::serde::de::Error::missing_field("team_info"))?,
19116 display_name: field_display_name.ok_or_else(|| ::serde::de::Error::missing_field("display_name"))?,
19117 member_id: field_member_id.and_then(Option::flatten),
19118 };
19119 Ok(Some(result))
19120 }
19121
19122 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19123 &self,
19124 s: &mut S::SerializeStruct,
19125 ) -> Result<(), S::Error> {
19126 use serde::ser::SerializeStruct;
19127 s.serialize_field("team_info", &self.team_info)?;
19128 s.serialize_field("display_name", &self.display_name)?;
19129 if let Some(val) = &self.member_id {
19130 s.serialize_field("member_id", val)?;
19131 }
19132 Ok(())
19133 }
19134}
19135
19136impl<'de> ::serde::de::Deserialize<'de> for TeamMemberInfo {
19137 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19138 use serde::de::{MapAccess, Visitor};
19140 struct StructVisitor;
19141 impl<'de> Visitor<'de> for StructVisitor {
19142 type Value = TeamMemberInfo;
19143 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19144 f.write_str("a TeamMemberInfo struct")
19145 }
19146 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19147 TeamMemberInfo::internal_deserialize(map)
19148 }
19149 }
19150 deserializer.deserialize_struct("TeamMemberInfo", TEAM_MEMBER_INFO_FIELDS, StructVisitor)
19151 }
19152}
19153
19154impl ::serde::ser::Serialize for TeamMemberInfo {
19155 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19156 use serde::ser::SerializeStruct;
19158 let mut s = serializer.serialize_struct("TeamMemberInfo", 3)?;
19159 self.internal_serialize::<S>(&mut s)?;
19160 s.end()
19161 }
19162}
19163
19164#[derive(Debug, Clone, PartialEq, Eq)]
19165#[non_exhaustive] pub struct TransferFolderArg {
19167 pub shared_folder_id: crate::types::common::SharedFolderId,
19169 pub to_dropbox_id: DropboxId,
19171}
19172
19173impl TransferFolderArg {
19174 pub fn new(
19175 shared_folder_id: crate::types::common::SharedFolderId,
19176 to_dropbox_id: DropboxId,
19177 ) -> Self {
19178 TransferFolderArg {
19179 shared_folder_id,
19180 to_dropbox_id,
19181 }
19182 }
19183}
19184
19185const TRANSFER_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id",
19186 "to_dropbox_id"];
19187impl TransferFolderArg {
19188 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19189 map: V,
19190 ) -> Result<TransferFolderArg, V::Error> {
19191 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19192 }
19193
19194 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19195 mut map: V,
19196 optional: bool,
19197 ) -> Result<Option<TransferFolderArg>, V::Error> {
19198 let mut field_shared_folder_id = None;
19199 let mut field_to_dropbox_id = None;
19200 let mut nothing = true;
19201 while let Some(key) = map.next_key::<&str>()? {
19202 nothing = false;
19203 match key {
19204 "shared_folder_id" => {
19205 if field_shared_folder_id.is_some() {
19206 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
19207 }
19208 field_shared_folder_id = Some(map.next_value()?);
19209 }
19210 "to_dropbox_id" => {
19211 if field_to_dropbox_id.is_some() {
19212 return Err(::serde::de::Error::duplicate_field("to_dropbox_id"));
19213 }
19214 field_to_dropbox_id = Some(map.next_value()?);
19215 }
19216 _ => {
19217 map.next_value::<::serde_json::Value>()?;
19219 }
19220 }
19221 }
19222 if optional && nothing {
19223 return Ok(None);
19224 }
19225 let result = TransferFolderArg {
19226 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
19227 to_dropbox_id: field_to_dropbox_id.ok_or_else(|| ::serde::de::Error::missing_field("to_dropbox_id"))?,
19228 };
19229 Ok(Some(result))
19230 }
19231
19232 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19233 &self,
19234 s: &mut S::SerializeStruct,
19235 ) -> Result<(), S::Error> {
19236 use serde::ser::SerializeStruct;
19237 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
19238 s.serialize_field("to_dropbox_id", &self.to_dropbox_id)?;
19239 Ok(())
19240 }
19241}
19242
19243impl<'de> ::serde::de::Deserialize<'de> for TransferFolderArg {
19244 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19245 use serde::de::{MapAccess, Visitor};
19247 struct StructVisitor;
19248 impl<'de> Visitor<'de> for StructVisitor {
19249 type Value = TransferFolderArg;
19250 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19251 f.write_str("a TransferFolderArg struct")
19252 }
19253 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19254 TransferFolderArg::internal_deserialize(map)
19255 }
19256 }
19257 deserializer.deserialize_struct("TransferFolderArg", TRANSFER_FOLDER_ARG_FIELDS, StructVisitor)
19258 }
19259}
19260
19261impl ::serde::ser::Serialize for TransferFolderArg {
19262 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19263 use serde::ser::SerializeStruct;
19265 let mut s = serializer.serialize_struct("TransferFolderArg", 2)?;
19266 self.internal_serialize::<S>(&mut s)?;
19267 s.end()
19268 }
19269}
19270
19271#[derive(Debug, Clone, PartialEq, Eq)]
19272#[non_exhaustive] pub enum TransferFolderError {
19274 AccessError(SharedFolderAccessError),
19275 InvalidDropboxId,
19277 NewOwnerNotAMember,
19279 NewOwnerUnmounted,
19281 NewOwnerEmailUnverified,
19285 TeamFolder,
19287 NoPermission,
19289 Other,
19292}
19293
19294impl<'de> ::serde::de::Deserialize<'de> for TransferFolderError {
19295 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19296 use serde::de::{self, MapAccess, Visitor};
19298 struct EnumVisitor;
19299 impl<'de> Visitor<'de> for EnumVisitor {
19300 type Value = TransferFolderError;
19301 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19302 f.write_str("a TransferFolderError structure")
19303 }
19304 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
19305 let tag: &str = match map.next_key()? {
19306 Some(".tag") => map.next_value()?,
19307 _ => return Err(de::Error::missing_field(".tag"))
19308 };
19309 let value = match tag {
19310 "access_error" => {
19311 match map.next_key()? {
19312 Some("access_error") => TransferFolderError::AccessError(map.next_value()?),
19313 None => return Err(de::Error::missing_field("access_error")),
19314 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
19315 }
19316 }
19317 "invalid_dropbox_id" => TransferFolderError::InvalidDropboxId,
19318 "new_owner_not_a_member" => TransferFolderError::NewOwnerNotAMember,
19319 "new_owner_unmounted" => TransferFolderError::NewOwnerUnmounted,
19320 "new_owner_email_unverified" => TransferFolderError::NewOwnerEmailUnverified,
19321 "team_folder" => TransferFolderError::TeamFolder,
19322 "no_permission" => TransferFolderError::NoPermission,
19323 _ => TransferFolderError::Other,
19324 };
19325 crate::eat_json_fields(&mut map)?;
19326 Ok(value)
19327 }
19328 }
19329 const VARIANTS: &[&str] = &["access_error",
19330 "invalid_dropbox_id",
19331 "new_owner_not_a_member",
19332 "new_owner_unmounted",
19333 "new_owner_email_unverified",
19334 "team_folder",
19335 "no_permission",
19336 "other"];
19337 deserializer.deserialize_struct("TransferFolderError", VARIANTS, EnumVisitor)
19338 }
19339}
19340
19341impl ::serde::ser::Serialize for TransferFolderError {
19342 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19343 use serde::ser::SerializeStruct;
19345 match self {
19346 TransferFolderError::AccessError(x) => {
19347 let mut s = serializer.serialize_struct("TransferFolderError", 2)?;
19349 s.serialize_field(".tag", "access_error")?;
19350 s.serialize_field("access_error", x)?;
19351 s.end()
19352 }
19353 TransferFolderError::InvalidDropboxId => {
19354 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19356 s.serialize_field(".tag", "invalid_dropbox_id")?;
19357 s.end()
19358 }
19359 TransferFolderError::NewOwnerNotAMember => {
19360 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19362 s.serialize_field(".tag", "new_owner_not_a_member")?;
19363 s.end()
19364 }
19365 TransferFolderError::NewOwnerUnmounted => {
19366 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19368 s.serialize_field(".tag", "new_owner_unmounted")?;
19369 s.end()
19370 }
19371 TransferFolderError::NewOwnerEmailUnverified => {
19372 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19374 s.serialize_field(".tag", "new_owner_email_unverified")?;
19375 s.end()
19376 }
19377 TransferFolderError::TeamFolder => {
19378 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19380 s.serialize_field(".tag", "team_folder")?;
19381 s.end()
19382 }
19383 TransferFolderError::NoPermission => {
19384 let mut s = serializer.serialize_struct("TransferFolderError", 1)?;
19386 s.serialize_field(".tag", "no_permission")?;
19387 s.end()
19388 }
19389 TransferFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
19390 }
19391 }
19392}
19393
19394impl ::std::error::Error for TransferFolderError {
19395 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
19396 match self {
19397 TransferFolderError::AccessError(inner) => Some(inner),
19398 _ => None,
19399 }
19400 }
19401}
19402
19403impl ::std::fmt::Display for TransferFolderError {
19404 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19405 match self {
19406 TransferFolderError::AccessError(inner) => write!(f, "TransferFolderError: {}", inner),
19407 TransferFolderError::NewOwnerNotAMember => f.write_str("The new designated owner is not currently a member of the shared folder."),
19408 TransferFolderError::NewOwnerUnmounted => f.write_str("The new designated owner has not added the folder to their Dropbox."),
19409 TransferFolderError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
19410 TransferFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
19411 _ => write!(f, "{:?}", *self),
19412 }
19413 }
19414}
19415
19416#[derive(Debug, Clone, PartialEq, Eq)]
19417#[non_exhaustive] pub struct UnmountFolderArg {
19419 pub shared_folder_id: crate::types::common::SharedFolderId,
19421}
19422
19423impl UnmountFolderArg {
19424 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
19425 UnmountFolderArg {
19426 shared_folder_id,
19427 }
19428 }
19429}
19430
19431const UNMOUNT_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id"];
19432impl UnmountFolderArg {
19433 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19434 map: V,
19435 ) -> Result<UnmountFolderArg, V::Error> {
19436 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19437 }
19438
19439 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19440 mut map: V,
19441 optional: bool,
19442 ) -> Result<Option<UnmountFolderArg>, V::Error> {
19443 let mut field_shared_folder_id = None;
19444 let mut nothing = true;
19445 while let Some(key) = map.next_key::<&str>()? {
19446 nothing = false;
19447 match key {
19448 "shared_folder_id" => {
19449 if field_shared_folder_id.is_some() {
19450 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
19451 }
19452 field_shared_folder_id = Some(map.next_value()?);
19453 }
19454 _ => {
19455 map.next_value::<::serde_json::Value>()?;
19457 }
19458 }
19459 }
19460 if optional && nothing {
19461 return Ok(None);
19462 }
19463 let result = UnmountFolderArg {
19464 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
19465 };
19466 Ok(Some(result))
19467 }
19468
19469 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19470 &self,
19471 s: &mut S::SerializeStruct,
19472 ) -> Result<(), S::Error> {
19473 use serde::ser::SerializeStruct;
19474 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
19475 Ok(())
19476 }
19477}
19478
19479impl<'de> ::serde::de::Deserialize<'de> for UnmountFolderArg {
19480 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19481 use serde::de::{MapAccess, Visitor};
19483 struct StructVisitor;
19484 impl<'de> Visitor<'de> for StructVisitor {
19485 type Value = UnmountFolderArg;
19486 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19487 f.write_str("a UnmountFolderArg struct")
19488 }
19489 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19490 UnmountFolderArg::internal_deserialize(map)
19491 }
19492 }
19493 deserializer.deserialize_struct("UnmountFolderArg", UNMOUNT_FOLDER_ARG_FIELDS, StructVisitor)
19494 }
19495}
19496
19497impl ::serde::ser::Serialize for UnmountFolderArg {
19498 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19499 use serde::ser::SerializeStruct;
19501 let mut s = serializer.serialize_struct("UnmountFolderArg", 1)?;
19502 self.internal_serialize::<S>(&mut s)?;
19503 s.end()
19504 }
19505}
19506
19507#[derive(Debug, Clone, PartialEq, Eq)]
19508#[non_exhaustive] pub enum UnmountFolderError {
19510 AccessError(SharedFolderAccessError),
19511 NoPermission,
19513 NotUnmountable,
19516 Other,
19519}
19520
19521impl<'de> ::serde::de::Deserialize<'de> for UnmountFolderError {
19522 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19523 use serde::de::{self, MapAccess, Visitor};
19525 struct EnumVisitor;
19526 impl<'de> Visitor<'de> for EnumVisitor {
19527 type Value = UnmountFolderError;
19528 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19529 f.write_str("a UnmountFolderError structure")
19530 }
19531 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
19532 let tag: &str = match map.next_key()? {
19533 Some(".tag") => map.next_value()?,
19534 _ => return Err(de::Error::missing_field(".tag"))
19535 };
19536 let value = match tag {
19537 "access_error" => {
19538 match map.next_key()? {
19539 Some("access_error") => UnmountFolderError::AccessError(map.next_value()?),
19540 None => return Err(de::Error::missing_field("access_error")),
19541 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
19542 }
19543 }
19544 "no_permission" => UnmountFolderError::NoPermission,
19545 "not_unmountable" => UnmountFolderError::NotUnmountable,
19546 _ => UnmountFolderError::Other,
19547 };
19548 crate::eat_json_fields(&mut map)?;
19549 Ok(value)
19550 }
19551 }
19552 const VARIANTS: &[&str] = &["access_error",
19553 "no_permission",
19554 "not_unmountable",
19555 "other"];
19556 deserializer.deserialize_struct("UnmountFolderError", VARIANTS, EnumVisitor)
19557 }
19558}
19559
19560impl ::serde::ser::Serialize for UnmountFolderError {
19561 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19562 use serde::ser::SerializeStruct;
19564 match self {
19565 UnmountFolderError::AccessError(x) => {
19566 let mut s = serializer.serialize_struct("UnmountFolderError", 2)?;
19568 s.serialize_field(".tag", "access_error")?;
19569 s.serialize_field("access_error", x)?;
19570 s.end()
19571 }
19572 UnmountFolderError::NoPermission => {
19573 let mut s = serializer.serialize_struct("UnmountFolderError", 1)?;
19575 s.serialize_field(".tag", "no_permission")?;
19576 s.end()
19577 }
19578 UnmountFolderError::NotUnmountable => {
19579 let mut s = serializer.serialize_struct("UnmountFolderError", 1)?;
19581 s.serialize_field(".tag", "not_unmountable")?;
19582 s.end()
19583 }
19584 UnmountFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
19585 }
19586 }
19587}
19588
19589impl ::std::error::Error for UnmountFolderError {
19590 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
19591 match self {
19592 UnmountFolderError::AccessError(inner) => Some(inner),
19593 _ => None,
19594 }
19595 }
19596}
19597
19598impl ::std::fmt::Display for UnmountFolderError {
19599 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19600 match self {
19601 UnmountFolderError::AccessError(inner) => write!(f, "UnmountFolderError: {}", inner),
19602 UnmountFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
19603 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."),
19604 _ => write!(f, "{:?}", *self),
19605 }
19606 }
19607}
19608
19609#[derive(Debug, Clone, PartialEq, Eq)]
19611#[non_exhaustive] pub struct UnshareFileArg {
19613 pub file: PathOrId,
19615}
19616
19617impl UnshareFileArg {
19618 pub fn new(file: PathOrId) -> Self {
19619 UnshareFileArg {
19620 file,
19621 }
19622 }
19623}
19624
19625const UNSHARE_FILE_ARG_FIELDS: &[&str] = &["file"];
19626impl UnshareFileArg {
19627 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19628 map: V,
19629 ) -> Result<UnshareFileArg, V::Error> {
19630 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19631 }
19632
19633 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19634 mut map: V,
19635 optional: bool,
19636 ) -> Result<Option<UnshareFileArg>, V::Error> {
19637 let mut field_file = None;
19638 let mut nothing = true;
19639 while let Some(key) = map.next_key::<&str>()? {
19640 nothing = false;
19641 match key {
19642 "file" => {
19643 if field_file.is_some() {
19644 return Err(::serde::de::Error::duplicate_field("file"));
19645 }
19646 field_file = Some(map.next_value()?);
19647 }
19648 _ => {
19649 map.next_value::<::serde_json::Value>()?;
19651 }
19652 }
19653 }
19654 if optional && nothing {
19655 return Ok(None);
19656 }
19657 let result = UnshareFileArg {
19658 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
19659 };
19660 Ok(Some(result))
19661 }
19662
19663 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19664 &self,
19665 s: &mut S::SerializeStruct,
19666 ) -> Result<(), S::Error> {
19667 use serde::ser::SerializeStruct;
19668 s.serialize_field("file", &self.file)?;
19669 Ok(())
19670 }
19671}
19672
19673impl<'de> ::serde::de::Deserialize<'de> for UnshareFileArg {
19674 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19675 use serde::de::{MapAccess, Visitor};
19677 struct StructVisitor;
19678 impl<'de> Visitor<'de> for StructVisitor {
19679 type Value = UnshareFileArg;
19680 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19681 f.write_str("a UnshareFileArg struct")
19682 }
19683 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19684 UnshareFileArg::internal_deserialize(map)
19685 }
19686 }
19687 deserializer.deserialize_struct("UnshareFileArg", UNSHARE_FILE_ARG_FIELDS, StructVisitor)
19688 }
19689}
19690
19691impl ::serde::ser::Serialize for UnshareFileArg {
19692 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19693 use serde::ser::SerializeStruct;
19695 let mut s = serializer.serialize_struct("UnshareFileArg", 1)?;
19696 self.internal_serialize::<S>(&mut s)?;
19697 s.end()
19698 }
19699}
19700
19701#[derive(Debug, Clone, PartialEq, Eq)]
19703#[non_exhaustive] pub enum UnshareFileError {
19705 UserError(SharingUserError),
19706 AccessError(SharingFileAccessError),
19707 Other,
19710}
19711
19712impl<'de> ::serde::de::Deserialize<'de> for UnshareFileError {
19713 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19714 use serde::de::{self, MapAccess, Visitor};
19716 struct EnumVisitor;
19717 impl<'de> Visitor<'de> for EnumVisitor {
19718 type Value = UnshareFileError;
19719 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19720 f.write_str("a UnshareFileError structure")
19721 }
19722 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
19723 let tag: &str = match map.next_key()? {
19724 Some(".tag") => map.next_value()?,
19725 _ => return Err(de::Error::missing_field(".tag"))
19726 };
19727 let value = match tag {
19728 "user_error" => {
19729 match map.next_key()? {
19730 Some("user_error") => UnshareFileError::UserError(map.next_value()?),
19731 None => return Err(de::Error::missing_field("user_error")),
19732 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
19733 }
19734 }
19735 "access_error" => {
19736 match map.next_key()? {
19737 Some("access_error") => UnshareFileError::AccessError(map.next_value()?),
19738 None => return Err(de::Error::missing_field("access_error")),
19739 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
19740 }
19741 }
19742 _ => UnshareFileError::Other,
19743 };
19744 crate::eat_json_fields(&mut map)?;
19745 Ok(value)
19746 }
19747 }
19748 const VARIANTS: &[&str] = &["user_error",
19749 "access_error",
19750 "other"];
19751 deserializer.deserialize_struct("UnshareFileError", VARIANTS, EnumVisitor)
19752 }
19753}
19754
19755impl ::serde::ser::Serialize for UnshareFileError {
19756 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19757 use serde::ser::SerializeStruct;
19759 match self {
19760 UnshareFileError::UserError(x) => {
19761 let mut s = serializer.serialize_struct("UnshareFileError", 2)?;
19763 s.serialize_field(".tag", "user_error")?;
19764 s.serialize_field("user_error", x)?;
19765 s.end()
19766 }
19767 UnshareFileError::AccessError(x) => {
19768 let mut s = serializer.serialize_struct("UnshareFileError", 2)?;
19770 s.serialize_field(".tag", "access_error")?;
19771 s.serialize_field("access_error", x)?;
19772 s.end()
19773 }
19774 UnshareFileError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
19775 }
19776 }
19777}
19778
19779impl ::std::error::Error for UnshareFileError {
19780 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
19781 match self {
19782 UnshareFileError::UserError(inner) => Some(inner),
19783 UnshareFileError::AccessError(inner) => Some(inner),
19784 _ => None,
19785 }
19786 }
19787}
19788
19789impl ::std::fmt::Display for UnshareFileError {
19790 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19791 match self {
19792 UnshareFileError::UserError(inner) => write!(f, "UnshareFileError: {}", inner),
19793 UnshareFileError::AccessError(inner) => write!(f, "UnshareFileError: {}", inner),
19794 _ => write!(f, "{:?}", *self),
19795 }
19796 }
19797}
19798
19799#[derive(Debug, Clone, PartialEq, Eq)]
19800#[non_exhaustive] pub struct UnshareFolderArg {
19802 pub shared_folder_id: crate::types::common::SharedFolderId,
19804 pub leave_a_copy: bool,
19808}
19809
19810impl UnshareFolderArg {
19811 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
19812 UnshareFolderArg {
19813 shared_folder_id,
19814 leave_a_copy: false,
19815 }
19816 }
19817
19818 pub fn with_leave_a_copy(mut self, value: bool) -> Self {
19819 self.leave_a_copy = value;
19820 self
19821 }
19822}
19823
19824const UNSHARE_FOLDER_ARG_FIELDS: &[&str] = &["shared_folder_id",
19825 "leave_a_copy"];
19826impl UnshareFolderArg {
19827 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
19828 map: V,
19829 ) -> Result<UnshareFolderArg, V::Error> {
19830 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
19831 }
19832
19833 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
19834 mut map: V,
19835 optional: bool,
19836 ) -> Result<Option<UnshareFolderArg>, V::Error> {
19837 let mut field_shared_folder_id = None;
19838 let mut field_leave_a_copy = None;
19839 let mut nothing = true;
19840 while let Some(key) = map.next_key::<&str>()? {
19841 nothing = false;
19842 match key {
19843 "shared_folder_id" => {
19844 if field_shared_folder_id.is_some() {
19845 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
19846 }
19847 field_shared_folder_id = Some(map.next_value()?);
19848 }
19849 "leave_a_copy" => {
19850 if field_leave_a_copy.is_some() {
19851 return Err(::serde::de::Error::duplicate_field("leave_a_copy"));
19852 }
19853 field_leave_a_copy = Some(map.next_value()?);
19854 }
19855 _ => {
19856 map.next_value::<::serde_json::Value>()?;
19858 }
19859 }
19860 }
19861 if optional && nothing {
19862 return Ok(None);
19863 }
19864 let result = UnshareFolderArg {
19865 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
19866 leave_a_copy: field_leave_a_copy.unwrap_or(false),
19867 };
19868 Ok(Some(result))
19869 }
19870
19871 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
19872 &self,
19873 s: &mut S::SerializeStruct,
19874 ) -> Result<(), S::Error> {
19875 use serde::ser::SerializeStruct;
19876 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
19877 if self.leave_a_copy {
19878 s.serialize_field("leave_a_copy", &self.leave_a_copy)?;
19879 }
19880 Ok(())
19881 }
19882}
19883
19884impl<'de> ::serde::de::Deserialize<'de> for UnshareFolderArg {
19885 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19886 use serde::de::{MapAccess, Visitor};
19888 struct StructVisitor;
19889 impl<'de> Visitor<'de> for StructVisitor {
19890 type Value = UnshareFolderArg;
19891 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19892 f.write_str("a UnshareFolderArg struct")
19893 }
19894 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
19895 UnshareFolderArg::internal_deserialize(map)
19896 }
19897 }
19898 deserializer.deserialize_struct("UnshareFolderArg", UNSHARE_FOLDER_ARG_FIELDS, StructVisitor)
19899 }
19900}
19901
19902impl ::serde::ser::Serialize for UnshareFolderArg {
19903 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19904 use serde::ser::SerializeStruct;
19906 let mut s = serializer.serialize_struct("UnshareFolderArg", 2)?;
19907 self.internal_serialize::<S>(&mut s)?;
19908 s.end()
19909 }
19910}
19911
19912#[derive(Debug, Clone, PartialEq, Eq)]
19913#[non_exhaustive] pub enum UnshareFolderError {
19915 AccessError(SharedFolderAccessError),
19916 TeamFolder,
19918 NoPermission,
19920 TooManyFiles,
19922 Other,
19925}
19926
19927impl<'de> ::serde::de::Deserialize<'de> for UnshareFolderError {
19928 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
19929 use serde::de::{self, MapAccess, Visitor};
19931 struct EnumVisitor;
19932 impl<'de> Visitor<'de> for EnumVisitor {
19933 type Value = UnshareFolderError;
19934 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19935 f.write_str("a UnshareFolderError structure")
19936 }
19937 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
19938 let tag: &str = match map.next_key()? {
19939 Some(".tag") => map.next_value()?,
19940 _ => return Err(de::Error::missing_field(".tag"))
19941 };
19942 let value = match tag {
19943 "access_error" => {
19944 match map.next_key()? {
19945 Some("access_error") => UnshareFolderError::AccessError(map.next_value()?),
19946 None => return Err(de::Error::missing_field("access_error")),
19947 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
19948 }
19949 }
19950 "team_folder" => UnshareFolderError::TeamFolder,
19951 "no_permission" => UnshareFolderError::NoPermission,
19952 "too_many_files" => UnshareFolderError::TooManyFiles,
19953 _ => UnshareFolderError::Other,
19954 };
19955 crate::eat_json_fields(&mut map)?;
19956 Ok(value)
19957 }
19958 }
19959 const VARIANTS: &[&str] = &["access_error",
19960 "team_folder",
19961 "no_permission",
19962 "too_many_files",
19963 "other"];
19964 deserializer.deserialize_struct("UnshareFolderError", VARIANTS, EnumVisitor)
19965 }
19966}
19967
19968impl ::serde::ser::Serialize for UnshareFolderError {
19969 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
19970 use serde::ser::SerializeStruct;
19972 match self {
19973 UnshareFolderError::AccessError(x) => {
19974 let mut s = serializer.serialize_struct("UnshareFolderError", 2)?;
19976 s.serialize_field(".tag", "access_error")?;
19977 s.serialize_field("access_error", x)?;
19978 s.end()
19979 }
19980 UnshareFolderError::TeamFolder => {
19981 let mut s = serializer.serialize_struct("UnshareFolderError", 1)?;
19983 s.serialize_field(".tag", "team_folder")?;
19984 s.end()
19985 }
19986 UnshareFolderError::NoPermission => {
19987 let mut s = serializer.serialize_struct("UnshareFolderError", 1)?;
19989 s.serialize_field(".tag", "no_permission")?;
19990 s.end()
19991 }
19992 UnshareFolderError::TooManyFiles => {
19993 let mut s = serializer.serialize_struct("UnshareFolderError", 1)?;
19995 s.serialize_field(".tag", "too_many_files")?;
19996 s.end()
19997 }
19998 UnshareFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
19999 }
20000 }
20001}
20002
20003impl ::std::error::Error for UnshareFolderError {
20004 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
20005 match self {
20006 UnshareFolderError::AccessError(inner) => Some(inner),
20007 _ => None,
20008 }
20009 }
20010}
20011
20012impl ::std::fmt::Display for UnshareFolderError {
20013 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20014 match self {
20015 UnshareFolderError::AccessError(inner) => write!(f, "UnshareFolderError: {}", inner),
20016 UnshareFolderError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
20017 UnshareFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
20018 UnshareFolderError::TooManyFiles => f.write_str("This shared folder has too many files to be unshared."),
20019 _ => write!(f, "{:?}", *self),
20020 }
20021 }
20022}
20023
20024#[derive(Debug, Clone, PartialEq, Eq)]
20026#[non_exhaustive] pub struct UpdateFileMemberArgs {
20028 pub file: PathOrId,
20030 pub member: MemberSelector,
20032 pub access_level: AccessLevel,
20034}
20035
20036impl UpdateFileMemberArgs {
20037 pub fn new(file: PathOrId, member: MemberSelector, access_level: AccessLevel) -> Self {
20038 UpdateFileMemberArgs {
20039 file,
20040 member,
20041 access_level,
20042 }
20043 }
20044}
20045
20046const UPDATE_FILE_MEMBER_ARGS_FIELDS: &[&str] = &["file",
20047 "member",
20048 "access_level"];
20049impl UpdateFileMemberArgs {
20050 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
20051 map: V,
20052 ) -> Result<UpdateFileMemberArgs, V::Error> {
20053 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
20054 }
20055
20056 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
20057 mut map: V,
20058 optional: bool,
20059 ) -> Result<Option<UpdateFileMemberArgs>, V::Error> {
20060 let mut field_file = None;
20061 let mut field_member = None;
20062 let mut field_access_level = None;
20063 let mut nothing = true;
20064 while let Some(key) = map.next_key::<&str>()? {
20065 nothing = false;
20066 match key {
20067 "file" => {
20068 if field_file.is_some() {
20069 return Err(::serde::de::Error::duplicate_field("file"));
20070 }
20071 field_file = Some(map.next_value()?);
20072 }
20073 "member" => {
20074 if field_member.is_some() {
20075 return Err(::serde::de::Error::duplicate_field("member"));
20076 }
20077 field_member = Some(map.next_value()?);
20078 }
20079 "access_level" => {
20080 if field_access_level.is_some() {
20081 return Err(::serde::de::Error::duplicate_field("access_level"));
20082 }
20083 field_access_level = Some(map.next_value()?);
20084 }
20085 _ => {
20086 map.next_value::<::serde_json::Value>()?;
20088 }
20089 }
20090 }
20091 if optional && nothing {
20092 return Ok(None);
20093 }
20094 let result = UpdateFileMemberArgs {
20095 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
20096 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
20097 access_level: field_access_level.ok_or_else(|| ::serde::de::Error::missing_field("access_level"))?,
20098 };
20099 Ok(Some(result))
20100 }
20101
20102 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
20103 &self,
20104 s: &mut S::SerializeStruct,
20105 ) -> Result<(), S::Error> {
20106 use serde::ser::SerializeStruct;
20107 s.serialize_field("file", &self.file)?;
20108 s.serialize_field("member", &self.member)?;
20109 s.serialize_field("access_level", &self.access_level)?;
20110 Ok(())
20111 }
20112}
20113
20114impl<'de> ::serde::de::Deserialize<'de> for UpdateFileMemberArgs {
20115 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20116 use serde::de::{MapAccess, Visitor};
20118 struct StructVisitor;
20119 impl<'de> Visitor<'de> for StructVisitor {
20120 type Value = UpdateFileMemberArgs;
20121 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20122 f.write_str("a UpdateFileMemberArgs struct")
20123 }
20124 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
20125 UpdateFileMemberArgs::internal_deserialize(map)
20126 }
20127 }
20128 deserializer.deserialize_struct("UpdateFileMemberArgs", UPDATE_FILE_MEMBER_ARGS_FIELDS, StructVisitor)
20129 }
20130}
20131
20132impl ::serde::ser::Serialize for UpdateFileMemberArgs {
20133 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20134 use serde::ser::SerializeStruct;
20136 let mut s = serializer.serialize_struct("UpdateFileMemberArgs", 3)?;
20137 self.internal_serialize::<S>(&mut s)?;
20138 s.end()
20139 }
20140}
20141
20142#[derive(Debug, Clone, PartialEq, Eq)]
20144#[non_exhaustive] pub struct UpdateFilePolicyArg {
20146 pub file: PathOrId,
20148 pub actions: Option<Vec<FileAction>>,
20152 #[deprecated]
20154 pub link_settings: Option<LinkSettings>,
20155 pub viewer_info_policy: Option<ViewerInfoPolicy>,
20157}
20158
20159impl UpdateFilePolicyArg {
20160 pub fn new(file: PathOrId) -> Self {
20161 UpdateFilePolicyArg {
20162 file,
20163 actions: None,
20164 #[allow(deprecated)] link_settings: None,
20165 viewer_info_policy: None,
20166 }
20167 }
20168
20169 pub fn with_actions(mut self, value: Vec<FileAction>) -> Self {
20170 self.actions = Some(value);
20171 self
20172 }
20173
20174 #[deprecated]
20175 #[allow(deprecated)]
20176 pub fn with_link_settings(mut self, value: LinkSettings) -> Self {
20177 self.link_settings = Some(value);
20178 self
20179 }
20180
20181 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
20182 self.viewer_info_policy = Some(value);
20183 self
20184 }
20185}
20186
20187const UPDATE_FILE_POLICY_ARG_FIELDS: &[&str] = &["file",
20188 "actions",
20189 "link_settings",
20190 "viewer_info_policy"];
20191impl UpdateFilePolicyArg {
20192 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
20193 map: V,
20194 ) -> Result<UpdateFilePolicyArg, V::Error> {
20195 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
20196 }
20197
20198 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
20199 mut map: V,
20200 optional: bool,
20201 ) -> Result<Option<UpdateFilePolicyArg>, V::Error> {
20202 let mut field_file = None;
20203 let mut field_actions = None;
20204 let mut field_link_settings = None;
20205 let mut field_viewer_info_policy = None;
20206 let mut nothing = true;
20207 while let Some(key) = map.next_key::<&str>()? {
20208 nothing = false;
20209 match key {
20210 "file" => {
20211 if field_file.is_some() {
20212 return Err(::serde::de::Error::duplicate_field("file"));
20213 }
20214 field_file = Some(map.next_value()?);
20215 }
20216 "actions" => {
20217 if field_actions.is_some() {
20218 return Err(::serde::de::Error::duplicate_field("actions"));
20219 }
20220 field_actions = Some(map.next_value()?);
20221 }
20222 "link_settings" => {
20223 if field_link_settings.is_some() {
20224 return Err(::serde::de::Error::duplicate_field("link_settings"));
20225 }
20226 field_link_settings = Some(map.next_value()?);
20227 }
20228 "viewer_info_policy" => {
20229 if field_viewer_info_policy.is_some() {
20230 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
20231 }
20232 field_viewer_info_policy = Some(map.next_value()?);
20233 }
20234 _ => {
20235 map.next_value::<::serde_json::Value>()?;
20237 }
20238 }
20239 }
20240 if optional && nothing {
20241 return Ok(None);
20242 }
20243 let result = UpdateFilePolicyArg {
20244 file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?,
20245 actions: field_actions.and_then(Option::flatten),
20246 #[allow(deprecated)] link_settings: field_link_settings.and_then(Option::flatten),
20247 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
20248 };
20249 Ok(Some(result))
20250 }
20251
20252 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
20253 &self,
20254 s: &mut S::SerializeStruct,
20255 ) -> Result<(), S::Error> {
20256 use serde::ser::SerializeStruct;
20257 s.serialize_field("file", &self.file)?;
20258 if let Some(val) = &self.actions {
20259 s.serialize_field("actions", val)?;
20260 }
20261 #[allow(deprecated)]
20262 if let Some(val) = &self.link_settings {
20263 s.serialize_field("link_settings", val)?;
20264 }
20265 if let Some(val) = &self.viewer_info_policy {
20266 s.serialize_field("viewer_info_policy", val)?;
20267 }
20268 Ok(())
20269 }
20270}
20271
20272impl<'de> ::serde::de::Deserialize<'de> for UpdateFilePolicyArg {
20273 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20274 use serde::de::{MapAccess, Visitor};
20276 struct StructVisitor;
20277 impl<'de> Visitor<'de> for StructVisitor {
20278 type Value = UpdateFilePolicyArg;
20279 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20280 f.write_str("a UpdateFilePolicyArg struct")
20281 }
20282 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
20283 UpdateFilePolicyArg::internal_deserialize(map)
20284 }
20285 }
20286 deserializer.deserialize_struct("UpdateFilePolicyArg", UPDATE_FILE_POLICY_ARG_FIELDS, StructVisitor)
20287 }
20288}
20289
20290impl ::serde::ser::Serialize for UpdateFilePolicyArg {
20291 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20292 use serde::ser::SerializeStruct;
20294 let mut s = serializer.serialize_struct("UpdateFilePolicyArg", 4)?;
20295 self.internal_serialize::<S>(&mut s)?;
20296 s.end()
20297 }
20298}
20299
20300#[derive(Debug, Clone, PartialEq, Eq)]
20302#[non_exhaustive] pub enum UpdateFilePolicyError {
20304 AccessError(SharingFileAccessError),
20305 InvalidFileSettings,
20307 NoPermission,
20309 Other,
20312}
20313
20314impl<'de> ::serde::de::Deserialize<'de> for UpdateFilePolicyError {
20315 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20316 use serde::de::{self, MapAccess, Visitor};
20318 struct EnumVisitor;
20319 impl<'de> Visitor<'de> for EnumVisitor {
20320 type Value = UpdateFilePolicyError;
20321 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20322 f.write_str("a UpdateFilePolicyError structure")
20323 }
20324 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
20325 let tag: &str = match map.next_key()? {
20326 Some(".tag") => map.next_value()?,
20327 _ => return Err(de::Error::missing_field(".tag"))
20328 };
20329 let value = match tag {
20330 "access_error" => {
20331 match map.next_key()? {
20332 Some("access_error") => UpdateFilePolicyError::AccessError(map.next_value()?),
20333 None => return Err(de::Error::missing_field("access_error")),
20334 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
20335 }
20336 }
20337 "invalid_file_settings" => UpdateFilePolicyError::InvalidFileSettings,
20338 "no_permission" => UpdateFilePolicyError::NoPermission,
20339 _ => UpdateFilePolicyError::Other,
20340 };
20341 crate::eat_json_fields(&mut map)?;
20342 Ok(value)
20343 }
20344 }
20345 const VARIANTS: &[&str] = &["access_error",
20346 "invalid_file_settings",
20347 "no_permission",
20348 "other"];
20349 deserializer.deserialize_struct("UpdateFilePolicyError", VARIANTS, EnumVisitor)
20350 }
20351}
20352
20353impl ::serde::ser::Serialize for UpdateFilePolicyError {
20354 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20355 use serde::ser::SerializeStruct;
20357 match self {
20358 UpdateFilePolicyError::AccessError(x) => {
20359 let mut s = serializer.serialize_struct("UpdateFilePolicyError", 2)?;
20361 s.serialize_field(".tag", "access_error")?;
20362 s.serialize_field("access_error", x)?;
20363 s.end()
20364 }
20365 UpdateFilePolicyError::InvalidFileSettings => {
20366 let mut s = serializer.serialize_struct("UpdateFilePolicyError", 1)?;
20368 s.serialize_field(".tag", "invalid_file_settings")?;
20369 s.end()
20370 }
20371 UpdateFilePolicyError::NoPermission => {
20372 let mut s = serializer.serialize_struct("UpdateFilePolicyError", 1)?;
20374 s.serialize_field(".tag", "no_permission")?;
20375 s.end()
20376 }
20377 UpdateFilePolicyError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
20378 }
20379 }
20380}
20381
20382impl ::std::error::Error for UpdateFilePolicyError {
20383 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
20384 match self {
20385 UpdateFilePolicyError::AccessError(inner) => Some(inner),
20386 _ => None,
20387 }
20388 }
20389}
20390
20391impl ::std::fmt::Display for UpdateFilePolicyError {
20392 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20393 match self {
20394 UpdateFilePolicyError::AccessError(inner) => write!(f, "UpdateFilePolicyError: {}", inner),
20395 UpdateFilePolicyError::InvalidFileSettings => f.write_str("The file settings are invalid."),
20396 UpdateFilePolicyError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
20397 _ => write!(f, "{:?}", *self),
20398 }
20399 }
20400}
20401
20402#[derive(Debug, Clone, PartialEq, Eq)]
20403#[non_exhaustive] pub struct UpdateFolderMemberArg {
20405 pub shared_folder_id: crate::types::common::SharedFolderId,
20407 pub member: MemberSelector,
20410 pub access_level: AccessLevel,
20412}
20413
20414impl UpdateFolderMemberArg {
20415 pub fn new(
20416 shared_folder_id: crate::types::common::SharedFolderId,
20417 member: MemberSelector,
20418 access_level: AccessLevel,
20419 ) -> Self {
20420 UpdateFolderMemberArg {
20421 shared_folder_id,
20422 member,
20423 access_level,
20424 }
20425 }
20426}
20427
20428const UPDATE_FOLDER_MEMBER_ARG_FIELDS: &[&str] = &["shared_folder_id",
20429 "member",
20430 "access_level"];
20431impl UpdateFolderMemberArg {
20432 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
20433 map: V,
20434 ) -> Result<UpdateFolderMemberArg, V::Error> {
20435 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
20436 }
20437
20438 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
20439 mut map: V,
20440 optional: bool,
20441 ) -> Result<Option<UpdateFolderMemberArg>, V::Error> {
20442 let mut field_shared_folder_id = None;
20443 let mut field_member = None;
20444 let mut field_access_level = None;
20445 let mut nothing = true;
20446 while let Some(key) = map.next_key::<&str>()? {
20447 nothing = false;
20448 match key {
20449 "shared_folder_id" => {
20450 if field_shared_folder_id.is_some() {
20451 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
20452 }
20453 field_shared_folder_id = Some(map.next_value()?);
20454 }
20455 "member" => {
20456 if field_member.is_some() {
20457 return Err(::serde::de::Error::duplicate_field("member"));
20458 }
20459 field_member = Some(map.next_value()?);
20460 }
20461 "access_level" => {
20462 if field_access_level.is_some() {
20463 return Err(::serde::de::Error::duplicate_field("access_level"));
20464 }
20465 field_access_level = Some(map.next_value()?);
20466 }
20467 _ => {
20468 map.next_value::<::serde_json::Value>()?;
20470 }
20471 }
20472 }
20473 if optional && nothing {
20474 return Ok(None);
20475 }
20476 let result = UpdateFolderMemberArg {
20477 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
20478 member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?,
20479 access_level: field_access_level.ok_or_else(|| ::serde::de::Error::missing_field("access_level"))?,
20480 };
20481 Ok(Some(result))
20482 }
20483
20484 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
20485 &self,
20486 s: &mut S::SerializeStruct,
20487 ) -> Result<(), S::Error> {
20488 use serde::ser::SerializeStruct;
20489 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
20490 s.serialize_field("member", &self.member)?;
20491 s.serialize_field("access_level", &self.access_level)?;
20492 Ok(())
20493 }
20494}
20495
20496impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderMemberArg {
20497 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20498 use serde::de::{MapAccess, Visitor};
20500 struct StructVisitor;
20501 impl<'de> Visitor<'de> for StructVisitor {
20502 type Value = UpdateFolderMemberArg;
20503 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20504 f.write_str("a UpdateFolderMemberArg struct")
20505 }
20506 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
20507 UpdateFolderMemberArg::internal_deserialize(map)
20508 }
20509 }
20510 deserializer.deserialize_struct("UpdateFolderMemberArg", UPDATE_FOLDER_MEMBER_ARG_FIELDS, StructVisitor)
20511 }
20512}
20513
20514impl ::serde::ser::Serialize for UpdateFolderMemberArg {
20515 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20516 use serde::ser::SerializeStruct;
20518 let mut s = serializer.serialize_struct("UpdateFolderMemberArg", 3)?;
20519 self.internal_serialize::<S>(&mut s)?;
20520 s.end()
20521 }
20522}
20523
20524#[derive(Debug, Clone, PartialEq, Eq)]
20525#[non_exhaustive] pub enum UpdateFolderMemberError {
20527 AccessError(SharedFolderAccessError),
20528 MemberError(SharedFolderMemberError),
20529 NoExplicitAccess(AddFolderMemberError),
20532 InsufficientPlan,
20536 NoPermission,
20538 Other,
20541}
20542
20543impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderMemberError {
20544 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20545 use serde::de::{self, MapAccess, Visitor};
20547 struct EnumVisitor;
20548 impl<'de> Visitor<'de> for EnumVisitor {
20549 type Value = UpdateFolderMemberError;
20550 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20551 f.write_str("a UpdateFolderMemberError structure")
20552 }
20553 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
20554 let tag: &str = match map.next_key()? {
20555 Some(".tag") => map.next_value()?,
20556 _ => return Err(de::Error::missing_field(".tag"))
20557 };
20558 let value = match tag {
20559 "access_error" => {
20560 match map.next_key()? {
20561 Some("access_error") => UpdateFolderMemberError::AccessError(map.next_value()?),
20562 None => return Err(de::Error::missing_field("access_error")),
20563 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
20564 }
20565 }
20566 "member_error" => {
20567 match map.next_key()? {
20568 Some("member_error") => UpdateFolderMemberError::MemberError(map.next_value()?),
20569 None => return Err(de::Error::missing_field("member_error")),
20570 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
20571 }
20572 }
20573 "no_explicit_access" => {
20574 match map.next_key()? {
20575 Some("no_explicit_access") => UpdateFolderMemberError::NoExplicitAccess(map.next_value()?),
20576 None => return Err(de::Error::missing_field("no_explicit_access")),
20577 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
20578 }
20579 }
20580 "insufficient_plan" => UpdateFolderMemberError::InsufficientPlan,
20581 "no_permission" => UpdateFolderMemberError::NoPermission,
20582 _ => UpdateFolderMemberError::Other,
20583 };
20584 crate::eat_json_fields(&mut map)?;
20585 Ok(value)
20586 }
20587 }
20588 const VARIANTS: &[&str] = &["access_error",
20589 "member_error",
20590 "no_explicit_access",
20591 "insufficient_plan",
20592 "no_permission",
20593 "other"];
20594 deserializer.deserialize_struct("UpdateFolderMemberError", VARIANTS, EnumVisitor)
20595 }
20596}
20597
20598impl ::serde::ser::Serialize for UpdateFolderMemberError {
20599 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20600 use serde::ser::SerializeStruct;
20602 match self {
20603 UpdateFolderMemberError::AccessError(x) => {
20604 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 2)?;
20606 s.serialize_field(".tag", "access_error")?;
20607 s.serialize_field("access_error", x)?;
20608 s.end()
20609 }
20610 UpdateFolderMemberError::MemberError(x) => {
20611 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 2)?;
20613 s.serialize_field(".tag", "member_error")?;
20614 s.serialize_field("member_error", x)?;
20615 s.end()
20616 }
20617 UpdateFolderMemberError::NoExplicitAccess(x) => {
20618 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 2)?;
20620 s.serialize_field(".tag", "no_explicit_access")?;
20621 s.serialize_field("no_explicit_access", x)?;
20622 s.end()
20623 }
20624 UpdateFolderMemberError::InsufficientPlan => {
20625 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 1)?;
20627 s.serialize_field(".tag", "insufficient_plan")?;
20628 s.end()
20629 }
20630 UpdateFolderMemberError::NoPermission => {
20631 let mut s = serializer.serialize_struct("UpdateFolderMemberError", 1)?;
20633 s.serialize_field(".tag", "no_permission")?;
20634 s.end()
20635 }
20636 UpdateFolderMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
20637 }
20638 }
20639}
20640
20641impl ::std::error::Error for UpdateFolderMemberError {
20642 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
20643 match self {
20644 UpdateFolderMemberError::AccessError(inner) => Some(inner),
20645 UpdateFolderMemberError::MemberError(inner) => Some(inner),
20646 UpdateFolderMemberError::NoExplicitAccess(inner) => Some(inner),
20647 _ => None,
20648 }
20649 }
20650}
20651
20652impl ::std::fmt::Display for UpdateFolderMemberError {
20653 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20654 match self {
20655 UpdateFolderMemberError::AccessError(inner) => write!(f, "UpdateFolderMemberError: {}", inner),
20656 UpdateFolderMemberError::MemberError(inner) => write!(f, "UpdateFolderMemberError: {}", inner),
20657 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),
20658 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."),
20659 UpdateFolderMemberError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
20660 _ => write!(f, "{:?}", *self),
20661 }
20662 }
20663}
20664
20665#[derive(Debug, Clone, PartialEq, Eq)]
20667#[non_exhaustive] pub struct UpdateFolderPolicyArg {
20669 pub shared_folder_id: crate::types::common::SharedFolderId,
20671 pub member_policy: Option<MemberPolicy>,
20673 pub acl_update_policy: Option<AclUpdatePolicy>,
20675 pub viewer_info_policy: Option<ViewerInfoPolicy>,
20677 pub shared_link_policy: Option<SharedLinkPolicy>,
20680 pub link_settings: Option<LinkSettings>,
20682 pub actions: Option<Vec<FolderAction>>,
20686}
20687
20688impl UpdateFolderPolicyArg {
20689 pub fn new(shared_folder_id: crate::types::common::SharedFolderId) -> Self {
20690 UpdateFolderPolicyArg {
20691 shared_folder_id,
20692 member_policy: None,
20693 acl_update_policy: None,
20694 viewer_info_policy: None,
20695 shared_link_policy: None,
20696 link_settings: None,
20697 actions: None,
20698 }
20699 }
20700
20701 pub fn with_member_policy(mut self, value: MemberPolicy) -> Self {
20702 self.member_policy = Some(value);
20703 self
20704 }
20705
20706 pub fn with_acl_update_policy(mut self, value: AclUpdatePolicy) -> Self {
20707 self.acl_update_policy = Some(value);
20708 self
20709 }
20710
20711 pub fn with_viewer_info_policy(mut self, value: ViewerInfoPolicy) -> Self {
20712 self.viewer_info_policy = Some(value);
20713 self
20714 }
20715
20716 pub fn with_shared_link_policy(mut self, value: SharedLinkPolicy) -> Self {
20717 self.shared_link_policy = Some(value);
20718 self
20719 }
20720
20721 pub fn with_link_settings(mut self, value: LinkSettings) -> Self {
20722 self.link_settings = Some(value);
20723 self
20724 }
20725
20726 pub fn with_actions(mut self, value: Vec<FolderAction>) -> Self {
20727 self.actions = Some(value);
20728 self
20729 }
20730}
20731
20732const UPDATE_FOLDER_POLICY_ARG_FIELDS: &[&str] = &["shared_folder_id",
20733 "member_policy",
20734 "acl_update_policy",
20735 "viewer_info_policy",
20736 "shared_link_policy",
20737 "link_settings",
20738 "actions"];
20739impl UpdateFolderPolicyArg {
20740 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
20741 map: V,
20742 ) -> Result<UpdateFolderPolicyArg, V::Error> {
20743 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
20744 }
20745
20746 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
20747 mut map: V,
20748 optional: bool,
20749 ) -> Result<Option<UpdateFolderPolicyArg>, V::Error> {
20750 let mut field_shared_folder_id = None;
20751 let mut field_member_policy = None;
20752 let mut field_acl_update_policy = None;
20753 let mut field_viewer_info_policy = None;
20754 let mut field_shared_link_policy = None;
20755 let mut field_link_settings = None;
20756 let mut field_actions = None;
20757 let mut nothing = true;
20758 while let Some(key) = map.next_key::<&str>()? {
20759 nothing = false;
20760 match key {
20761 "shared_folder_id" => {
20762 if field_shared_folder_id.is_some() {
20763 return Err(::serde::de::Error::duplicate_field("shared_folder_id"));
20764 }
20765 field_shared_folder_id = Some(map.next_value()?);
20766 }
20767 "member_policy" => {
20768 if field_member_policy.is_some() {
20769 return Err(::serde::de::Error::duplicate_field("member_policy"));
20770 }
20771 field_member_policy = Some(map.next_value()?);
20772 }
20773 "acl_update_policy" => {
20774 if field_acl_update_policy.is_some() {
20775 return Err(::serde::de::Error::duplicate_field("acl_update_policy"));
20776 }
20777 field_acl_update_policy = Some(map.next_value()?);
20778 }
20779 "viewer_info_policy" => {
20780 if field_viewer_info_policy.is_some() {
20781 return Err(::serde::de::Error::duplicate_field("viewer_info_policy"));
20782 }
20783 field_viewer_info_policy = Some(map.next_value()?);
20784 }
20785 "shared_link_policy" => {
20786 if field_shared_link_policy.is_some() {
20787 return Err(::serde::de::Error::duplicate_field("shared_link_policy"));
20788 }
20789 field_shared_link_policy = Some(map.next_value()?);
20790 }
20791 "link_settings" => {
20792 if field_link_settings.is_some() {
20793 return Err(::serde::de::Error::duplicate_field("link_settings"));
20794 }
20795 field_link_settings = Some(map.next_value()?);
20796 }
20797 "actions" => {
20798 if field_actions.is_some() {
20799 return Err(::serde::de::Error::duplicate_field("actions"));
20800 }
20801 field_actions = Some(map.next_value()?);
20802 }
20803 _ => {
20804 map.next_value::<::serde_json::Value>()?;
20806 }
20807 }
20808 }
20809 if optional && nothing {
20810 return Ok(None);
20811 }
20812 let result = UpdateFolderPolicyArg {
20813 shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?,
20814 member_policy: field_member_policy.and_then(Option::flatten),
20815 acl_update_policy: field_acl_update_policy.and_then(Option::flatten),
20816 viewer_info_policy: field_viewer_info_policy.and_then(Option::flatten),
20817 shared_link_policy: field_shared_link_policy.and_then(Option::flatten),
20818 link_settings: field_link_settings.and_then(Option::flatten),
20819 actions: field_actions.and_then(Option::flatten),
20820 };
20821 Ok(Some(result))
20822 }
20823
20824 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
20825 &self,
20826 s: &mut S::SerializeStruct,
20827 ) -> Result<(), S::Error> {
20828 use serde::ser::SerializeStruct;
20829 s.serialize_field("shared_folder_id", &self.shared_folder_id)?;
20830 if let Some(val) = &self.member_policy {
20831 s.serialize_field("member_policy", val)?;
20832 }
20833 if let Some(val) = &self.acl_update_policy {
20834 s.serialize_field("acl_update_policy", val)?;
20835 }
20836 if let Some(val) = &self.viewer_info_policy {
20837 s.serialize_field("viewer_info_policy", val)?;
20838 }
20839 if let Some(val) = &self.shared_link_policy {
20840 s.serialize_field("shared_link_policy", val)?;
20841 }
20842 if let Some(val) = &self.link_settings {
20843 s.serialize_field("link_settings", val)?;
20844 }
20845 if let Some(val) = &self.actions {
20846 s.serialize_field("actions", val)?;
20847 }
20848 Ok(())
20849 }
20850}
20851
20852impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderPolicyArg {
20853 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20854 use serde::de::{MapAccess, Visitor};
20856 struct StructVisitor;
20857 impl<'de> Visitor<'de> for StructVisitor {
20858 type Value = UpdateFolderPolicyArg;
20859 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20860 f.write_str("a UpdateFolderPolicyArg struct")
20861 }
20862 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
20863 UpdateFolderPolicyArg::internal_deserialize(map)
20864 }
20865 }
20866 deserializer.deserialize_struct("UpdateFolderPolicyArg", UPDATE_FOLDER_POLICY_ARG_FIELDS, StructVisitor)
20867 }
20868}
20869
20870impl ::serde::ser::Serialize for UpdateFolderPolicyArg {
20871 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20872 use serde::ser::SerializeStruct;
20874 let mut s = serializer.serialize_struct("UpdateFolderPolicyArg", 7)?;
20875 self.internal_serialize::<S>(&mut s)?;
20876 s.end()
20877 }
20878}
20879
20880#[derive(Debug, Clone, PartialEq, Eq)]
20881#[non_exhaustive] pub enum UpdateFolderPolicyError {
20883 AccessError(SharedFolderAccessError),
20884 NotOnTeam,
20887 TeamPolicyDisallowsMemberPolicy,
20890 DisallowedSharedLinkPolicy,
20893 NoPermission,
20895 TeamFolder,
20897 Other,
20900}
20901
20902impl<'de> ::serde::de::Deserialize<'de> for UpdateFolderPolicyError {
20903 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
20904 use serde::de::{self, MapAccess, Visitor};
20906 struct EnumVisitor;
20907 impl<'de> Visitor<'de> for EnumVisitor {
20908 type Value = UpdateFolderPolicyError;
20909 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20910 f.write_str("a UpdateFolderPolicyError structure")
20911 }
20912 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
20913 let tag: &str = match map.next_key()? {
20914 Some(".tag") => map.next_value()?,
20915 _ => return Err(de::Error::missing_field(".tag"))
20916 };
20917 let value = match tag {
20918 "access_error" => {
20919 match map.next_key()? {
20920 Some("access_error") => UpdateFolderPolicyError::AccessError(map.next_value()?),
20921 None => return Err(de::Error::missing_field("access_error")),
20922 _ => return Err(de::Error::unknown_field(tag, VARIANTS))
20923 }
20924 }
20925 "not_on_team" => UpdateFolderPolicyError::NotOnTeam,
20926 "team_policy_disallows_member_policy" => UpdateFolderPolicyError::TeamPolicyDisallowsMemberPolicy,
20927 "disallowed_shared_link_policy" => UpdateFolderPolicyError::DisallowedSharedLinkPolicy,
20928 "no_permission" => UpdateFolderPolicyError::NoPermission,
20929 "team_folder" => UpdateFolderPolicyError::TeamFolder,
20930 _ => UpdateFolderPolicyError::Other,
20931 };
20932 crate::eat_json_fields(&mut map)?;
20933 Ok(value)
20934 }
20935 }
20936 const VARIANTS: &[&str] = &["access_error",
20937 "not_on_team",
20938 "team_policy_disallows_member_policy",
20939 "disallowed_shared_link_policy",
20940 "no_permission",
20941 "team_folder",
20942 "other"];
20943 deserializer.deserialize_struct("UpdateFolderPolicyError", VARIANTS, EnumVisitor)
20944 }
20945}
20946
20947impl ::serde::ser::Serialize for UpdateFolderPolicyError {
20948 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20949 use serde::ser::SerializeStruct;
20951 match self {
20952 UpdateFolderPolicyError::AccessError(x) => {
20953 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 2)?;
20955 s.serialize_field(".tag", "access_error")?;
20956 s.serialize_field("access_error", x)?;
20957 s.end()
20958 }
20959 UpdateFolderPolicyError::NotOnTeam => {
20960 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
20962 s.serialize_field(".tag", "not_on_team")?;
20963 s.end()
20964 }
20965 UpdateFolderPolicyError::TeamPolicyDisallowsMemberPolicy => {
20966 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
20968 s.serialize_field(".tag", "team_policy_disallows_member_policy")?;
20969 s.end()
20970 }
20971 UpdateFolderPolicyError::DisallowedSharedLinkPolicy => {
20972 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
20974 s.serialize_field(".tag", "disallowed_shared_link_policy")?;
20975 s.end()
20976 }
20977 UpdateFolderPolicyError::NoPermission => {
20978 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
20980 s.serialize_field(".tag", "no_permission")?;
20981 s.end()
20982 }
20983 UpdateFolderPolicyError::TeamFolder => {
20984 let mut s = serializer.serialize_struct("UpdateFolderPolicyError", 1)?;
20986 s.serialize_field(".tag", "team_folder")?;
20987 s.end()
20988 }
20989 UpdateFolderPolicyError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
20990 }
20991 }
20992}
20993
20994impl ::std::error::Error for UpdateFolderPolicyError {
20995 fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> {
20996 match self {
20997 UpdateFolderPolicyError::AccessError(inner) => Some(inner),
20998 _ => None,
20999 }
21000 }
21001}
21002
21003impl ::std::fmt::Display for UpdateFolderPolicyError {
21004 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21005 match self {
21006 UpdateFolderPolicyError::AccessError(inner) => write!(f, "UpdateFolderPolicyError: {}", inner),
21007 UpdateFolderPolicyError::NoPermission => f.write_str("The current user does not have permission to perform this action."),
21008 UpdateFolderPolicyError::TeamFolder => f.write_str("This action cannot be performed on a team shared folder."),
21009 _ => write!(f, "{:?}", *self),
21010 }
21011 }
21012}
21013
21014#[derive(Debug, Clone, PartialEq, Eq)]
21016#[non_exhaustive] pub struct UserFileMembershipInfo {
21018 pub access_type: AccessLevel,
21021 pub user: UserInfo,
21023 pub permissions: Option<Vec<MemberPermission>>,
21026 #[deprecated]
21028 pub initials: Option<String>,
21029 pub is_inherited: bool,
21031 pub time_last_seen: Option<crate::types::common::DropboxTimestamp>,
21034 pub platform_type: Option<crate::types::seen_state::PlatformType>,
21036}
21037
21038impl UserFileMembershipInfo {
21039 pub fn new(access_type: AccessLevel, user: UserInfo) -> Self {
21040 UserFileMembershipInfo {
21041 access_type,
21042 user,
21043 permissions: None,
21044 #[allow(deprecated)] initials: None,
21045 is_inherited: false,
21046 time_last_seen: None,
21047 platform_type: None,
21048 }
21049 }
21050
21051 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
21052 self.permissions = Some(value);
21053 self
21054 }
21055
21056 #[deprecated]
21057 #[allow(deprecated)]
21058 pub fn with_initials(mut self, value: String) -> Self {
21059 self.initials = Some(value);
21060 self
21061 }
21062
21063 pub fn with_is_inherited(mut self, value: bool) -> Self {
21064 self.is_inherited = value;
21065 self
21066 }
21067
21068 pub fn with_time_last_seen(mut self, value: crate::types::common::DropboxTimestamp) -> Self {
21069 self.time_last_seen = Some(value);
21070 self
21071 }
21072
21073 pub fn with_platform_type(mut self, value: crate::types::seen_state::PlatformType) -> Self {
21074 self.platform_type = Some(value);
21075 self
21076 }
21077}
21078
21079const USER_FILE_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
21080 "user",
21081 "permissions",
21082 "initials",
21083 "is_inherited",
21084 "time_last_seen",
21085 "platform_type"];
21086impl UserFileMembershipInfo {
21087 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
21088 map: V,
21089 ) -> Result<UserFileMembershipInfo, V::Error> {
21090 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
21091 }
21092
21093 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
21094 mut map: V,
21095 optional: bool,
21096 ) -> Result<Option<UserFileMembershipInfo>, V::Error> {
21097 let mut field_access_type = None;
21098 let mut field_user = None;
21099 let mut field_permissions = None;
21100 let mut field_initials = None;
21101 let mut field_is_inherited = None;
21102 let mut field_time_last_seen = None;
21103 let mut field_platform_type = None;
21104 let mut nothing = true;
21105 while let Some(key) = map.next_key::<&str>()? {
21106 nothing = false;
21107 match key {
21108 "access_type" => {
21109 if field_access_type.is_some() {
21110 return Err(::serde::de::Error::duplicate_field("access_type"));
21111 }
21112 field_access_type = Some(map.next_value()?);
21113 }
21114 "user" => {
21115 if field_user.is_some() {
21116 return Err(::serde::de::Error::duplicate_field("user"));
21117 }
21118 field_user = Some(map.next_value()?);
21119 }
21120 "permissions" => {
21121 if field_permissions.is_some() {
21122 return Err(::serde::de::Error::duplicate_field("permissions"));
21123 }
21124 field_permissions = Some(map.next_value()?);
21125 }
21126 "initials" => {
21127 if field_initials.is_some() {
21128 return Err(::serde::de::Error::duplicate_field("initials"));
21129 }
21130 field_initials = Some(map.next_value()?);
21131 }
21132 "is_inherited" => {
21133 if field_is_inherited.is_some() {
21134 return Err(::serde::de::Error::duplicate_field("is_inherited"));
21135 }
21136 field_is_inherited = Some(map.next_value()?);
21137 }
21138 "time_last_seen" => {
21139 if field_time_last_seen.is_some() {
21140 return Err(::serde::de::Error::duplicate_field("time_last_seen"));
21141 }
21142 field_time_last_seen = Some(map.next_value()?);
21143 }
21144 "platform_type" => {
21145 if field_platform_type.is_some() {
21146 return Err(::serde::de::Error::duplicate_field("platform_type"));
21147 }
21148 field_platform_type = Some(map.next_value()?);
21149 }
21150 _ => {
21151 map.next_value::<::serde_json::Value>()?;
21153 }
21154 }
21155 }
21156 if optional && nothing {
21157 return Ok(None);
21158 }
21159 let result = UserFileMembershipInfo {
21160 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
21161 user: field_user.ok_or_else(|| ::serde::de::Error::missing_field("user"))?,
21162 permissions: field_permissions.and_then(Option::flatten),
21163 #[allow(deprecated)] initials: field_initials.and_then(Option::flatten),
21164 is_inherited: field_is_inherited.unwrap_or(false),
21165 time_last_seen: field_time_last_seen.and_then(Option::flatten),
21166 platform_type: field_platform_type.and_then(Option::flatten),
21167 };
21168 Ok(Some(result))
21169 }
21170
21171 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
21172 &self,
21173 s: &mut S::SerializeStruct,
21174 ) -> Result<(), S::Error> {
21175 use serde::ser::SerializeStruct;
21176 s.serialize_field("access_type", &self.access_type)?;
21177 s.serialize_field("user", &self.user)?;
21178 if let Some(val) = &self.permissions {
21179 s.serialize_field("permissions", val)?;
21180 }
21181 #[allow(deprecated)]
21182 if let Some(val) = &self.initials {
21183 s.serialize_field("initials", val)?;
21184 }
21185 if self.is_inherited {
21186 s.serialize_field("is_inherited", &self.is_inherited)?;
21187 }
21188 if let Some(val) = &self.time_last_seen {
21189 s.serialize_field("time_last_seen", val)?;
21190 }
21191 if let Some(val) = &self.platform_type {
21192 s.serialize_field("platform_type", val)?;
21193 }
21194 Ok(())
21195 }
21196}
21197
21198impl<'de> ::serde::de::Deserialize<'de> for UserFileMembershipInfo {
21199 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21200 use serde::de::{MapAccess, Visitor};
21202 struct StructVisitor;
21203 impl<'de> Visitor<'de> for StructVisitor {
21204 type Value = UserFileMembershipInfo;
21205 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21206 f.write_str("a UserFileMembershipInfo struct")
21207 }
21208 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
21209 UserFileMembershipInfo::internal_deserialize(map)
21210 }
21211 }
21212 deserializer.deserialize_struct("UserFileMembershipInfo", USER_FILE_MEMBERSHIP_INFO_FIELDS, StructVisitor)
21213 }
21214}
21215
21216impl ::serde::ser::Serialize for UserFileMembershipInfo {
21217 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21218 use serde::ser::SerializeStruct;
21220 let mut s = serializer.serialize_struct("UserFileMembershipInfo", 7)?;
21221 self.internal_serialize::<S>(&mut s)?;
21222 s.end()
21223 }
21224}
21225
21226impl From<UserFileMembershipInfo> for UserMembershipInfo {
21228 fn from(subtype: UserFileMembershipInfo) -> Self {
21229 Self {
21230 access_type: subtype.access_type,
21231 user: subtype.user,
21232 permissions: subtype.permissions,
21233 #[allow(deprecated)] initials: subtype.initials,
21234 is_inherited: subtype.is_inherited,
21235 }
21236 }
21237}
21238#[derive(Debug, Clone, PartialEq, Eq)]
21242#[non_exhaustive] pub struct UserInfo {
21244 pub account_id: crate::types::users_common::AccountId,
21246 pub email: String,
21248 pub display_name: String,
21250 pub same_team: bool,
21252 pub team_member_id: Option<String>,
21254}
21255
21256impl UserInfo {
21257 pub fn new(
21258 account_id: crate::types::users_common::AccountId,
21259 email: String,
21260 display_name: String,
21261 same_team: bool,
21262 ) -> Self {
21263 UserInfo {
21264 account_id,
21265 email,
21266 display_name,
21267 same_team,
21268 team_member_id: None,
21269 }
21270 }
21271
21272 pub fn with_team_member_id(mut self, value: String) -> Self {
21273 self.team_member_id = Some(value);
21274 self
21275 }
21276}
21277
21278const USER_INFO_FIELDS: &[&str] = &["account_id",
21279 "email",
21280 "display_name",
21281 "same_team",
21282 "team_member_id"];
21283impl UserInfo {
21284 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
21285 map: V,
21286 ) -> Result<UserInfo, V::Error> {
21287 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
21288 }
21289
21290 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
21291 mut map: V,
21292 optional: bool,
21293 ) -> Result<Option<UserInfo>, V::Error> {
21294 let mut field_account_id = None;
21295 let mut field_email = None;
21296 let mut field_display_name = None;
21297 let mut field_same_team = None;
21298 let mut field_team_member_id = None;
21299 let mut nothing = true;
21300 while let Some(key) = map.next_key::<&str>()? {
21301 nothing = false;
21302 match key {
21303 "account_id" => {
21304 if field_account_id.is_some() {
21305 return Err(::serde::de::Error::duplicate_field("account_id"));
21306 }
21307 field_account_id = Some(map.next_value()?);
21308 }
21309 "email" => {
21310 if field_email.is_some() {
21311 return Err(::serde::de::Error::duplicate_field("email"));
21312 }
21313 field_email = Some(map.next_value()?);
21314 }
21315 "display_name" => {
21316 if field_display_name.is_some() {
21317 return Err(::serde::de::Error::duplicate_field("display_name"));
21318 }
21319 field_display_name = Some(map.next_value()?);
21320 }
21321 "same_team" => {
21322 if field_same_team.is_some() {
21323 return Err(::serde::de::Error::duplicate_field("same_team"));
21324 }
21325 field_same_team = Some(map.next_value()?);
21326 }
21327 "team_member_id" => {
21328 if field_team_member_id.is_some() {
21329 return Err(::serde::de::Error::duplicate_field("team_member_id"));
21330 }
21331 field_team_member_id = Some(map.next_value()?);
21332 }
21333 _ => {
21334 map.next_value::<::serde_json::Value>()?;
21336 }
21337 }
21338 }
21339 if optional && nothing {
21340 return Ok(None);
21341 }
21342 let result = UserInfo {
21343 account_id: field_account_id.ok_or_else(|| ::serde::de::Error::missing_field("account_id"))?,
21344 email: field_email.ok_or_else(|| ::serde::de::Error::missing_field("email"))?,
21345 display_name: field_display_name.ok_or_else(|| ::serde::de::Error::missing_field("display_name"))?,
21346 same_team: field_same_team.ok_or_else(|| ::serde::de::Error::missing_field("same_team"))?,
21347 team_member_id: field_team_member_id.and_then(Option::flatten),
21348 };
21349 Ok(Some(result))
21350 }
21351
21352 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
21353 &self,
21354 s: &mut S::SerializeStruct,
21355 ) -> Result<(), S::Error> {
21356 use serde::ser::SerializeStruct;
21357 s.serialize_field("account_id", &self.account_id)?;
21358 s.serialize_field("email", &self.email)?;
21359 s.serialize_field("display_name", &self.display_name)?;
21360 s.serialize_field("same_team", &self.same_team)?;
21361 if let Some(val) = &self.team_member_id {
21362 s.serialize_field("team_member_id", val)?;
21363 }
21364 Ok(())
21365 }
21366}
21367
21368impl<'de> ::serde::de::Deserialize<'de> for UserInfo {
21369 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21370 use serde::de::{MapAccess, Visitor};
21372 struct StructVisitor;
21373 impl<'de> Visitor<'de> for StructVisitor {
21374 type Value = UserInfo;
21375 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21376 f.write_str("a UserInfo struct")
21377 }
21378 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
21379 UserInfo::internal_deserialize(map)
21380 }
21381 }
21382 deserializer.deserialize_struct("UserInfo", USER_INFO_FIELDS, StructVisitor)
21383 }
21384}
21385
21386impl ::serde::ser::Serialize for UserInfo {
21387 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21388 use serde::ser::SerializeStruct;
21390 let mut s = serializer.serialize_struct("UserInfo", 5)?;
21391 self.internal_serialize::<S>(&mut s)?;
21392 s.end()
21393 }
21394}
21395
21396#[derive(Debug, Clone, PartialEq, Eq)]
21398#[non_exhaustive] pub struct UserMembershipInfo {
21400 pub access_type: AccessLevel,
21403 pub user: UserInfo,
21405 pub permissions: Option<Vec<MemberPermission>>,
21408 #[deprecated]
21410 pub initials: Option<String>,
21411 pub is_inherited: bool,
21413}
21414
21415impl UserMembershipInfo {
21416 pub fn new(access_type: AccessLevel, user: UserInfo) -> Self {
21417 UserMembershipInfo {
21418 access_type,
21419 user,
21420 permissions: None,
21421 #[allow(deprecated)] initials: None,
21422 is_inherited: false,
21423 }
21424 }
21425
21426 pub fn with_permissions(mut self, value: Vec<MemberPermission>) -> Self {
21427 self.permissions = Some(value);
21428 self
21429 }
21430
21431 #[deprecated]
21432 #[allow(deprecated)]
21433 pub fn with_initials(mut self, value: String) -> Self {
21434 self.initials = Some(value);
21435 self
21436 }
21437
21438 pub fn with_is_inherited(mut self, value: bool) -> Self {
21439 self.is_inherited = value;
21440 self
21441 }
21442}
21443
21444const USER_MEMBERSHIP_INFO_FIELDS: &[&str] = &["access_type",
21445 "user",
21446 "permissions",
21447 "initials",
21448 "is_inherited"];
21449impl UserMembershipInfo {
21450 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
21451 map: V,
21452 ) -> Result<UserMembershipInfo, V::Error> {
21453 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
21454 }
21455
21456 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
21457 mut map: V,
21458 optional: bool,
21459 ) -> Result<Option<UserMembershipInfo>, V::Error> {
21460 let mut field_access_type = None;
21461 let mut field_user = None;
21462 let mut field_permissions = None;
21463 let mut field_initials = None;
21464 let mut field_is_inherited = None;
21465 let mut nothing = true;
21466 while let Some(key) = map.next_key::<&str>()? {
21467 nothing = false;
21468 match key {
21469 "access_type" => {
21470 if field_access_type.is_some() {
21471 return Err(::serde::de::Error::duplicate_field("access_type"));
21472 }
21473 field_access_type = Some(map.next_value()?);
21474 }
21475 "user" => {
21476 if field_user.is_some() {
21477 return Err(::serde::de::Error::duplicate_field("user"));
21478 }
21479 field_user = Some(map.next_value()?);
21480 }
21481 "permissions" => {
21482 if field_permissions.is_some() {
21483 return Err(::serde::de::Error::duplicate_field("permissions"));
21484 }
21485 field_permissions = Some(map.next_value()?);
21486 }
21487 "initials" => {
21488 if field_initials.is_some() {
21489 return Err(::serde::de::Error::duplicate_field("initials"));
21490 }
21491 field_initials = Some(map.next_value()?);
21492 }
21493 "is_inherited" => {
21494 if field_is_inherited.is_some() {
21495 return Err(::serde::de::Error::duplicate_field("is_inherited"));
21496 }
21497 field_is_inherited = Some(map.next_value()?);
21498 }
21499 _ => {
21500 map.next_value::<::serde_json::Value>()?;
21502 }
21503 }
21504 }
21505 if optional && nothing {
21506 return Ok(None);
21507 }
21508 let result = UserMembershipInfo {
21509 access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?,
21510 user: field_user.ok_or_else(|| ::serde::de::Error::missing_field("user"))?,
21511 permissions: field_permissions.and_then(Option::flatten),
21512 #[allow(deprecated)] initials: field_initials.and_then(Option::flatten),
21513 is_inherited: field_is_inherited.unwrap_or(false),
21514 };
21515 Ok(Some(result))
21516 }
21517
21518 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
21519 &self,
21520 s: &mut S::SerializeStruct,
21521 ) -> Result<(), S::Error> {
21522 use serde::ser::SerializeStruct;
21523 s.serialize_field("access_type", &self.access_type)?;
21524 s.serialize_field("user", &self.user)?;
21525 if let Some(val) = &self.permissions {
21526 s.serialize_field("permissions", val)?;
21527 }
21528 #[allow(deprecated)]
21529 if let Some(val) = &self.initials {
21530 s.serialize_field("initials", val)?;
21531 }
21532 if self.is_inherited {
21533 s.serialize_field("is_inherited", &self.is_inherited)?;
21534 }
21535 Ok(())
21536 }
21537}
21538
21539impl<'de> ::serde::de::Deserialize<'de> for UserMembershipInfo {
21540 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21541 use serde::de::{MapAccess, Visitor};
21543 struct StructVisitor;
21544 impl<'de> Visitor<'de> for StructVisitor {
21545 type Value = UserMembershipInfo;
21546 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21547 f.write_str("a UserMembershipInfo struct")
21548 }
21549 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
21550 UserMembershipInfo::internal_deserialize(map)
21551 }
21552 }
21553 deserializer.deserialize_struct("UserMembershipInfo", USER_MEMBERSHIP_INFO_FIELDS, StructVisitor)
21554 }
21555}
21556
21557impl ::serde::ser::Serialize for UserMembershipInfo {
21558 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21559 use serde::ser::SerializeStruct;
21561 let mut s = serializer.serialize_struct("UserMembershipInfo", 5)?;
21562 self.internal_serialize::<S>(&mut s)?;
21563 s.end()
21564 }
21565}
21566
21567impl From<UserMembershipInfo> for MembershipInfo {
21569 fn from(subtype: UserMembershipInfo) -> Self {
21570 Self {
21571 access_type: subtype.access_type,
21572 permissions: subtype.permissions,
21573 #[allow(deprecated)] initials: subtype.initials,
21574 is_inherited: subtype.is_inherited,
21575 }
21576 }
21577}
21578#[derive(Debug, Clone, PartialEq, Eq)]
21579#[non_exhaustive] pub enum ViewerInfoPolicy {
21581 Enabled,
21583 Disabled,
21585 Other,
21588}
21589
21590impl<'de> ::serde::de::Deserialize<'de> for ViewerInfoPolicy {
21591 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21592 use serde::de::{self, MapAccess, Visitor};
21594 struct EnumVisitor;
21595 impl<'de> Visitor<'de> for EnumVisitor {
21596 type Value = ViewerInfoPolicy;
21597 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21598 f.write_str("a ViewerInfoPolicy structure")
21599 }
21600 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
21601 let tag: &str = match map.next_key()? {
21602 Some(".tag") => map.next_value()?,
21603 _ => return Err(de::Error::missing_field(".tag"))
21604 };
21605 let value = match tag {
21606 "enabled" => ViewerInfoPolicy::Enabled,
21607 "disabled" => ViewerInfoPolicy::Disabled,
21608 _ => ViewerInfoPolicy::Other,
21609 };
21610 crate::eat_json_fields(&mut map)?;
21611 Ok(value)
21612 }
21613 }
21614 const VARIANTS: &[&str] = &["enabled",
21615 "disabled",
21616 "other"];
21617 deserializer.deserialize_struct("ViewerInfoPolicy", VARIANTS, EnumVisitor)
21618 }
21619}
21620
21621impl ::serde::ser::Serialize for ViewerInfoPolicy {
21622 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21623 use serde::ser::SerializeStruct;
21625 match self {
21626 ViewerInfoPolicy::Enabled => {
21627 let mut s = serializer.serialize_struct("ViewerInfoPolicy", 1)?;
21629 s.serialize_field(".tag", "enabled")?;
21630 s.end()
21631 }
21632 ViewerInfoPolicy::Disabled => {
21633 let mut s = serializer.serialize_struct("ViewerInfoPolicy", 1)?;
21635 s.serialize_field(".tag", "disabled")?;
21636 s.end()
21637 }
21638 ViewerInfoPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
21639 }
21640 }
21641}
21642
21643#[derive(Debug, Clone, PartialEq, Eq)]
21646#[non_exhaustive] pub enum Visibility {
21648 Public,
21650 TeamOnly,
21652 Password,
21654 TeamAndPassword,
21656 SharedFolderOnly,
21659 Other,
21662}
21663
21664impl<'de> ::serde::de::Deserialize<'de> for Visibility {
21665 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21666 use serde::de::{self, MapAccess, Visitor};
21668 struct EnumVisitor;
21669 impl<'de> Visitor<'de> for EnumVisitor {
21670 type Value = Visibility;
21671 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21672 f.write_str("a Visibility structure")
21673 }
21674 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
21675 let tag: &str = match map.next_key()? {
21676 Some(".tag") => map.next_value()?,
21677 _ => return Err(de::Error::missing_field(".tag"))
21678 };
21679 let value = match tag {
21680 "public" => Visibility::Public,
21681 "team_only" => Visibility::TeamOnly,
21682 "password" => Visibility::Password,
21683 "team_and_password" => Visibility::TeamAndPassword,
21684 "shared_folder_only" => Visibility::SharedFolderOnly,
21685 _ => Visibility::Other,
21686 };
21687 crate::eat_json_fields(&mut map)?;
21688 Ok(value)
21689 }
21690 }
21691 const VARIANTS: &[&str] = &["public",
21692 "team_only",
21693 "password",
21694 "team_and_password",
21695 "shared_folder_only",
21696 "other"];
21697 deserializer.deserialize_struct("Visibility", VARIANTS, EnumVisitor)
21698 }
21699}
21700
21701impl ::serde::ser::Serialize for Visibility {
21702 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21703 use serde::ser::SerializeStruct;
21705 match self {
21706 Visibility::Public => {
21707 let mut s = serializer.serialize_struct("Visibility", 1)?;
21709 s.serialize_field(".tag", "public")?;
21710 s.end()
21711 }
21712 Visibility::TeamOnly => {
21713 let mut s = serializer.serialize_struct("Visibility", 1)?;
21715 s.serialize_field(".tag", "team_only")?;
21716 s.end()
21717 }
21718 Visibility::Password => {
21719 let mut s = serializer.serialize_struct("Visibility", 1)?;
21721 s.serialize_field(".tag", "password")?;
21722 s.end()
21723 }
21724 Visibility::TeamAndPassword => {
21725 let mut s = serializer.serialize_struct("Visibility", 1)?;
21727 s.serialize_field(".tag", "team_and_password")?;
21728 s.end()
21729 }
21730 Visibility::SharedFolderOnly => {
21731 let mut s = serializer.serialize_struct("Visibility", 1)?;
21733 s.serialize_field(".tag", "shared_folder_only")?;
21734 s.end()
21735 }
21736 Visibility::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
21737 }
21738 }
21739}
21740
21741#[derive(Debug, Clone, PartialEq, Eq)]
21742#[non_exhaustive] pub struct VisibilityPolicy {
21744 pub policy: RequestedVisibility,
21746 pub resolved_policy: AlphaResolvedVisibility,
21750 pub allowed: bool,
21752 pub disallowed_reason: Option<VisibilityPolicyDisallowedReason>,
21755}
21756
21757impl VisibilityPolicy {
21758 pub fn new(
21759 policy: RequestedVisibility,
21760 resolved_policy: AlphaResolvedVisibility,
21761 allowed: bool,
21762 ) -> Self {
21763 VisibilityPolicy {
21764 policy,
21765 resolved_policy,
21766 allowed,
21767 disallowed_reason: None,
21768 }
21769 }
21770
21771 pub fn with_disallowed_reason(mut self, value: VisibilityPolicyDisallowedReason) -> Self {
21772 self.disallowed_reason = Some(value);
21773 self
21774 }
21775}
21776
21777const VISIBILITY_POLICY_FIELDS: &[&str] = &["policy",
21778 "resolved_policy",
21779 "allowed",
21780 "disallowed_reason"];
21781impl VisibilityPolicy {
21782 pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>(
21783 map: V,
21784 ) -> Result<VisibilityPolicy, V::Error> {
21785 Self::internal_deserialize_opt(map, false).map(Option::unwrap)
21786 }
21787
21788 pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>(
21789 mut map: V,
21790 optional: bool,
21791 ) -> Result<Option<VisibilityPolicy>, V::Error> {
21792 let mut field_policy = None;
21793 let mut field_resolved_policy = None;
21794 let mut field_allowed = None;
21795 let mut field_disallowed_reason = None;
21796 let mut nothing = true;
21797 while let Some(key) = map.next_key::<&str>()? {
21798 nothing = false;
21799 match key {
21800 "policy" => {
21801 if field_policy.is_some() {
21802 return Err(::serde::de::Error::duplicate_field("policy"));
21803 }
21804 field_policy = Some(map.next_value()?);
21805 }
21806 "resolved_policy" => {
21807 if field_resolved_policy.is_some() {
21808 return Err(::serde::de::Error::duplicate_field("resolved_policy"));
21809 }
21810 field_resolved_policy = Some(map.next_value()?);
21811 }
21812 "allowed" => {
21813 if field_allowed.is_some() {
21814 return Err(::serde::de::Error::duplicate_field("allowed"));
21815 }
21816 field_allowed = Some(map.next_value()?);
21817 }
21818 "disallowed_reason" => {
21819 if field_disallowed_reason.is_some() {
21820 return Err(::serde::de::Error::duplicate_field("disallowed_reason"));
21821 }
21822 field_disallowed_reason = Some(map.next_value()?);
21823 }
21824 _ => {
21825 map.next_value::<::serde_json::Value>()?;
21827 }
21828 }
21829 }
21830 if optional && nothing {
21831 return Ok(None);
21832 }
21833 let result = VisibilityPolicy {
21834 policy: field_policy.ok_or_else(|| ::serde::de::Error::missing_field("policy"))?,
21835 resolved_policy: field_resolved_policy.ok_or_else(|| ::serde::de::Error::missing_field("resolved_policy"))?,
21836 allowed: field_allowed.ok_or_else(|| ::serde::de::Error::missing_field("allowed"))?,
21837 disallowed_reason: field_disallowed_reason.and_then(Option::flatten),
21838 };
21839 Ok(Some(result))
21840 }
21841
21842 pub(crate) fn internal_serialize<S: ::serde::ser::Serializer>(
21843 &self,
21844 s: &mut S::SerializeStruct,
21845 ) -> Result<(), S::Error> {
21846 use serde::ser::SerializeStruct;
21847 s.serialize_field("policy", &self.policy)?;
21848 s.serialize_field("resolved_policy", &self.resolved_policy)?;
21849 s.serialize_field("allowed", &self.allowed)?;
21850 if let Some(val) = &self.disallowed_reason {
21851 s.serialize_field("disallowed_reason", val)?;
21852 }
21853 Ok(())
21854 }
21855}
21856
21857impl<'de> ::serde::de::Deserialize<'de> for VisibilityPolicy {
21858 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21859 use serde::de::{MapAccess, Visitor};
21861 struct StructVisitor;
21862 impl<'de> Visitor<'de> for StructVisitor {
21863 type Value = VisibilityPolicy;
21864 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21865 f.write_str("a VisibilityPolicy struct")
21866 }
21867 fn visit_map<V: MapAccess<'de>>(self, map: V) -> Result<Self::Value, V::Error> {
21868 VisibilityPolicy::internal_deserialize(map)
21869 }
21870 }
21871 deserializer.deserialize_struct("VisibilityPolicy", VISIBILITY_POLICY_FIELDS, StructVisitor)
21872 }
21873}
21874
21875impl ::serde::ser::Serialize for VisibilityPolicy {
21876 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21877 use serde::ser::SerializeStruct;
21879 let mut s = serializer.serialize_struct("VisibilityPolicy", 4)?;
21880 self.internal_serialize::<S>(&mut s)?;
21881 s.end()
21882 }
21883}
21884
21885#[derive(Debug, Clone, PartialEq, Eq)]
21886#[non_exhaustive] pub enum VisibilityPolicyDisallowedReason {
21888 DeleteAndRecreate,
21890 RestrictedBySharedFolder,
21893 RestrictedByTeam,
21895 UserNotOnTeam,
21897 UserAccountType,
21899 PermissionDenied,
21901 Other,
21904}
21905
21906impl<'de> ::serde::de::Deserialize<'de> for VisibilityPolicyDisallowedReason {
21907 fn deserialize<D: ::serde::de::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
21908 use serde::de::{self, MapAccess, Visitor};
21910 struct EnumVisitor;
21911 impl<'de> Visitor<'de> for EnumVisitor {
21912 type Value = VisibilityPolicyDisallowedReason;
21913 fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21914 f.write_str("a VisibilityPolicyDisallowedReason structure")
21915 }
21916 fn visit_map<V: MapAccess<'de>>(self, mut map: V) -> Result<Self::Value, V::Error> {
21917 let tag: &str = match map.next_key()? {
21918 Some(".tag") => map.next_value()?,
21919 _ => return Err(de::Error::missing_field(".tag"))
21920 };
21921 let value = match tag {
21922 "delete_and_recreate" => VisibilityPolicyDisallowedReason::DeleteAndRecreate,
21923 "restricted_by_shared_folder" => VisibilityPolicyDisallowedReason::RestrictedBySharedFolder,
21924 "restricted_by_team" => VisibilityPolicyDisallowedReason::RestrictedByTeam,
21925 "user_not_on_team" => VisibilityPolicyDisallowedReason::UserNotOnTeam,
21926 "user_account_type" => VisibilityPolicyDisallowedReason::UserAccountType,
21927 "permission_denied" => VisibilityPolicyDisallowedReason::PermissionDenied,
21928 _ => VisibilityPolicyDisallowedReason::Other,
21929 };
21930 crate::eat_json_fields(&mut map)?;
21931 Ok(value)
21932 }
21933 }
21934 const VARIANTS: &[&str] = &["delete_and_recreate",
21935 "restricted_by_shared_folder",
21936 "restricted_by_team",
21937 "user_not_on_team",
21938 "user_account_type",
21939 "permission_denied",
21940 "other"];
21941 deserializer.deserialize_struct("VisibilityPolicyDisallowedReason", VARIANTS, EnumVisitor)
21942 }
21943}
21944
21945impl ::serde::ser::Serialize for VisibilityPolicyDisallowedReason {
21946 fn serialize<S: ::serde::ser::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21947 use serde::ser::SerializeStruct;
21949 match self {
21950 VisibilityPolicyDisallowedReason::DeleteAndRecreate => {
21951 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21953 s.serialize_field(".tag", "delete_and_recreate")?;
21954 s.end()
21955 }
21956 VisibilityPolicyDisallowedReason::RestrictedBySharedFolder => {
21957 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21959 s.serialize_field(".tag", "restricted_by_shared_folder")?;
21960 s.end()
21961 }
21962 VisibilityPolicyDisallowedReason::RestrictedByTeam => {
21963 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21965 s.serialize_field(".tag", "restricted_by_team")?;
21966 s.end()
21967 }
21968 VisibilityPolicyDisallowedReason::UserNotOnTeam => {
21969 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21971 s.serialize_field(".tag", "user_not_on_team")?;
21972 s.end()
21973 }
21974 VisibilityPolicyDisallowedReason::UserAccountType => {
21975 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21977 s.serialize_field(".tag", "user_account_type")?;
21978 s.end()
21979 }
21980 VisibilityPolicyDisallowedReason::PermissionDenied => {
21981 let mut s = serializer.serialize_struct("VisibilityPolicyDisallowedReason", 1)?;
21983 s.serialize_field(".tag", "permission_denied")?;
21984 s.end()
21985 }
21986 VisibilityPolicyDisallowedReason::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant"))
21987 }
21988 }
21989}
21990