#github-api #api-bindings #pure

已删除 github-rs

对Github API的纯Rust绑定

0.7.0 2019年4月25日
0.6.1 2017年12月28日
0.6.0 2017年9月24日
0.5.0 2017年6月23日
0.1.0 2016年8月18日

#63 in #github-api

Download history 41/week @ 2024-03-14 18/week @ 2024-03-21 62/week @ 2024-03-28 58/week @ 2024-04-04 16/week @ 2024-04-11 29/week @ 2024-04-18 43/week @ 2024-04-25 12/week @ 2024-05-02 20/week @ 2024-05-09 27/week @ 2024-05-16 26/week @ 2024-05-23 27/week @ 2024-05-30 30/week @ 2024-06-06 15/week @ 2024-06-13 21/week @ 2024-06-20 12/week @ 2024-06-27

82 每月下载量
用于 5 crates

MIT 许可证

63KB
2K SLoC

github-rs

服务 状态
TravisCI Build Status
DependencyCI DependencyStatus
AppveyorCI Build status
CodeCov codecov
crates.io crates.io

对Github V3 API的纯Rust绑定。如果您需要V4库的绑定,请参阅github-graphql-rs库。

不完整的绑定

请查看端点文档,以了解当前API中哪些端点被覆盖。这是针对Github V3 API的。

依赖项和支持

github-rs旨在在所有一级支持的Rust系统上运行

  • Windows
  • Linux
  • MacOSX

github-rs支持rustlsrust-native-tls用于TLS连接。默认情况下使用rustls,但可以通过Cargo功能切换支持。

[dependencies.github-rs]
version = "0.6"
default-features = false
features = ["rust-native-tls"]

由于rustls依赖于ring进行加密,因此硬件支持仅限于ring支持的硬件,目前为ARM和x86(32位和64位)。如果您正在为其他架构编译,则可以使用rust-native-tls功能以获得最大的可移植性。

最低编译器版本

由于使用了某些功能,github-rs需要rustc版本1.18或更高。

项目目标

  • 拥有一个健壮的API,其中所有内容都进行了适当的错误处理,以避免任何类型的恐慌。库是应用程序的基础,应该是构建的基础。
  • 覆盖所有Github稳定端点。任何已弃用和beta版本的内容应仅通过配置获取。随着从Github删除弃用端点,也应该从该库中删除。
  • 将稳定性作为API的一部分。为此,将努力确保此代码在稳定Rust上编译,而不是在nightly上。
  • 易用性。对于不直接修改代码的人来说,复杂性应该被隐藏。
  • 对一切进行文档编制,这样不仅容易修改,而且查找如何使用库也应该是容易的。

入门指南

将以下内容添加到您的Cargo.toml

[dependencies]
github-rs = "0.6"
serde_json = "1.0"

然后在您的lib.rsmain.rs文件中添加

use github_rs::client::{Executor, Github};
use serde_json::Value;

现在您可以开始进行查询。以下是一个获取用户信息的简单示例

use github_rs::client::{Executor, Github};
use serde_json::Value;

fn main() {
    let client = Github::new("API TOKEN").unwrap();
    let me = client.get()
                   .user()
                   .execute::<Value>();
    match me {
        Ok((headers, status, json)) => {
            println!("{:#?}", headers);
            println!("{}", status);
            if let Some(json) = json{
                println!("{}", json);
            }
        },
        Err(e) => println!("{}", e)
    }
}

在库上开发

贡献

请参阅CONTRIBUTING.md获取更多信息。

许可

在以下许可协议下:

任选其一。

许可协议

除非您明确指出,否则您根据Apache-2.0许可协议定义的贡献,将按上述方式双许可,无需任何额外条款或条件。

依赖

~12–25MB
~374K SLoC