mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
67 lines
1.9 KiB
Go
67 lines
1.9 KiB
Go
package gerrit
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
)
|
|
|
|
// ChildProjectOptions specifies the parameters to the Child Project API endpoints.
|
|
//
|
|
// Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-projects.html#list-child-projects
|
|
type ChildProjectOptions struct {
|
|
// Recursive resolve the child projects of a project recursively.
|
|
// Child projects that are not visible to the calling user are ignored and are not resolved further.
|
|
Recursive int `url:"recursive,omitempty"`
|
|
}
|
|
|
|
// ListChildProjects lists the direct child projects of a project.
|
|
//
|
|
// Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-projects.html#list-child-projects
|
|
func (s *ProjectsService) ListChildProjects(projectName string, opt *ChildProjectOptions) (*[]ProjectInfo, *Response, error) {
|
|
u := fmt.Sprintf("projects/%s/children/", url.QueryEscape(projectName))
|
|
|
|
u, err := addOptions(u, opt)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
req, err := s.client.NewRequest("GET", u, nil)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
v := new([]ProjectInfo)
|
|
resp, err := s.client.Do(req, v)
|
|
if err != nil {
|
|
return nil, resp, err
|
|
}
|
|
|
|
return v, resp, err
|
|
}
|
|
|
|
// GetChildProject retrieves a child project.
|
|
// If a non-direct child project should be retrieved the parameter recursive must be set.
|
|
//
|
|
// Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-projects.html#get-child-project
|
|
func (s *ProjectsService) GetChildProject(projectName, childProjectName string, opt *ChildProjectOptions) (*ProjectInfo, *Response, error) {
|
|
u := fmt.Sprintf("projects/%s/children/%s", url.QueryEscape(projectName), url.QueryEscape(childProjectName))
|
|
|
|
u, err := addOptions(u, opt)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
req, err := s.client.NewRequest("GET", u, nil)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
v := new(ProjectInfo)
|
|
resp, err := s.client.Do(req, v)
|
|
if err != nil {
|
|
return nil, resp, err
|
|
}
|
|
|
|
return v, resp, err
|
|
}
|