15 个版本 (破坏性更新)
0.12.0 | 2022年1月6日 |
---|---|
0.11.0 | 2021年10月24日 |
0.10.0 | 2021年8月15日 |
0.8.0 | 2021年7月12日 |
0.1.2 | 2021年3月22日 |
#5 in #repos
每月45 次下载
4.5MB
72K SLoC
Roctogen:GitHub v3 API 的 Rust 客户端库
此客户端 API 来自于 上游 OpenAPI 规范。该库目前支持 WebAssembly 以及基于 tokio 和非 tokio 的异步请求和最小依赖阻塞的同步请求,可通过 cargo 特性选择不同的客户端
isahc 特性 (同步 和基于非 tokio 的 异步): Isahc HTTP 客户端
reqwest 特性 (异步) Reqwest 客户端
ureq 特性 (同步) Ureq 客户端
安装
将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
roctogen = "0.12"
API
文档
端点.
支持的端点
- 元
- 问题
- 许可证
- 反应
- 活动
- 项目
- 组织
- 用户
- 应用程序
- 速率限制
- 仓库
- SecretScanning
- 包
- 搜索
- 团队
- Markdown
- OauthAuthorizations
- 操作
- 迁移
- Gists
- 行为守则
- Pulls
- Gitignore
- 企业管理员
- Git
- Scim
- CodeScanning
- 检查
- 计费
- 交互
- Codespaces
- 表情符号
使用
此库的快速示例
use roctogen::api::{self, repos};
use roctogen::auth::Auth;
let auth = Auth::None;
let per_page = api::PerPage::new(10);
let mut params: repos::ReposListCommitsParams = per_page.as_ref().into();
params = params.author("fussybeaver").page(2);
repos::new(&auth).list_commits("fussybeaver", "bollard", Some(params));
异步
所有 async
方法都以 _async
后缀命名,并在 wasm 目标或 isahc
和 reqwest
适配器上提供。
Webassembly
要为 WebAssembly 编译,您可以使用 wasm-pack
或使用 wasm32-unknown-unknown
目标进行编译
$ wasm-pack build
$ cargo build --target wasm32-unknown-unknown
如果您正在构建 cloudflare worker,则应使用 wrangler
包装器
$ wrangler preview --watch
客户端适配器
在非 wasm
目标上构建通常需要为所需的客户端适配器采用一个功能
Isahc
为 isahc
客户端编译需要 isahc
功能
$ cargo build --features isahc
Reqwest
为 reqwest
客户端编译需要 reqwest
功能
$ cargo build --features reqwest
Ureq
为 ureq
客户端编译需要 ureq
功能
$ cargo build --features ureq
GitHub 预览功能
GitHub 支持通过头部标志分阶段推出非稳定端点。这些通过本库中的 cargo 功能标志进行支持。
$ cargo build --features squirrel-girl
生成 API
大部分代码通过 Swagger OpenAPI 生成器 (版本 3) 生成。构建需要 Java 版本 8 的 mvn
Java 构建工具(因此你需要一个合适的 JDK)。
$ mvn -D org.slf4j.simpleLogger.defaultLogLevel=info clean compiler:compile generate-resources
测试
请注意,未使用 mock
功能运行的测试目前仍在向 GitHub API 发送真实的 HTTP 请求。
运行 wasm 测试
$ wasm-pack test --firefox --headless
运行同步测试
$ cargo test --features isahc,mercy,squirrel-girl,inertia,starfox --target x86_64-unknown-linux-gnu -- --nocapture
为了避免 GitHub API 的速率限制,你可以使用 wiremock 运行非 wasm 测试。你需要将 wiremock 在后台启动
$ docker run -d --name wiremock -p 8080:8080 -v $PWD/tests/stubs:/home/wiremock
rodolpheche/wiremock
重新生成 wiremock 模拟代码
如果远程 API 已更改,你应该重新生成模拟代码
$ docker run -d --name wiremock -p 8080:8080 -v $PWD/tests/stubs:/home/wiremock -u (id -u):(id -g) rodolpheche/wiremock --verbose --proxy-all="https://api.github.com" --record-mappings
许可证:Apache-2.0
依赖项
约 2-20MB
约 253K SLoC