a rust interface for github
The goal and motivation behind these are not to intentionally make breaking changes, but rather to adopt evolving community standards
- replace builder implementations with derive_builder crate type derivation
Add the following to your Cargo.toml
file
[dependencies]
hubcaps = "0.4"
Basic usage requires a user agent string (because github requires this),
optionally a flavor of hubcaps::Credentials
for making requests as a particular
github user, and a tokio_core Handle
.
For user authenticated requests you'll typically want to use
hubcaps::Credentials::Token
with a
personal access token.
extern crate hyper;
extern crate hubcaps;
extern crate tokio_core;
use tokio_core::reactor::Core;
use hubcaps::{Credentials, Github};
fn main() {
let mut core = Core::new().expect("reactor fail");
let github = Github::new(
"my-cool-user-agent/0.1.0",
Some(Credentials::Token("personal-access-token")),
&core.handle()
);
}
Github instances define methods 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 of construction.
See examples directory for some getting started examples
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
, releases
, and many more.
Each of this are named functions exported from the repo interface.
See examples directory for examples
Branches is a service for listing repository branches
let branches = repo.branches();
Labels is a service for tagging resources like issues and pulls with names which you can later group and filter on.
use hubcaps::labels::LabelOptions;
let labels = repo.labels();
// create new labels
labels.create(
&LabelOptions::new(
"rustic", "ccc"
)
)
Deployments is a service for orchestrating deployments of applications sourced from github repositories
let deployments = repo.deployments();
See examples directory for examples
Pulls is a service for issuing code change requests against a repository
let pulls = repo.pulls();
See examples directory for examples
Issues is a service for tracking bugs for a repository
let issues = repo.issues();
See examples directory for examples
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();
See examples directory for examples
Gists is a service for managing repository hooks
let hooks = repo.hooks();
See examples directory for examples
Search provides a raw string query search for indexed data. Currently only search for issues is supported
let search_issues = github.search().issues();
Teams is a service for listing repository and organization teams
let teams = repo.teams();
See examples directory for examples
Doug Tangren (softprops) 2015-2017