5 个版本 (破坏性更新)
使用旧的 Rust 2015
0.6.0 | 2017年2月3日 |
---|---|
0.5.2 | 2017年1月31日 |
0.4.0 | 2016年12月7日 |
0.3.0 | 2016年12月5日 |
0.2.0 | 2016年12月3日 |
#45 in #gitlab
1MB
3K SLoC
gitlab-api-rs
Rust 对 GitLab API 的包装。
注意:由于此 crate 使用自定义 derive for Serde,因此需要 Rust 1.15(稳定版)。
概要
GitLab 是一款惊人的工具。对于大多数任务,Web UI 已经足够,但对于某些任务,没有脚本能比得上。GitLab API 允许在 GitLab 服务器上执行脚本操作。
优秀的 python-gitlab 允许从 Python 使用 API,但当我使用它时,我发现自己在缺少 Rust 的静态类型。因此,这里提供了 Rust 的实现。
(v3) API 相当长,所以我将首先实现我需要的部分。
功能
- 只读列表
- 组;
- 问题;
- 合并请求;
- 项目(管理员所有、用户所有、特定 id、所有者、搜索);
不工作
-
任何 写入 命令(如
POST
、PUT
等) -
任何 企业版 特定功能。
-
使用数组的 API 元素。
GET /projects/:id/merge_requests?iid[]=42&iid[]=43
-
一些项目列表
- 分支;
- 分支;
- 事件;
- 钩子;
- 钩子;
- 收藏;
- 可见性;
用法
[dependencies]
gitlab-api = "0.6"
此 crate 使用构建器模式向查询添加过滤器。一旦构建了查询,list()
将通过联系 GitLab 服务器并执行请求来提交它。
extern crate gitlab_api as gitlab;
fn main() {
let gl = gitlab::GitLab::new(&"gitlab.com", &"GITLAB_TOKEN_XXXXXXX").unwrap();
// Get GitLab's version.
let gitlab_version = gl.version().unwrap();
println!("gitlab_version: {:?}", gitlab_version);
// Low level methods
// Get projects, owned by authenticated user and which are archived.
let projects = gl.projects().owned().archived(true).list().unwrap();
println!("projects: {:?}", projects);
// Get groups owned by authenticated user.
let owned_groups = gl.groups().owned().list().unwrap();
println!("owned_groups: {:?}", owned_groups);
// Get closed issues.
let closed_issues = gl.issues().state(gitlab::issues::State::Closed).list().unwrap();
println!("closed_issues: {:?}", closed_issues);
// Higher level methods
// Get a specific project
let project = gl.get_project("nbigaouette1", "gitlab-api-rs").chain_err(|| "cannot get project")?;
// Get a specific issue
let issue = gl.get_issue("nbigaouette1", "gitlab-api-rs", 1).chain_err(|| "cannot get issue")?;
// Get a specific merge request
let merge_request = gl.get_merge_request("nbigaouette1", "gitlab-api-rs", 1).chain_err(|| "cannot get merge_request")?;
}
注意:
- Crate 默认使用
https
。使用GitLab::new_insecure()
使用http
(或port()
和sheme()
设置器在GitLab
结构上)。 - 在
http
上明文发送您的令牌是危险的! - 请参阅 examples/list_projects.rs 以了解如何从环境变量中加载令牌(以及主机名)的示例。
- 请参阅
examples
目录以了解如何使用此 crate 的更多示例。
依赖项
感谢 cargo-graph
提供的图!
许可协议
gitlab-api-rs 在 MIT 许可协议和 Apache 许可协议(版本 2.0)的条款下分发。
请参阅 LICENSE-APACHE 和 LICENSE-MIT 以了解详细信息。
依赖项
~15MB
~328K SLoC