aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/xanzy/go-gitlab/merge_request_approvals.go
diff options
context:
space:
mode:
authorAmine Hilaly <hilalyamine@gmail.com>2019-07-09 22:54:20 +0200
committerAmine Hilaly <hilalyamine@gmail.com>2019-07-23 17:18:04 +0200
commit15d12fb6c9d935e112a7c72fa94d661c51cbaae3 (patch)
tree30de7e884d913bedbde67d91fe4219393450c089 /vendor/github.com/xanzy/go-gitlab/merge_request_approvals.go
parenta2a40cfd45ca2a4e959e9be6b1a4cc5ad72b1121 (diff)
downloadgit-bug-15d12fb6c9d935e112a7c72fa94d661c51cbaae3.tar.gz
vendors: add github.com/xanzy/go-gitlab vendors
Diffstat (limited to 'vendor/github.com/xanzy/go-gitlab/merge_request_approvals.go')
-rw-r--r--vendor/github.com/xanzy/go-gitlab/merge_request_approvals.go128
1 files changed, 128 insertions, 0 deletions
diff --git a/vendor/github.com/xanzy/go-gitlab/merge_request_approvals.go b/vendor/github.com/xanzy/go-gitlab/merge_request_approvals.go
new file mode 100644
index 00000000..43b96520
--- /dev/null
+++ b/vendor/github.com/xanzy/go-gitlab/merge_request_approvals.go
@@ -0,0 +1,128 @@
+package gitlab
+
+import (
+ "fmt"
+ "time"
+)
+
+// MergeRequestApprovalsService handles communication with the merge request
+// approvals related methods of the GitLab API. This includes reading/updating
+// approval settings and approve/unapproving merge requests
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/merge_request_approvals.html
+type MergeRequestApprovalsService struct {
+ client *Client
+}
+
+// MergeRequestApprovals represents GitLab merge request approvals.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/merge_request_approvals.html#merge-request-level-mr-approvals
+type MergeRequestApprovals struct {
+ ID int `json:"id"`
+ ProjectID int `json:"project_id"`
+ Title string `json:"title"`
+ Description string `json:"description"`
+ State string `json:"state"`
+ CreatedAt *time.Time `json:"created_at"`
+ UpdatedAt *time.Time `json:"updated_at"`
+ MergeStatus string `json:"merge_status"`
+ ApprovalsBeforeMerge int `json:"approvals_before_merge"`
+ ApprovalsRequired int `json:"approvals_required"`
+ ApprovalsLeft int `json:"approvals_left"`
+ ApprovedBy []*MergeRequestApproverUser `json:"approved_by"`
+ Approvers []*MergeRequestApproverUser `json:"approvers"`
+ ApproverGroups []*MergeRequestApproverGroup `json:"approver_groups"`
+}
+
+// MergeRequestApproverGroup represents GitLab project level merge request approver group.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/merge_request_approvals.html#project-level-mr-approvals
+type MergeRequestApproverGroup struct {
+ Group struct {
+ ID int `json:"id"`
+ Name string `json:"name"`
+ Path string `json:"path"`
+ Description string `json:"description"`
+ Visibility string `json:"visibility"`
+ AvatarURL string `json:"avatar_url"`
+ WebURL string `json:"web_url"`
+ FullName string `json:"full_name"`
+ FullPath string `json:"full_path"`
+ LFSEnabled bool `json:"lfs_enabled"`
+ RequestAccessEnabled bool `json:"request_access_enabled"`
+ }
+}
+
+// MergeRequestApproverUser represents GitLab project level merge request approver user.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/merge_request_approvals.html#project-level-mr-approvals
+type MergeRequestApproverUser struct {
+ User struct {
+ ID int `json:"id"`
+ Name string `json:"name"`
+ Username string `json:"username"`
+ State string `json:"state"`
+ AvatarURL string `json:"avatar_url"`
+ WebURL string `json:"web_url"`
+ }
+}
+
+func (m MergeRequestApprovals) String() string {
+ return Stringify(m)
+}
+
+// ApproveMergeRequestOptions represents the available ApproveMergeRequest() options.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/merge_request_approvals.html#approve-merge-request
+type ApproveMergeRequestOptions struct {
+ SHA *string `url:"sha,omitempty" json:"sha,omitempty"`
+}
+
+// ApproveMergeRequest approves a merge request on GitLab. If a non-empty sha
+// is provided then it must match the sha at the HEAD of the MR.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/merge_request_approvals.html#approve-merge-request
+func (s *MergeRequestApprovalsService) ApproveMergeRequest(pid interface{}, mr int, opt *ApproveMergeRequestOptions, options ...OptionFunc) (*MergeRequestApprovals, *Response, error) {
+ project, err := parseID(pid)
+ if err != nil {
+ return nil, nil, err
+ }
+ u := fmt.Sprintf("projects/%s/merge_requests/%d/approve", pathEscape(project), mr)
+
+ req, err := s.client.NewRequest("POST", u, opt, options)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ m := new(MergeRequestApprovals)
+ resp, err := s.client.Do(req, m)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return m, resp, err
+}
+
+// UnapproveMergeRequest unapproves a previously approved merge request on GitLab.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/merge_request_approvals.html#unapprove-merge-request
+func (s *MergeRequestApprovalsService) UnapproveMergeRequest(pid interface{}, mr int, options ...OptionFunc) (*Response, error) {
+ project, err := parseID(pid)
+ if err != nil {
+ return nil, err
+ }
+ u := fmt.Sprintf("projects/%s/merge_requests/%d/unapprove", pathEscape(project), mr)
+
+ req, err := s.client.NewRequest("POST", u, nil, options)
+ if err != nil {
+ return nil, err
+ }
+
+ return s.client.Do(req, nil)
+}