#学习 #管理 #客户端 #文档 #如何 #开发者 #connectwise

cwmanage

一个简单的crate,用于帮助使用Connectwise Manage API

10个版本

0.1.8 2021年5月4日
0.1.7 2021年5月3日
0.1.6 2021年4月20日
0.1.3 2021年3月9日
0.1.0 2021年2月26日

#61 in #开发者

每月 24 次下载

MIT 许可证

37KB
505

cwmanage

license build crates.io Documentation

cwmanage - Connectwise Manage API crate

这是我用来学习Rust crates和库工作原理的简单管理API "库"


lib.rs:

用于处理Connectwise Manage API的crate

在Connectwise API https://developer.connectwise.com/Products/Manage 中,一些结果以单个 'object' 返回,大多数以列表返回。通常你会得到一个结果列表(甚至只有一个),所以你会使用 Client.get。在某些情况下(例如 /system/info),它不会返回列表,在这种情况下使用 Client.get_single。有关更多详细信息,请参阅API文档(上面)。

获取示例

具有默认api_uri、codebase和api版本的简单客户端

use cwmanage::Client;
use dotenv::dotenv;
dotenv().ok();
let company_id: String = dotenv::var("CWMANAGE_COMPANY_ID").unwrap();
let public_key: String = dotenv::var("CWMANAGE_PUBLIC_KEY").unwrap();
let private_key: String = dotenv::var("CWMANAGE_PRIVATE_KEY").unwrap();
let client_id: String = dotenv::var("CWMANAGE_CLIENT_ID").unwrap();
let client = Client::new(company_id, public_key, private_key, client_id).build();
let query = [("", "")];
let result = client.get_single("/system/info", &query).unwrap();

覆盖api_version

use cwmanage::Client;
use dotenv::dotenv;
dotenv().ok();
let company_id: String = dotenv::var("CWMANAGE_COMPANY_ID").unwrap();
let public_key: String = dotenv::var("CWMANAGE_PUBLIC_KEY").unwrap();
let private_key: String = dotenv::var("CWMANAGE_PRIVATE_KEY").unwrap();
let client_id: String = dotenv::var("CWMANAGE_CLIENT_ID").unwrap();

let client = Client::new(company_id, public_key, private_key, client_id).build();
let query = [("", "")];
let result = client.get_single("/system/info", &query).unwrap();

获取具有多个结果的端点

use cwmanage::Client;
use dotenv::dotenv;
dotenv().ok();
let company_id: String = dotenv::var("CWMANAGE_COMPANY_ID").unwrap();
let public_key: String = dotenv::var("CWMANAGE_PUBLIC_KEY").unwrap();
let private_key: String = dotenv::var("CWMANAGE_PRIVATE_KEY").unwrap();
let client_id: String = dotenv::var("CWMANAGE_CLIENT_ID").unwrap();
let client = Client::new(company_id, public_key, private_key, client_id).build();
let query = [("fields", "id,identifier")];
let result = client.get("/system/members", &query);

POST示例

use cwmanage::Client;
use serde_json::json;
use dotenv::dotenv;
dotenv().ok();
let company_id: String = dotenv::var("CWMANAGE_COMPANY_ID").unwrap();
let public_key: String = dotenv::var("CWMANAGE_PUBLIC_KEY").unwrap();
let private_key: String = dotenv::var("CWMANAGE_PRIVATE_KEY").unwrap();
let client_id: String = dotenv::var("CWMANAGE_CLIENT_ID").unwrap();
let client = Client::new(company_id, public_key, private_key, client_id).build();
let body = json!({"foo": "bar"}).to_string();
let result = client.post("/system/members", body);

PATCH示例

use cwmanage::{Client, PatchOp};
use serde_json::json;
use dotenv::dotenv;
dotenv().ok();
let company_id: String = dotenv::var("CWMANAGE_COMPANY_ID").unwrap();
let public_key: String = dotenv::var("CWMANAGE_PUBLIC_KEY").unwrap();
let private_key: String = dotenv::var("CWMANAGE_PRIVATE_KEY").unwrap();
let client_id: String = dotenv::var("CWMANAGE_CLIENT_ID").unwrap();
let client = Client::new(company_id, public_key, private_key, client_id).build();
let op = PatchOp::Replace;
let path = "name";
let value = json!("test_basic_patch_replace");
let result = client.patch("/sales/activities/100", op, path, value);

查询示例

有关更多详细信息,请参阅connectwise API

  • 无查询 - [("", "")]
  • 只获取id字段 [("fields", "id")]
  • 也应用一些条件 [("fields", "id"), ("conditions", "name LIKE '%foo%'")]

依赖项

~5–20MB
~272K SLoC