qiniu_apis/
lib.rs

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