Qiniu-Credential

qiniu-credential docs.rs Run Test Cases GitHub release MIT licensed

概览

负责存储调用七牛 API 所必要的认证信息,提供 CredentialProvider 方便扩展获取认证信息的方式。 同时提供阻塞接口和异步接口(异步接口需要启用 async 功能)。 提供 CredentialProvider 的多个实现方式,例如:

不启用异步接口

toml [dependencies] qiniu-credential = "0.1.0"

启用异步接口

toml [dependencies] qiniu-credential = { version = "0.1.0", features = ["async"] }

代码示例

阻塞代码示例

计算七牛鉴权签名 V1

```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"), ); ```

计算七牛鉴权签名 V2

```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", ); ```

异步代码示例

计算七牛鉴权签名 V1

```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?; ```

计算七牛鉴权签名 V2

```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?; ```

最低支持的 Rust 版本(MSRV)

1.60.0

联系我们

代码许可

This project is licensed under the [MIT license].