Commit 69b2d484 authored by Michael Lihs's avatar Michael Lihs Committed by Sander van Harmelen

Add support for merge request: create todo and merge request: get diff versions (#282)

* Add support for merge request: create todo

see https://docs.gitlab.com/ce/api/merge_requests.html#create-a-todo

* Add support for merge request: get diff versions
parent 9e953ddd
...@@ -125,6 +125,27 @@ func (m MergeRequestApprovals) String() string { ...@@ -125,6 +125,27 @@ func (m MergeRequestApprovals) String() string {
return Stringify(m) return Stringify(m)
} }
// MergeRequestDiffVersion represents Gitlab merge request version.
//
// Gitlab API docs:
// https://docs.gitlab.com/ce/api/merge_requests.html#get-a-single-mr-diff-version
type MergeRequestDiffVersion struct {
ID int `json:"id"`
HeadCommitSHA string `json:"head_commit_sha,omitempty"`
BaseCommitSHA string `json:"base_commit_sha,omitempty"`
StartCommitSHA string `json:"start_commit_sha,omitempty"`
CreatedAt *time.Time `json:"created_at,omitempty"`
MergeRequestID int `json:"merge_request_id,omitempty"`
State string `json:"state,omitempty"`
RealSize string `json:"real_size,omitempty"`
Commits []*Commit `json:"commits,omitempty"`
Diffs []*Diff `json:"diffs,omitempty"`
}
func (m MergeRequestDiffVersion) String() string {
return Stringify(m)
}
// ListMergeRequestsOptions represents the available ListMergeRequests() // ListMergeRequestsOptions represents the available ListMergeRequests()
// options. // options.
// //
...@@ -512,6 +533,56 @@ func (s *MergeRequestsService) CancelMergeWhenPipelineSucceeds(pid interface{}, ...@@ -512,6 +533,56 @@ func (s *MergeRequestsService) CancelMergeWhenPipelineSucceeds(pid interface{},
return m, resp, err return m, resp, err
} }
// GetMergeRequestDiffVersions get a list of merge request diff versions.
//
// GitLab API docs:
// https://docs.gitlab.com/ce/api/merge_requests.html#get-mr-diff-versions
func (s *MergeRequestsService) GetMergeRequestDiffVersions(pid interface{}, mergeRequest int, options ...OptionFunc) ([]*MergeRequestDiffVersion, *Response, error) {
project, err := parseID(pid)
if err != nil {
return nil, nil, err
}
u := fmt.Sprintf("projects/%s/merge_requests/%d/versions", url.QueryEscape(project), mergeRequest)
req, err := s.client.NewRequest("GET", u, nil, options)
if err != nil {
return nil, nil, err
}
var v []*MergeRequestDiffVersion
resp, err := s.client.Do(req, &v)
if err != nil {
return nil, resp, err
}
return v, resp, err
}
// GetSingleMergeRequestDiffVersion get a single MR diff version
//
// GitLab API docs:
// https://docs.gitlab.com/ce/api/merge_requests.html#get-a-single-mr-diff-version
func (s *MergeRequestsService) GetSingleMergeRequestDiffVersion(pid interface{}, mergeRequest, version int, options ...OptionFunc) (*MergeRequestDiffVersion, *Response, error) {
project, err := parseID(pid)
if err != nil {
return nil, nil, err
}
u := fmt.Sprintf("projects/%s/merge_requests/%d/versions/%d", url.QueryEscape(project), mergeRequest, version)
req, err := s.client.NewRequest("GET", u, nil, options)
if err != nil {
return nil, nil, err
}
var v = new(MergeRequestDiffVersion)
resp, err := s.client.Do(req, v)
if err != nil {
return nil, resp, err
}
return v, resp, err
}
// Subscribe subscribes the authenticated user to the given merge request // Subscribe subscribes the authenticated user to the given merge request
// to receive notifications. If the user is already subscribed to the // to receive notifications. If the user is already subscribed to the
// merge request, the status code 304 is returned. // merge request, the status code 304 is returned.
...@@ -566,6 +637,33 @@ func (s *MergeRequestsService) UnsubscribeFromMergeRequest(pid interface{}, merg ...@@ -566,6 +637,33 @@ func (s *MergeRequestsService) UnsubscribeFromMergeRequest(pid interface{}, merg
return m, resp, err return m, resp, err
} }
// CreateTodo manually creates a todo for the current user on a merge request.
// If there already exists a todo for the user on that merge request,
// status code 304 is returned.
//
// GitLab API docs:
// https://docs.gitlab.com/ce/api/merge_requests.html#create-a-todo
func (s *MergeRequestsService) CreateTodo(pid interface{}, mergeRequest int, options ...OptionFunc) (*Todo, *Response, error) {
project, err := parseID(pid)
if err != nil {
return nil, nil, err
}
u := fmt.Sprintf("projects/%s/merge_requests/%d/todo", url.QueryEscape(project), mergeRequest)
req, err := s.client.NewRequest("POST", u, nil, options)
if err != nil {
return nil, nil, err
}
t := new(Todo)
resp, err := s.client.Do(req, t)
if err != nil {
return nil, resp, err
}
return t, resp, err
}
// SetTimeEstimate sets the time estimate for a single project merge request. // SetTimeEstimate sets the time estimate for a single project merge request.
// //
// GitLab API docs: // GitLab API docs:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment