qiniu_upload_manager/
lib.rs

1#![cfg_attr(feature = "docs", feature(doc_cfg))]
2#![deny(
3    single_use_lifetimes,
4    missing_debug_implementations,
5    large_assignments,
6    exported_private_dependencies,
7    absolute_paths_not_starting_with_crate,
8    anonymous_parameters,
9    explicit_outlives_requirements,
10    keyword_idents,
11    macro_use_extern_crate,
12    meta_variable_misuse,
13    missing_docs,
14    non_ascii_idents,
15    indirect_structural_match,
16    trivial_numeric_casts,
17    unreachable_pub,
18    unsafe_code,
19    unused_extern_crates,
20    unused_import_braces,
21    unused_qualifications
22)]
23
24//! # qiniu-upload-manager
25//!
26//! ## 七牛上传管理
27//!
28//! 基于 `qiniu-apis` 提供针对七牛对象的上传功能
29//! (同时提供阻塞客户端和异步客户端,异步客户端则需要启用 `async` 功能)。
30//!
31//! ### 功能描述
32//!
33//! #### `async`
34//!
35//! 启用异步接口。
36//!
37//! #### `ureq`
38//!
39//! 导入 `qiniu-ureq` 作为 HTTP 客户端。
40//!
41//! #### `isahc`
42//!
43//! 导入 `qiniu-isahc` 作为 HTTP 客户端。
44//!
45//! #### `reqwest`
46//!
47//! 导入 `qiniu-reqwest` 作为 HTTP 客户端。
48//!
49//! #### `c_ares`
50//!
51//! 启用 `c-ares` 库作为 DNS 解析器。
52//!
53//! #### `trust_dns`
54//!
55//! 启用 `trust-dns` 库作为 DNS 解析器。
56//!
57//! #### `dns-over-https`
58//!
59//! 启用 `trust-dns` 库作为 DNS 解析器,并使用 DOH 协议。
60//!
61//! #### `dns-over-tls`
62//!
63//! 启用 `trust-dns` 库作为 DNS 解析器,并使用 DOT 协议。
64//!
65//! ### 代码示例
66//!
67//! #### 用自动上传器上传文件
68//!
69//! ##### 阻塞代码示例
70//!
71//! ```
72//! use qiniu_upload_manager::{
73//!     apis::credential::Credential, AutoUploader, AutoUploaderObjectParams, UploadManager,
74//!     UploadTokenSigner,
75//! };
76//! use std::time::Duration;
77//!
78//! # fn example() -> anyhow::Result<()> {
79//! let bucket_name = "test-bucket";
80//! let object_name = "test-object";
81//! let upload_manager = UploadManager::builder(UploadTokenSigner::new_credential_provider(
82//!     Credential::new("abcdefghklmnopq", "1234567890"),
83//!     bucket_name,
84//!     Duration::from_secs(3600),
85//! ))
86//! .build();
87//! let params = AutoUploaderObjectParams::builder().object_name(object_name).file_name(object_name).build();
88//! let mut uploader: AutoUploader = upload_manager.auto_uploader();
89//! uploader.upload_path("/home/qiniu/test.png", params)?;
90//! # Ok(())
91//! # }
92//! ```
93//!
94//! ##### 异步代码示例
95//!
96//! ```
97//! use qiniu_upload_manager::{
98//!     apis::credential::Credential, AutoUploader, AutoUploaderObjectParams, UploadManager,
99//!     UploadTokenSigner,
100//! };
101//! use std::time::Duration;
102//!
103//! # async fn example() -> anyhow::Result<()> {
104//! let bucket_name = "test-bucket";
105//! let object_name = "test-object";
106//! let upload_manager = UploadManager::builder(UploadTokenSigner::new_credential_provider(
107//!     Credential::new("abcdefghklmnopq", "1234567890"),
108//!     bucket_name,
109//!     Duration::from_secs(3600),
110//! ))
111//! .build();
112//! let params = AutoUploaderObjectParams::builder().object_name(object_name).file_name(object_name).build();
113//! let mut uploader: AutoUploader = upload_manager.auto_uploader();
114//! uploader.async_upload_path("/home/qiniu/test.png", params).await?;
115//! # Ok(())
116//! # }
117//! ```
118
119mod auto_uploader;
120mod callbacks;
121mod concurrency_provider;
122mod data_partition_provider;
123mod data_source;
124mod multi_parts_uploader;
125mod object_params;
126mod resumable_policy;
127mod resumable_recorder;
128mod scheduler;
129mod single_part_uploader;
130mod upload_manager;
131mod upload_token;
132
133pub use qiniu_apis as apis;
134pub use qiniu_apis::http_client::mime;
135
136pub use auto_uploader::{
137    AutoUploader, AutoUploaderBuilder, AutoUploaderObjectParams, AutoUploaderObjectParamsBuilder,
138    MultiPartsUploaderPrefer, MultiPartsUploaderSchedulerPrefer, SinglePartUploaderPrefer,
139};
140pub use callbacks::{MultiPartsUploaderWithCallbacks, UploaderWithCallbacks, UploadingProgressInfo};
141pub use concurrency_provider::{
142    Concurrency, ConcurrencyProvider, ConcurrencyProviderFeedback, ConcurrencyProviderFeedbackBuilder,
143    FixedConcurrencyProvider,
144};
145pub use data_partition_provider::{
146    DataPartitionProvider, DataPartitionProviderFeedback, DataPartitionProviderFeedbackBuilder,
147    FixedDataPartitionProvider, LimitedDataPartitionProvider, MultiplyDataPartitionProvider, PartSize,
148};
149pub use data_source::{DataSource, DataSourceReader, FileDataSource, SeekableSource, SourceKey, UnseekableDataSource};
150pub use multi_parts_uploader::{
151    InitializedParts, MultiPartsUploader, MultiPartsV1Uploader, MultiPartsV1UploaderInitializedObject,
152    MultiPartsV1UploaderUploadedPart, MultiPartsV2Uploader, MultiPartsV2UploaderInitializedObject,
153    MultiPartsV2UploaderUploadedPart, ReinitializeOptions, ReinitializeOptionsBuilder, UploadedPart,
154};
155pub use object_params::{ObjectParams, ObjectParamsBuilder};
156pub use resumable_policy::{
157    AlwaysMultiParts, AlwaysSinglePart, DynRead, FixedThresholdResumablePolicy, GetPolicyOptions,
158    MultiplePartitionsResumablePolicyProvider, ResumablePolicy, ResumablePolicyProvider,
159};
160pub use resumable_recorder::{
161    AppendOnlyResumableRecorderMedium, DummyResumableRecorder, DummyResumableRecorderMedium,
162    FileSystemResumableRecorder, ReadOnlyResumableRecorderMedium, ResumableRecorder,
163};
164pub use scheduler::{
165    ConcurrentMultiPartsUploaderScheduler, MultiPartsUploaderScheduler, MultiPartsUploaderSchedulerExt,
166    SerialMultiPartsUploaderScheduler,
167};
168pub use single_part_uploader::{FormUploader, SinglePartUploader};
169pub use upload_manager::{UploadManager, UploadManagerBuilder};
170pub use upload_token::{UploadTokenSigner, UploadTokenSignerBuilder};
171
172#[cfg(feature = "async")]
173pub use {
174    data_source::{
175        AsyncDataSource, AsyncDataSourceReader, AsyncFileDataSource, AsyncSeekableSource, AsyncUnseekableDataSource,
176    },
177    resumable_policy::DynAsyncRead,
178    resumable_recorder::{AppendOnlyAsyncResumableRecorderMedium, ReadOnlyAsyncResumableRecorderMedium},
179};
180
181/// 将所有 Trait 全部重新导出,方便统一导入
182pub mod prelude {
183    pub use super::apis::http_client::prelude::*;
184    pub use super::{
185        AppendOnlyResumableRecorderMedium, ConcurrencyProvider, DataPartitionProvider, DataSource, InitializedParts,
186        MultiPartsUploader, MultiPartsUploaderScheduler, MultiPartsUploaderSchedulerExt,
187        MultiPartsUploaderWithCallbacks, ReadOnlyResumableRecorderMedium, ResumablePolicyProvider, ResumableRecorder,
188        SinglePartUploader, UploadedPart, UploaderWithCallbacks,
189    };
190
191    #[cfg(feature = "async")]
192    pub use super::{
193        AppendOnlyAsyncResumableRecorderMedium, AsyncDataSource, DynAsyncRead, ReadOnlyAsyncResumableRecorderMedium,
194    };
195}