#github-api #graphql #graphql-client #api-client #bindings #query #pure

已撤销 github-gql-rs

使用GraphQL的纯Rust绑定访问Github V4 API

使用旧的Rust 2015

0.0.1 2017年9月26日

#28 in #graphql-client

MIT/Apache

16KB
215 代码行

github-gql-rs

不完整的绑定

鉴于这是一个更加自由的格式,并未创建一个完整的用于客户端查询的GraphQL库。请参阅GitHub V4 API文档以获取您可以执行的查询。

依赖和支持

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

  • Windows
  • Linux
  • MacOSX

最低编译器版本

由于使用了某些特性,githubgql--rs需要rustc版本1.18或更高。

项目目标

  • 拥有一个健壮的API,其中所有内容都进行了错误处理,以避免任何类型的恐慌。库是应用程序的基础,应该是构建的基础。
  • 稳定性是API的一部分。因此,将努力确保此代码在稳定Rust而不是夜间版本上编译。
  • 易于使用。复杂性应该从不在代码上修改的人那里隐藏。
  • 对一切进行文档记录,这样不仅容易修改,而且查找如何使用库也应该是容易的。

入门

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

[dependencies]
github-gql-rs = "0.01"

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

extern crate github_gql;
use github_gql::client::Github;

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

extern crate github_gql as gh;
extern crate serde_json;
use gh::client::Github;
use gh::query::Query;
use serde_json::Value;

fn main() {
    let mut g = Github::new("YOUR API TOKEN GOES HERE").unwrap();
    let (headers, status, json) = g.query::<Value>(
        &Query::new_raw("query { viewer { login } }")
    ).unwrap();

    println!("{}", headers);
    println!("{}", status);
    if let Some(json) = json {
        println!("{}", json);
    }

    // This will update https://github.com/octocat/Hello-World/issues/349
    // with a HOORAY emoji!
    let (headers, status, json) = g.mutation::<Value>(
        &Mutation::new_raw(
        "mutation AddReactionToIssue { \
            addReaction( input: { subjectId: \\\"MDU6SXNzdWUyMzEzOTE1NTE=\\\", content: HOORAY } ) { \
                reaction { \
                    content \
                } \
                subject { \
                    id \
                } \
            } \
        }")
    ).unwrap();
    println!("{}", headers);
    println!("{}", status);
    if let Some(json) = json {
        println!("{}", json);
    }
}

修改库

贡献

有关更多信息,请参阅 CONTRIBUTING.md

许可

根据您的选择,许可协议为以下之一

许可

除非您明确声明,否则您根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,将根据上述内容双许可,不附加任何其他条款或条件。

依赖项

~19–29MB
~510K SLoC