| 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) | |
| } |