#signer #com #api #jdcloud

jdcloud-sdk-rust-signer

jdcloud.com API签名器

1个不稳定版本

0.1.0 2019年2月27日

#646认证

Apache-2.0

27KB
568

jdcloud_signer: jdcloud.com API签名器

Build Status

目录 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
~470K SLoC