hubcaps
a Rust interface for GitHub
## installation
Add the following to your `Cargo.toml` file
```toml
[dependencies]
hubcaps = "0.6"
```
## usage
Basic usage requires a user agent string and
optionally a flavor of `hubcaps::Credentials` for making requests as a particular
GitHub user.
For user authenticated requests you'll typically want to use
`hubcaps::Credentials::Token` with a
[personal access token](https://github.com/settings/tokens).
```rust
use hubcaps::{Credentials, Github};
fn main() {
let github = Github::new(
"my-cool-user-agent/0.1.0",
Credentials::Token("personal-access-token".to_string()),
);
}
```
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](examples/) for some getting started examples
### repositories
Typically the reference point of most GitHub services is a repository
```rust
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](examples/repos.rs) for examples
### branches
Branches is a service for listing repository branches
```rust
let branches = repo.branches();
```
### labels
Labels is a service for tagging resources like issues and pulls with names which you can later group and filter on.
```rust
use hubcaps::labels::LabelOptions;
let labels = repo.labels();
// create new labels
labels.create(
&LabelOptions::new(
"rustic", "ccc"
)
)
```
### deployments
Deployments is a service for orchestrating deployments of applications sourced from GitHub repositories
```rust
let deployments = repo.deployments();
```
See [examples directory](examples/deployments.rs) for examples
### pulls
Pulls is a service for issuing code change requests against a repository
```rust
let pulls = repo.pulls();
```
See [examples directory](examples/pulls.rs) for examples
### issues
Issues is a service for tracking bugs for a repository
```rust
let issues = repo.issues();
```
See [examples directory](examples/issues.rs) for examples
### releases
Releases is a service for tracking changes for a stable releases of a versioned library or application
```rust
let releases = repo.releases();
```
### gists
Gists is a service for micro repositories
```rust
let gists = github.gists();
```
See [examples directory](examples/gists.rs) for examples
### hooks
Hooks is a service for managing repository hooks
```rust
let hooks = repo.hooks();
```
See [examples directory](examples/hooks.rs) for examples
### search
Search provides a raw string query search for indexed data. Currently only search for issues is supported
```rust
let search_issues = github.search().issues();
```
### teams
Teams is a service for listing repository and organization teams
```rust
let teams = repo.teams();
```
See [examples directory](examples/teams.rs) for examples
Doug Tangren (softprops) 2015-2020