1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
// THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!
//
#![cfg_attr(feature = "docs", feature(doc_cfg))]
#![deny(
    missing_debug_implementations,
    large_assignments,
    exported_private_dependencies,
    absolute_paths_not_starting_with_crate,
    anonymous_parameters,
    explicit_outlives_requirements,
    keyword_idents,
    macro_use_extern_crate,
    meta_variable_misuse,
    missing_docs,
    non_ascii_idents,
    indirect_structural_match,
    trivial_numeric_casts,
    unsafe_code,
    unused_extern_crates,
    unused_import_braces,
    unused_qualifications
)]
#![doc = r" # qiniu-apis"]
#![doc = r""]
#![doc = r" ## 七牛 HTTP API 库"]
#![doc = r""]
#![doc = r" 这是一个基于 `qiniu-apis-specs` 自动生成的 Rust 库,基于 `qiniu-http-client`,用于调用七牛 HTTP API。"]
#![doc = r" 该库同时提供阻塞客户端和异步客户端,异步客户端则需要启用 `async` 功能。"]
#![doc = r" 该库致力于根据 [`qiniu-apis-specs`](https://github.com/qiniu/api-specs.git) 提供的 YAML 描述文件,在不理解业务逻辑的前提下,提供简单的封装方法方便用户正确调用 API。"]
#![doc = r""]
#![doc = r" 该库可以通过启用不同的功能来选择不同的 HTTP 客户端实现,"]
#![doc = r" 例如可以通过启用 `ureq` 功能导入 `qiniu-ureq` 库作为 HTTP 客户端,"]
#![doc = r" 通过启用 `reqwest` 功能导入 `qiniu-reqwest` 库作为 HTTP 客户端,"]
#![doc = r" 通过启用 `isahc` 功能导入 `qiniu-isahc` 库作为 HTTP 客户端。"]
#![doc = r" 您也可以显式传入任何基于 `qiniu-http` 接口的 HTTP 客户端实现来提供给 `qiniu-apis` 使用。"]
#![doc = r""]
#![doc = r" 由于是自动生成库,无法为每个接口提供代码示例,下面选择几个典型的场景来讲解如何使用该库:"]
#![doc = r""]
#![doc = r" ### 功能描述"]
#![doc = r""]
#![doc = r" #### `async`"]
#![doc = r""]
#![doc = r" 启用异步接口。"]
#![doc = r""]
#![doc = r" #### `ureq`"]
#![doc = r""]
#![doc = r" 导入 `qiniu-ureq` 作为 HTTP 客户端。"]
#![doc = r""]
#![doc = r" #### `isahc`"]
#![doc = r""]
#![doc = r" 导入 `qiniu-isahc` 作为 HTTP 客户端。"]
#![doc = r""]
#![doc = r" #### `reqwest`"]
#![doc = r""]
#![doc = r" 导入 `qiniu-reqwest` 作为 HTTP 客户端。"]
#![doc = r""]
#![doc = r" #### `c_ares`"]
#![doc = r""]
#![doc = r" 启用 `c-ares` 库作为 DNS 解析器。"]
#![doc = r""]
#![doc = r" #### `trust_dns`"]
#![doc = r""]
#![doc = r" 启用 `trust-dns` 库作为 DNS 解析器。"]
#![doc = r""]
#![doc = r" #### `dns-over-https`"]
#![doc = r""]
#![doc = r" 启用 `trust-dns` 库作为 DNS 解析器,并使用 DOH 协议。"]
#![doc = r""]
#![doc = r" #### `dns-over-tls`"]
#![doc = r""]
#![doc = r" 启用 `trust-dns` 库作为 DNS 解析器,并使用 DOT 协议。"]
#![doc = r""]
#![doc = r" ### 代码示例"]
#![doc = r""]
#![doc = r" #### 创建存储空间"]
#![doc = r""]
#![doc = r" API 参考文档:<https://developer.qiniu.com/kodo/1382/mkbucketv3>"]
#![doc = r""]
#![doc = r" 通过该参考文档可知,创建存储空间需要通过 URL 路径提供参数,因此 `qiniu-apis` 代码如下:"]
#![doc = r""]
#![doc = r" ##### 阻塞代码示例"]
#![doc = r""]
#![doc = r" ```"]
#![doc = r" use qiniu_apis::{"]
#![doc = r"     credential::Credential,"]
#![doc = r"     http_client::{AllRegionsProvider, RegionsProvider, RegionsProviderEndpoints},"]
#![doc = r"     storage::create_bucket::PathParams,"]
#![doc = r"     Client,"]
#![doc = r" };"]
#![doc = r" # fn example() -> anyhow::Result<()> {"]
#![doc = r#" let credential = Credential::new("abcdefghklmnopq", "1234567890");"#]
#![doc = r" let region = AllRegionsProvider::new(credential.to_owned())"]
#![doc = r"     .get(Default::default())?;"]
#![doc = r" Client::default()"]
#![doc = r"     .storage()"]
#![doc = r"     .create_bucket()"]
#![doc = r"     .new_request("]
#![doc = r"         RegionsProviderEndpoints::new(&region),"]
#![doc = r"         PathParams::default()"]
#![doc = r#"             .set_bucket_as_str("new-bucket-name")"#]
#![doc = r#"             .set_region_as_str("z1"),"#]
#![doc = r"         credential,"]
#![doc = r"     )"]
#![doc = r"     .call()?;"]
#![doc = r" # Ok(())"]
#![doc = r" # }"]
#![doc = r" ```"]
#![doc = r""]
#![doc = r" ##### 异步代码示例"]
#![doc = r""]
#![doc = r" ```"]
#![doc = r" use qiniu_apis::{"]
#![doc = r"     credential::Credential,"]
#![doc = r"     http_client::{AllRegionsProvider, RegionsProvider, RegionsProviderEndpoints},"]
#![doc = r"     storage::create_bucket::PathParams,"]
#![doc = r"     Client,"]
#![doc = r" };"]
#![doc = r" # async fn example() -> anyhow::Result<()> {"]
#![doc = r#" let credential = Credential::new("abcdefghklmnopq", "1234567890");"#]
#![doc = r" let region = AllRegionsProvider::new(credential.to_owned())"]
#![doc = r"     .async_get(Default::default())"]
#![doc = r"     .await?;"]
#![doc = r" Client::default()"]
#![doc = r"     .storage()"]
#![doc = r"     .create_bucket()"]
#![doc = r"     .new_async_request("]
#![doc = r"         RegionsProviderEndpoints::new(&region),"]
#![doc = r"         PathParams::default()"]
#![doc = r#"             .set_bucket_as_str("new-bucket-name")"#]
#![doc = r#"             .set_region_as_str("z1"),"#]
#![doc = r"         credential,"]
#![doc = r"     )"]
#![doc = r"     .call()"]
#![doc = r"     .await?;"]
#![doc = r" # Ok(())"]
#![doc = r" # }"]
#![doc = r" ```"]
#![doc = r""]
#![doc = r" 这里的 [`storage::create_bucket::PathParams`] 提供了设置路径参数的方法。"]
#![doc = r""]
#![doc = r" #### 设置存储空间标签"]
#![doc = r""]
#![doc = r" API 参考文档:<https://developer.qiniu.com/kodo/6314/put-bucket-tagging>"]
#![doc = r""]
#![doc = r" 通过该参考文档可知,设置存储空间标签需要提供 URL 查询参数作为设置目标,并且通过 JSON 参数传输标签列表,因此 `qiniu-apis` 代码如下:"]
#![doc = r""]
#![doc = r" ##### 阻塞代码示例"]
#![doc = r""]
#![doc = r" ```"]
#![doc = r" use qiniu_apis::{"]
#![doc = r"     credential::Credential,"]
#![doc = r"     http_client::{BucketRegionsQueryer, RegionsProviderEndpoints},"]
#![doc = r"     storage::set_bucket_taggings::{QueryParams, RequestBody, TagInfo, Tags},"]
#![doc = r"     Client,"]
#![doc = r" };"]
#![doc = r" # fn example() -> anyhow::Result<()> {"]
#![doc = r#" let credential = Credential::new("abcdefghklmnopq", "1234567890");"#]
#![doc = r#" let bucket_name = "test-bucket";"#]
#![doc = r" let region = BucketRegionsQueryer::new().query(credential.access_key().to_owned(), bucket_name);"]
#![doc = r" let mut tag1 = TagInfo::default();"]
#![doc = r#" tag1.set_key_as_str("tag_key1".to_owned());"#]
#![doc = r#" tag1.set_value_as_str("tag_val1".to_owned());"#]
#![doc = r" let mut tag2 = TagInfo::default();"]
#![doc = r#" tag2.set_key_as_str("tag_key2".to_owned());"#]
#![doc = r#" tag2.set_value_as_str("tag_val2".to_owned());"#]
#![doc = r" let mut tags = Tags::default();"]
#![doc = r" tags.push_tag_info(tag1);"]
#![doc = r" tags.push_tag_info(tag2);"]
#![doc = r" let mut req_body = RequestBody::default();"]
#![doc = r" req_body.set_tags(tags);"]
#![doc = r" Client::default()"]
#![doc = r"     .storage()"]
#![doc = r"     .set_bucket_taggings()"]
#![doc = r"     .new_request(RegionsProviderEndpoints::new(&region), credential)"]
#![doc = r"     .query_pairs(QueryParams::default().set_bucket_as_str(bucket_name))"]
#![doc = r"     .call(&req_body)?;"]
#![doc = r" # Ok(())"]
#![doc = r" # }"]
#![doc = r" ```"]
#![doc = r""]
#![doc = r" ##### 异步代码示例"]
#![doc = r""]
#![doc = r" ```"]
#![doc = r" use qiniu_apis::{"]
#![doc = r"     credential::Credential,"]
#![doc = r"     http_client::{BucketRegionsQueryer, RegionsProviderEndpoints},"]
#![doc = r"     storage::set_bucket_taggings::{QueryParams, RequestBody, TagInfo, Tags},"]
#![doc = r"     Client,"]
#![doc = r" };"]
#![doc = r" # async fn example() -> anyhow::Result<()> {"]
#![doc = r#" let credential = Credential::new("abcdefghklmnopq", "1234567890");"#]
#![doc = r#" let bucket_name = "test-bucket";"#]
#![doc = r" let region = BucketRegionsQueryer::new().query(credential.access_key().to_owned(), bucket_name);"]
#![doc = r" let mut tag1 = TagInfo::default();"]
#![doc = r#" tag1.set_key_as_str("tag_key1".to_owned());"#]
#![doc = r#" tag1.set_value_as_str("tag_val1".to_owned());"#]
#![doc = r" let mut tag2 = TagInfo::default();"]
#![doc = r#" tag2.set_key_as_str("tag_key2".to_owned());"#]
#![doc = r#" tag2.set_value_as_str("tag_val2".to_owned());"#]
#![doc = r" let mut tags = Tags::default();"]
#![doc = r" tags.push_tag_info(tag1);"]
#![doc = r" tags.push_tag_info(tag2);"]
#![doc = r" let mut req_body = RequestBody::default();"]
#![doc = r" req_body.set_tags(tags);"]
#![doc = r" Client::default()"]
#![doc = r"     .storage()"]
#![doc = r"     .set_bucket_taggings()"]
#![doc = r"     .new_async_request(RegionsProviderEndpoints::new(&region), credential)"]
#![doc = r"     .query_pairs(QueryParams::default().set_bucket_as_str(bucket_name))"]
#![doc = r"     .call(&req_body)"]
#![doc = r"     .await?;"]
#![doc = r" # Ok(())"]
#![doc = r" # }"]
#![doc = r" ```"]
#![doc = r""]
#![doc = r" 这里的 [`storage::set_bucket_taggings::QueryParams`] 提供了设置查询参数的方法,"]
#![doc = r" 而 [`storage::set_bucket_taggings::RequestBody`] 提供了设置请求体参数的方法 。"]
#![doc = r""]
#![doc = r" #### 列出存储空间标签"]
#![doc = r""]
#![doc = r" API 参考文档:<https://developer.qiniu.com/kodo/6315/get-bucket-tagging>"]
#![doc = r""]
#![doc = r" 通过该参考文档可知,该 API 通过 JSON 响应体返回标签列表,因此 `qiniu-apis` 代码如下:"]
#![doc = r""]
#![doc = r" ##### 阻塞代码示例"]
#![doc = r""]
#![doc = r" ```"]
#![doc = r" use qiniu_apis::{"]
#![doc = r"     credential::Credential,"]
#![doc = r"     http_client::{BucketRegionsQueryer, RegionsProviderEndpoints},"]
#![doc = r"     storage::get_bucket_taggings::QueryParams,"]
#![doc = r"     Client,"]
#![doc = r" };"]
#![doc = r" # fn example() -> anyhow::Result<()> {"]
#![doc = r#" let credential = Credential::new("abcdefghklmnopq", "1234567890");"#]
#![doc = r#" let bucket_name = "test-bucket";"#]
#![doc = r" let region = BucketRegionsQueryer::new().query(credential.access_key().to_owned(), bucket_name);"]
#![doc = r" let tags = Client::default()"]
#![doc = r"     .storage()"]
#![doc = r"     .get_bucket_taggings()"]
#![doc = r"     .new_request(RegionsProviderEndpoints::new(&region), credential)"]
#![doc = r"     .query_pairs(QueryParams::default().set_bucket_name_as_str(bucket_name))"]
#![doc = r"     .call()?"]
#![doc = r"     .into_body()"]
#![doc = r"     .get_tags()"]
#![doc = r"     .to_tag_info_vec();"]
#![doc = r" for tag in tags {"]
#![doc = r#"     println!("{}: {}", tag.get_key_as_str(), tag.get_value_as_str());"#]
#![doc = r" }"]
#![doc = r" # Ok(())"]
#![doc = r" # }"]
#![doc = r" ```"]
#![doc = r""]
#![doc = r" ##### 异步代码示例"]
#![doc = r""]
#![doc = r" ```"]
#![doc = r" use qiniu_apis::{"]
#![doc = r"     credential::Credential,"]
#![doc = r"     http_client::{BucketRegionsQueryer, RegionsProviderEndpoints},"]
#![doc = r"     storage::get_bucket_taggings::QueryParams,"]
#![doc = r"     Client,"]
#![doc = r" };"]
#![doc = r" # async fn example() -> anyhow::Result<()> {"]
#![doc = r#" let credential = Credential::new("abcdefghklmnopq", "1234567890");"#]
#![doc = r#" let bucket_name = "test-bucket";"#]
#![doc = r" let region = BucketRegionsQueryer::new().query(credential.access_key().to_owned(), bucket_name);"]
#![doc = r" let tags = Client::default()"]
#![doc = r"     .storage()"]
#![doc = r"     .get_bucket_taggings()"]
#![doc = r"     .new_async_request(RegionsProviderEndpoints::new(&region), credential)"]
#![doc = r"     .query_pairs(QueryParams::default().set_bucket_name_as_str(bucket_name))"]
#![doc = r"     .call()"]
#![doc = r"     .await?"]
#![doc = r"     .into_body()"]
#![doc = r"     .get_tags()"]
#![doc = r"     .to_tag_info_vec();"]
#![doc = r" for tag in tags {"]
#![doc = r#"     println!("{}: {}", tag.get_key_as_str(), tag.get_value_as_str());"#]
#![doc = r" }"]
#![doc = r" # Ok(())"]
#![doc = r" # }"]
#![doc = r" ```"]
pub use qiniu_http_client as http_client;
pub use qiniu_http_client::credential;
pub use qiniu_http_client::http;
#[cfg(feature = "isahc")]
#[cfg_attr(feature = "docs", doc(cfg(feature = "isahc")))]
pub use qiniu_http_client::isahc;
#[cfg(feature = "reqwest")]
#[cfg_attr(feature = "docs", doc(cfg(feature = "reqwest")))]
pub use qiniu_http_client::reqwest;
pub use qiniu_http_client::upload_token;
#[cfg(feature = "ureq")]
#[cfg_attr(feature = "docs", doc(cfg(feature = "ureq")))]
pub use qiniu_http_client::ureq;
#[doc = "七牛 API 所用的基础类型库"]
pub mod base_types;
pub(crate) mod base_utils;
#[allow(missing_docs)]
pub mod storage;
#[doc = "七牛 API 调用客户端"]
#[derive(Debug, Clone, Default)]
pub struct Client(qiniu_http_client::HttpClient);
impl Client {
    #[inline]
    #[must_use]
    #[doc = "创建七牛 API 调用客户端"]
    pub fn new(client: qiniu_http_client::HttpClient) -> Self {
        Self(client)
    }
    #[inline]
    #[allow(missing_docs)]
    pub fn storage(&self) -> storage::Client {
        storage::Client::new(&self.0)
    }
}
impl From<qiniu_http_client::HttpClient> for Client {
    #[inline]
    fn from(client: qiniu_http_client::HttpClient) -> Self {
        Self(client)
    }
}