负责存储调用七牛 API 所必要的认证信息,提供 CredentialProvider
方便扩展获取认证信息的方式。
同时提供阻塞接口和异步接口(异步接口需要启用 async
功能)。
提供 CredentialProvider
的多个实现方式,例如:
GlobalCredentialProvider
使用全局变量配置的认证信息EnvCredentialProvider
使用环境变量配置的认证信息ChainCredentialsProvider
配置多个 CredentialProvider
形成认证信息串,遍历找寻第一个可用的认证信息toml
[dependencies]
qiniu-credential = "0.0.9"
toml
[dependencies]
qiniu-credential = { version = "0.0.9", features = ["async"] }
```rust use qiniucredential::{Credential, HeaderValue, prelude::*}; use mime::APPLICATIONWWWFORMURLENCODED; use std::io::Cursor;
let credential = Credential::new("abcdefghklmnopq", "1234567890"); let authorization = credential .get(Default::default())? .authorizationv1forrequestwithbodyreader( &"http://upload.qiniup.com/".parse()?, Some(&HeaderValue::fromstr(APPLICATIONWWWFORMURLENCODED.as_ref())?), &mut Cursor::new(b"name=test&language=go"), ); ```
```rust use qiniucredential::{Credential, Method, HeaderMap, HeaderValue, prelude::*}; use http::header::CONTENTTYPE; use mime::APPLICATION_JSON; use std::io::Cursor;
let credential = Credential::new("abcdefghklmnopq", "1234567890"); let mut headers = HeaderMap::new(); headers.insert(CONTENTTYPE, HeaderValue::fromstr(APPLICATIONJSON.asref())?); let authorization = credential .get(Default::default())? .authorizationv2forrequestwithbodyreader( &Method::GET, &"http://upload.qiniup.com/".parse()?, &headers, &mut Cursor::new(b"{\"name\":\"test\"}"), ); ```
```rust use qiniu_credential::{Credential, prelude::*}; use std::time::Duration;
let credential = Credential::new("abcdefghklmnopq", "1234567890"); let url = "http://www.qiniu.com/?go=1".parse()?; let url = credential .get(Default::default())? .signdownloadurl(url, Duration::fromsecs(1234567890 + 3600)); asserteq!( url.tostring(), "http://www.qiniu.com/?go=1&e=1234571490&token=abcdefghklmnopq%3AKjQtlGAkEOhSwtFjJfYtYa2-reE%3D", ); ```
```rust use qiniucredential::{Credential, HeaderValue, prelude::*}; use mime::APPLICATIONWWWFORMURLENCODED; use std::io::Cursor;
let credential = Credential::new("abcdefghklmnopq", "1234567890"); let authorization = credential .asyncget(Default::default()).await? .authorizationv1forrequestwithasyncbodyreader( &"http://upload.qiniup.com/".parse()?, Some(&HeaderValue::fromstr(APPLICATIONWWWFORMURLENCODED.as_ref())?), &mut Cursor::new(b"name=test&language=go"), ).await?; ```
```rust use qiniucredential::{Credential, Method, HeaderMap, HeaderValue, prelude::*}; use http::header::CONTENTTYPE; use mime::APPLICATION_JSON; use std::io::Cursor;
let credential = Credential::new("abcdefghklmnopq", "1234567890"); let mut headers = HeaderMap::new(); headers.insert(CONTENTTYPE, HeaderValue::fromstr(APPLICATIONJSON.asref())?); let authorization = credential .asyncget(Default::default()).await? .authorizationv2forrequestwithasyncbodyreader( &Method::GET, &"http://upload.qiniup.com/".parse()?, &headers, &mut Cursor::new(b"{\"name\":\"test\"}"), ).await?; ```
1.60.0
This project is licensed under the [MIT license].