GithubApi


This is a work in progress!

Please don't put it into production yet.


What's there?

Not a whole lot, yet. The list of examples is pretty exhaustive.

How do I use it?

Start by adding it to your dependencies, then check the examples.

[dependencies]
githubapi = { git = "https://github.com/segfaultsourcery/githubapi", tag = "v0.1.0" }

Envelope

Result type

Every endpoint returns Result<GitHubApiResult<T>, GitHubApiError>.

GitHubApiResult


#![allow(unused_variables)]
fn main() {
pub struct GitHubApiResult<T> {
    pub result: T,
    pub raw_result: String,
    pub limits: Option<LimitRemainingReset>,
    pub owner: Option<String>,
    pub repository: Option<String>,
    pub next_page: Option<u64>,
}
}

GitHubApiError


#![allow(unused_variables)]
fn main() {
pub enum GitHubApiError {
    NotImplemented,
    JsonError(JsonError, String),
    GitHubError(String, String),
    ReqwestError(ReqwestError),
}
}

Examples

Get rate limit


#![allow(unused_variables)]
fn main() {
let gh = GitHubApi::new(Credentials::UsernamePassword(username, password));
let result = gh.get_rate_limit();
println!("{:#?}", result);
}

Get license


#![allow(unused_variables)]
fn main() {
let gh = GitHubApi::new(Credentials::UsernamePassword(username, password));
let license = gh.get_license("segfaultsourcery", "githubapi");
println!("{:#?}", license);
}

Get releases


#![allow(unused_variables)]
fn main() {
let gh = GitHubApi::new(Credentials::UsernamePassword(username, password));
for page in gh.get_releases("segfaultsourcery", "githubapi") {
    println!("{:#?}", page);
}
}

Get tags


#![allow(unused_variables)]
fn main() {
let gh = GitHubApi::new(Credentials::UsernamePassword(username, password));
for page in gh.get_tags("segfaultsourcery", "githubapi") {
    println!("{:#?}", page);
}
}