1 个不稳定版本
0.1.0 | 2019年2月27日 |
---|
#817 在 认证
28KB
568 行
jdcloud_signer: jdcloud.com API签名者
目录 由DocToc生成
用法:普通方式
Cargo.toml
将以下内容添加到你的 Cargo.toml
[dependencies]
jdcloud_signer = "0.1"
使用示例
use jdcloud_signer::{Credential, Signer, Client};
use http::Request;
use serde_json::Value;
fn main() {
let ak = "...";
let sk = "...";
let credential = Credential::new(ak, sk);
let signer = Signer::new(credential, "vm".to_string(), "cn-north-1".to_string());
let mut req = Request::builder();
let mut req = req.method("GET")
.uri("http://vm.jdcloud-api.com/v1/regions/cn-north-1/instances")
.body("".to_string()).unwrap();
signer.sign_request(&mut req).unwrap();
let client = Client::new();
let mut res = client.execute(req).unwrap();
println!("status: {}", res.status());
for header in res.headers().into_iter() {
println!("{}: {:?}", header.0, header.1);
}
let text = res.text().unwrap();
let json: Value = serde_json::from_str(&text).unwrap();
println!("requestId: {}", json["requestId"]);
}
用法:仅签名方式
如果你不喜欢 reqwest
,打算使用自己的http库,那么可以选择仅做签名。
签名时我们会添加如下几个Header字段
User-Agent
: 如果未指定,则设为 "JdcloudSdkRust/0.1.0",如果已指定,则不做改动。X-Jdcloud-Date
: 当前时间。X-Jdcloud-Nonce
: 随机数。Authorization
: 签名。
Cargo.toml
将以下内容添加到你的 Cargo.toml
[dependencies]
jdcloud_signer = { version = "0.1", default-features = false }
使用示例
use jdcloud_signer::{Credential, Signer};
use http::Request;
fn main() {
let ak = "...";
let sk = "...";
let credential = Credential::new(ak, sk);
let signer = Signer::new(credential, "vm".to_string(), "cn-north-1".to_string());
let mut req = Request::builder();
let mut req = req.method("GET")
.uri("http://vm.jdcloud-api.com/v1/regions/cn-north-1/instances")
.body("".to_string()).unwrap();
signer.sign_request(&mut req).unwrap();
println!("{}", req);
}
依赖
~23MB
~472K SLoC