mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
69 lines
2.6 KiB
Go
69 lines
2.6 KiB
Go
/*
|
|
Package gerrit provides a client for using the Gerrit API.
|
|
|
|
Construct a new Gerrit client, then use the various services on the client to
|
|
access different parts of the Gerrit API. For example:
|
|
|
|
instance := "https://go-review.googlesource.com/"
|
|
client, _ := gerrit.NewClient(instance, nil)
|
|
|
|
// Get all public projects
|
|
projects, _, err := client.Projects.ListProjects(nil)
|
|
|
|
Set optional parameters for an API method by passing an Options object.
|
|
|
|
// Get all projects with descriptions
|
|
opt := &gerrit.ProjectOptions{
|
|
Description: true,
|
|
}
|
|
projects, _, err := client.Projects.ListProjects(opt)
|
|
|
|
The services of a client divide the API into logical chunks and correspond to
|
|
the structure of the Gerrit API documentation at
|
|
https://gerrit-review.googlesource.com/Documentation/rest-api.html#_endpoints.
|
|
|
|
Authentication
|
|
|
|
The go-gerrit library supports various methods to support the authentication.
|
|
This methods are combined in the AuthenticationService that is available at client.Authentication.
|
|
|
|
One way is an authentication via HTTP cookie.
|
|
Some Gerrit instances hosted like the one hosted googlesource.com (e.g. https://go-review.googlesource.com/,
|
|
https://android-review.googlesource.com/ or https://gerrit-review.googlesource.com/) support HTTP Cookie authentication.
|
|
|
|
You need the cookie name and the cookie value.
|
|
You can get them by click on "Settings > HTTP Password > Obtain Password" in your Gerrit instance.
|
|
There you can receive your values.
|
|
The cookie name will be (mostly) "o" (if hosted on googlesource.com).
|
|
Your cookie secret will be something like "git-your@email.com=SomeHash...".
|
|
|
|
instance := "https://gerrit-review.googlesource.com/"
|
|
client, _ := gerrit.NewClient(instance, nil)
|
|
client.Authentication.SetCookieAuth("o", "my-cookie-secret")
|
|
|
|
self, _, _ := client.Accounts.GetAccount("self")
|
|
|
|
fmt.Printf("Username: %s", self.Name)
|
|
|
|
// Username: Andy G.
|
|
|
|
Some other Gerrit instances (like https://review.typo3.org/) has auth.gitBasicAuth activated.
|
|
With this you can authenticate with HTTP Basic like this:
|
|
|
|
instance := "https://review.typo3.org/"
|
|
client, _ := gerrit.NewClient(instance, nil)
|
|
client.Authentication.SetBasicAuth("andy.grunwald", "my secrect password")
|
|
|
|
self, _, _ := client.Accounts.GetAccount("self")
|
|
|
|
fmt.Printf("Username: %s", self.Name)
|
|
|
|
// Username: Andy Grunwald
|
|
|
|
Additionally when creating a new client, pass an http.Client that supports further actions for you.
|
|
For more information regarding authentication have a look at the Gerrit documentation:
|
|
https://gerrit-review.googlesource.com/Documentation/rest-api.html#authentication
|
|
|
|
*/
|
|
package gerrit
|