1#![warn(missing_docs)]
8#![cfg_attr(docsrs, feature(doc_cfg))]
9
10macro_rules! update_builder_option_field {
11 (
12 #[doc_name = $doc_name:tt]
13 $(#[$m:meta])*
14 $v:vis $name:ident : $param_type:ty { $field_name:ident = $value:expr };
15 $($tail:tt)*
16 ) => {
17 paste::paste! {
18 #[doc = "Sets the " $doc_name "."]
19 $(#[$m])*
20 $v fn [<set_ $name>](&mut self, $name: $param_type) -> &mut Self {
21 self.request.$field_name.replace(Some($value));
22 self
23 }
24
25 #[doc = "Deletes the " $doc_name "."]
26 $(#[$m])*
27 $v fn [<delete_ $name>](&mut self) -> &mut Self {
28 self.request.$field_name.replace(None);
29 self
30 }
31
32 update_builder_option_field! { $($tail)* }
33 }
34 };
35 (
36 #[doc_name = $doc_name:tt]
37 $(#[$m:meta])*
38 $v:vis $name:ident : $param_type:ty { $field_name:ident };
39 $($tail:tt)*
40 ) => {
41 update_builder_option_field! {
42 #[doc_name = $doc_name]
43 $(#[$m])*
44 $v $name: $param_type { $field_name = ($field_name) };
45 }
46 update_builder_option_field! { $($tail)* }
47 };
48 (
49 $(#[$m:meta])*
50 $v:vis $name:ident $($tail:tt)*
51 ) => {
52 update_builder_option_field! { #[doc_name = $name] $(#[$m])* $v $name $($tail)* }
53 };
54 () => {};
55}
56
57macro_rules! update_builder_string_collection_field {
58 (
59 $(#[$m:meta])*
60 $v:vis $name:ident { $field_name:ident };
61 $($tail:tt)*
62 ) => {
63 $(#[$m])*
64 $v fn $name(&mut self, $name: impl IntoIterator<Item = impl Into<String>>) -> &mut Self {
65 self.request
66 .$field_name
67 .replace($name.into_iter().map(Into::into).collect());
68 self
69 }
70 update_builder_string_collection_field! { $($tail)* }
71 };
72 (
73 $(#[$m:meta])*
74 $v:vis $name:ident;
75 $($tail:tt)*
76 ) => {
77 update_builder_string_collection_field! {
78 $(#[$m])*
79 $v $name { $name };
80 }
81 update_builder_string_collection_field! { $($tail)* }
82 };
83 () => {};
84}
85
86macro_rules! update_builder_string_option_field {
87 (
88 #[doc_name = $doc_name:tt]
89 $(#[$m:meta])*
90 $v:vis $name:ident { $field_name:ident };
91 $($tail:tt)*
92 ) => {
93 update_builder_option_field! {
94 #[doc_name = $doc_name]
95 $(#[$m])*
96 $v $name: impl Into<String> { $field_name = $name.into() };
97 }
98 update_builder_string_option_field! { $($tail)* }
99 };
100 (
101 $(#[$m:meta])*
102 $v:vis $name:ident { $field_name:ident };
103 $($tail:tt)*
104 ) => {
105 update_builder_option_field! {
106 $(#[$m])*
107 $v $name: impl Into<String> { $field_name = $name.into() };
108 }
109 update_builder_string_option_field! { $($tail)* }
110 };
111 (
112 #[doc_name = $doc_name:tt]
113 $(#[$m:meta])*
114 $v:vis $name:ident;
115 $($tail:tt)*
116 ) => {
117 update_builder_string_option_field! {
118 #[doc_name = $doc_name]
119 $(#[$m])*
120 $v $name { $name };
121 }
122 update_builder_string_option_field! { $($tail)* }
123 };
124 (
125 $(#[$m:meta])*
126 $v:vis $name:ident;
127 $($tail:tt)*
128 ) => {
129 update_builder_string_option_field! {
130 $(#[$m])*
131 $v $name { $name };
132 }
133 update_builder_string_option_field! { $($tail)* }
134 };
135 () => {};
136}
137
138macro_rules! update_builder_bool_field {
139 (
140 $(#[$m:meta])*
141 $v:vis $name:ident { $field_name:ident };
142 $($tail:tt)*
143 ) => {
144 $(#[$m])*
145 $v fn $name(&mut self, $name: bool) -> &mut Self {
146 self.request.$field_name.replace($name);
147 self
148 }
149 update_builder_bool_field! { $($tail)* }
150 };
151 (
152 $(#[$m:meta])*
153 $v:vis $name:ident;
154 $($tail:tt)*
155 ) => {
156 update_builder_bool_field! {
157 $(#[$m])*
158 $v $name { $name };
159 }
160 update_builder_bool_field! { $($tail)* }
161 };
162 () => {};
163}
164
165mod error;
166pub use error::Error;
167
168mod client;
169pub use client::{ClientExt, UploadFileClientExt};
170
171mod streaming;
172pub use streaming::StreamingClientExt;
173
174pub mod builder;
175pub mod pager;
176
177mod timeline;
178pub use timeline::{TimelineCursor, TimelineRange};