3个版本
0.1.2 | 2022年1月5日 |
---|---|
0.1.1 | 2022年1月4日 |
0.1.0 | 2021年6月7日 |
#263 in HTTP客户端
每月 693次下载
89KB
2K SLoC
centraldogma-rs
官方Rust客户端,用于Central Dogma。
完整文档可在https://docs.rs/centraldogma找到
入门指南
安装
在Cargo.toml中添加centraldogma
crate及其版本。
centraldogma = "0.1.0"
使用tokio的异步支持
客户端使用reqwest
进行HTTP调用,该库内部使用tokio
运行时实现异步支持。因此,为了使用客户端,您可能需要添加对tokio
的依赖。
tokio = { version = "1.2.0", features = ["full"] }
创建客户端
使用Client
结构体创建一个新客户端,以便通过API与CentralDogma进行交互。
use centraldogma::Client;
#[tokio::main]
fn main() {
// with token
let client = Client::new("https://127.0.0.1:36462", Some("token")).await.unwrap();
// without token
let client = Client::new("https://127.0.0.1:36462", None).await.unwrap();
// your code ...
}
制作类型化的API调用
类型化API调用通过特质提供
示例
获取文件
use centraldogma::{Client, ContentService};
#[tokio::main]
fn main() {
// without token
let client = Client::new("https://127.0.0.1:36462", None).await.unwrap();
let file = client
.repo("project", "repository")
.get_file(Revision::HEAD, Query::of_text("/a.yml"))
.await
.unwrap();
// your code ...
}
推送
use centraldogma::{Client, ContentService};
#[tokio::main]
fn main() {
let client = Client::new("https://127.0.0.1:36462", None).await.unwrap();
let changes = vec![Change {
path: "/a.json".to_string(),
content: ChangeContent::UpsertJson(serde_json::json!({"a":"b"})),
}];
let result = client
.repo("foo", "bar")
.push(
Revision::HEAD,
CommitMessage::only_summary("Add a.json"),
changes,
)
.await
.unwrap();
监控文件更改
use centraldogma::{Client, WatchService};
#[tokio::main]
fn main() {
let client = Client::new("https://127.0.0.1:36462", None).await.unwrap();
let stream = client
.repo("foo", "bar")
.watch_file_stream(&Query::identity("/a.json").unwrap())
.unwrap();
tokio::spawn(async move {
while let Some(result) = stream.next().await {
// your code ...
}
})
贡献
请参阅CONTRIBUTING.md。
依赖关系
~6–21MB
~287K SLoC