| @ -1,10 +1,75 @@ | |||||
| # go-github | |||||
| # go-github # | |||||
| go-github is Go library for accessing the [GitHub API][]. | go-github is Go library for accessing the [GitHub API][]. | ||||
| **Documentation:** <http://godoc.org/github.com/google/go-github> | |||||
| ## Usage ## | |||||
| Construct a new GitHub client, then use the various services on the client to | |||||
| access different parts of the GitHub API. For example, list all organizations | |||||
| for user "willnorris": | |||||
| ```go | |||||
| client := github.NewClient(nil) | |||||
| orgs, err := client.Organizations.List("willnorris", nil) | |||||
| ``` | |||||
| Some API methods have optional parameters than can be passed. For example, | |||||
| list recently updated repositories for org "github": | |||||
| ```go | |||||
| client := github.NewClient(nil) | |||||
| opt := &github.RepositoryListByOrgOptions{Sort: "updated"} | |||||
| repos, err := client.Repositories.ListByOrg("github", opt) | |||||
| ``` | |||||
| The go-github library does not directly handle authentication. Instead, when | |||||
| creating a new client, pass an `http.Client` than can handle authentication for | |||||
| you. The easiest, and recommended, way to do this is using the [goauth2][] | |||||
| library, but you can of course use any other library that provides an | |||||
| `http.Client`. For example, to use the goauth2 library with an existing OAuth | |||||
| access token: | |||||
| ```go | |||||
| t := &oauth.Transport{ | |||||
| Config: &oauth.Config{}, | |||||
| Token: &oauth.Token{AccessToken: "..."} | |||||
| } | |||||
| client := github.NewClient(t.Client()) | |||||
| // list all repositories for the authenticated user | |||||
| repos, err := client.Repositories.List(nil) | |||||
| ``` | |||||
| See the [goauth2 docs][] for complete instructions on using that library. | |||||
| Also note that when using an authenticated Client, all calls made by the client | |||||
| will include the specified OAuth token. Therefore, authenticated clients should | |||||
| almost never be shared between different users. | |||||
| [GitHub API]: http://developer.github.com/v3/ | [GitHub API]: http://developer.github.com/v3/ | ||||
| [goauth2]: https://code.google.com/p/goauth2/ | |||||
| [goauth2 docs]: http://godoc.org/code.google.com/p/goauth2/oauth | |||||
| ## Roadmap ## | |||||
| This library is being initially developed for an internal application at | |||||
| Google, so API methods will likely be implemented in the order that they are | |||||
| needed by that application. You can track the status of implementation in | |||||
| [this Google spreadsheet][]. Eventually, I would like to cover the entire | |||||
| GitHub API, so contributions are of course [always welcome][]. The calling | |||||
| pattern is pretty well established, so adding new methods is relatively | |||||
| straightforward. | |||||
| [this Google spreadhsheet]: https://docs.google.com/spreadsheet/ccc?key=0ApoVX4GOiXr-dGNKN1pObFh6ek1DR2FKUjBNZ1FmaEE&usp=sharing | |||||
| [always welcome]: CONTRIBUTING.md | |||||
| ## License | |||||
| ## License ## | |||||
| This library is distributed under the BSD-style license found in the LICENSE | This library is distributed under the BSD-style license found in the LICENSE | ||||
| file. | file. | ||||