| package gerrit |
| |
| import ( |
| "fmt" |
| "net/url" |
| ) |
| |
| // DashboardSectionInfo entity contains information about a section in a dashboard. |
| type DashboardSectionInfo struct { |
| Name string `json:"name"` |
| Query string `json:"query"` |
| } |
| |
| // DashboardInput entity contains information to create/update a project dashboard. |
| type DashboardInput struct { |
| ID string `json:"id,omitempty"` |
| CommitMessage string `json:"commit_message,omitempty"` |
| } |
| |
| // DashboardInfo entity contains information about a project dashboard. |
| type DashboardInfo struct { |
| ID string `json:"id"` |
| Project string `json:"project"` |
| DefiningProject string `json:"defining_project"` |
| Ref string `json:"ref"` |
| Path string `json:"path"` |
| Description string `json:"description,omitempty"` |
| Foreach string `json:"foreach,omitempty"` |
| URL string `json:"url"` |
| Default bool `json:"default"` |
| Title string `json:"title,omitempty"` |
| Sections []DashboardSectionInfo `json:"sections"` |
| } |
| |
| // ListDashboards list custom dashboards for a project. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-projects.html#list-dashboards |
| func (s *ProjectsService) ListDashboards(projectName string) (*[]DashboardInfo, *Response, error) { |
| u := fmt.Sprintf("projects/%s/dashboards/", url.QueryEscape(projectName)) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new([]DashboardInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // GetDashboard list custom dashboards for a project. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-projects.html#get-dashboard |
| func (s *ProjectsService) GetDashboard(projectName, dashboardName string) (*DashboardInfo, *Response, error) { |
| u := fmt.Sprintf("projects/%s/dashboards/%s", url.QueryEscape(projectName), url.QueryEscape(dashboardName)) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(DashboardInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // SetDashboard updates/Creates a project dashboard. |
| // Currently only supported for the default dashboard. |
| // |
| // The creation/update information for the dashboard must be provided in the request body as a DashboardInput entity. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-projects.html#set-dashboard |
| func (s *ProjectsService) SetDashboard(projectName, dashboardID string, input *DashboardInput) (*DashboardInfo, *Response, error) { |
| u := fmt.Sprintf("projects/%s/dashboards/%s", url.QueryEscape(projectName), url.QueryEscape(dashboardID)) |
| |
| req, err := s.client.NewRequest("PUT", u, input) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(DashboardInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // DeleteDashboard deletes a project dashboard. |
| // Currently only supported for the default dashboard. |
| // |
| // The request body does not need to include a DashboardInput entity if no commit message is specified. |
| // Please note that some proxies prohibit request bodies for DELETE requests. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-projects.html#delete-dashboard |
| func (s *ProjectsService) DeleteDashboard(projectName, dashboardID string, input *DashboardInput) (*Response, error) { |
| u := fmt.Sprintf("projects/%s/dashboards/%s", url.QueryEscape(projectName), url.QueryEscape(dashboardID)) |
| return s.client.DeleteRequest(u, input) |
| } |