a rust interface for github
Find them here
Basic usage requires a user-defined useragent string, a hyper::Client
instance and a flavor of hubcaps::Credentials
for authorization.
For user authenticated requests you'll typically want to use hubcaps::Credentials::Token
with a personal access token. For anonymous requests you can use hubcaps::Credentials::None
extern crate hyper;
extern crate hubcaps;
use hyper::Client;
use hubcaps::{Credentials, Github};
fn main() {
let client = Client::new();
let github = Github::new(
"my-cool-user-agent/0.1.0",
&client,
Credentials::Token("personal-access-token")
);
}
Github instances define functions for accessing api services that map closely to their url structure.
As a convention, api methods that expect arguments are represented as functions that accept a struct representing those arguments with an optional builder interface for convenience.
Typically the reference point of most github services is a repository
let repo = github.repo("user", "repo");
With a repo instance on hand, you can access a number of sub services, like labels
, deployments
, pulls
, issues
, and releases
. Each of this are named functions exported from the repo interface.
Labels is a service for tagging resources like issues and pulls with names which you can later group and filter on.
use hubcaps::LabelOptions;
let labels = repo.labels();
// create new labels
println!(
"{:?}", labels.create(
&LabelOptions::new(
"rustic", "ccc"
)
).unwrap()
);
// list labels
for l in labels.list().unwrap() {
println!("{:?}", l)
}
// delete labels
labels.delete("rustic").unwrap();
Deployments is a service for orchestating deployments of applications sourced from github repositories
let deployments = repo.deployments();
Pulls is a service for issuing code change requests against a repository
let pulls = repo.pulls();
Issues is a service for tracking bugs for a repository
let issues = repo.issues();
Releases is a service for tracking changes for a stable releases of a versioned library or application
let releases = repo.releases();
Gists is a service for micro repositories
let gists = github.gists();
Doug Tangren (softprops) 2015-2016