123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468 |
- //
- // Copyright 2017, Arkbriar
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- //
- package gitlab
- import (
- "fmt"
- "net/url"
- "time"
- )
- // AwardEmojiService handles communication with the emoji awards related methods
- // of the GitLab API.
- //
- // GitLab API docs: https://docs.gitlab.com/ce/api/award_emoji.html
- type AwardEmojiService struct {
- client *Client
- }
- // AwardEmoji represents a GitLab Award Emoji.
- //
- // GitLab API docs: https://docs.gitlab.com/ce/api/award_emoji.html
- type AwardEmoji struct {
- ID int `json:"id"`
- Name string `json:"name"`
- User struct {
- Name string `json:"name"`
- Username string `json:"username"`
- ID int `json:"id"`
- State string `json:"state"`
- AvatarURL string `json:"avatar_url"`
- WebURL string `json:"web_url"`
- } `json:"user"`
- CreatedAt *time.Time `json:"created_at"`
- UpdatedAt *time.Time `json:"updated_at"`
- AwardableID int `json:"awardable_id"`
- AwardableType string `json:"awardable_type"`
- }
- const (
- awardMergeRequest = "merge_requests"
- awardIssue = "issues"
- awardSnippets = "snippets"
- )
- // ListAwardEmojiOptions represents the available options for listing emoji
- // for each resources
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html
- type ListAwardEmojiOptions ListOptions
- // ListMergeRequestAwardEmoji gets a list of all award emoji on the merge request.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
- func (s *AwardEmojiService) ListMergeRequestAwardEmoji(pid interface{}, mergeRequestIID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
- return s.listAwardEmoji(pid, awardMergeRequest, mergeRequestIID, opt, options...)
- }
- // ListIssueAwardEmoji gets a list of all award emoji on the issue.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
- func (s *AwardEmojiService) ListIssueAwardEmoji(pid interface{}, issueIID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
- return s.listAwardEmoji(pid, awardIssue, issueIID, opt, options...)
- }
- // ListSnippetAwardEmoji gets a list of all award emoji on the snippet.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
- func (s *AwardEmojiService) ListSnippetAwardEmoji(pid interface{}, snippetID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
- return s.listAwardEmoji(pid, awardSnippets, snippetID, opt, options...)
- }
- func (s *AwardEmojiService) listAwardEmoji(pid interface{}, resource string, resourceID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
- project, err := parseID(pid)
- if err != nil {
- return nil, nil, err
- }
- u := fmt.Sprintf("projects/%s/%s/%d/award_emoji",
- url.QueryEscape(project),
- resource,
- resourceID,
- )
- req, err := s.client.NewRequest("GET", u, opt, options)
- if err != nil {
- return nil, nil, err
- }
- var as []*AwardEmoji
- resp, err := s.client.Do(req, &as)
- if err != nil {
- return nil, resp, err
- }
- return as, resp, err
- }
- // GetMergeRequestAwardEmoji get an award emoji from merge request.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
- func (s *AwardEmojiService) GetMergeRequestAwardEmoji(pid interface{}, mergeRequestIID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.getAwardEmoji(pid, awardMergeRequest, mergeRequestIID, awardID, options...)
- }
- // GetIssueAwardEmoji get an award emoji from issue.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
- func (s *AwardEmojiService) GetIssueAwardEmoji(pid interface{}, issueIID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.getAwardEmoji(pid, awardIssue, issueIID, awardID, options...)
- }
- // GetSnippetAwardEmoji get an award emoji from snippet.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
- func (s *AwardEmojiService) GetSnippetAwardEmoji(pid interface{}, snippetID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.getAwardEmoji(pid, awardSnippets, snippetID, awardID, options...)
- }
- func (s *AwardEmojiService) getAwardEmoji(pid interface{}, resource string, resourceID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- project, err := parseID(pid)
- if err != nil {
- return nil, nil, err
- }
- u := fmt.Sprintf("projects/%s/%s/%d/award_emoji/%d",
- url.QueryEscape(project),
- resource,
- resourceID,
- awardID,
- )
- req, err := s.client.NewRequest("GET", u, nil, options)
- if err != nil {
- return nil, nil, err
- }
- a := new(AwardEmoji)
- resp, err := s.client.Do(req, &a)
- if err != nil {
- return nil, resp, err
- }
- return a, resp, err
- }
- // CreateAwardEmojiOptions represents the available options for awarding emoji
- // for a resource
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji
- type CreateAwardEmojiOptions struct {
- Name string `json:"name"`
- }
- // CreateMergeRequestAwardEmoji get an award emoji from merge request.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji
- func (s *AwardEmojiService) CreateMergeRequestAwardEmoji(pid interface{}, mergeRequestIID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.createAwardEmoji(pid, awardMergeRequest, mergeRequestIID, opt, options...)
- }
- // CreateIssueAwardEmoji get an award emoji from issue.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji
- func (s *AwardEmojiService) CreateIssueAwardEmoji(pid interface{}, issueIID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.createAwardEmoji(pid, awardIssue, issueIID, opt, options...)
- }
- // CreateSnippetAwardEmoji get an award emoji from snippet.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji
- func (s *AwardEmojiService) CreateSnippetAwardEmoji(pid interface{}, snippetID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.createAwardEmoji(pid, awardSnippets, snippetID, opt, options...)
- }
- func (s *AwardEmojiService) createAwardEmoji(pid interface{}, resource string, resourceID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- project, err := parseID(pid)
- if err != nil {
- return nil, nil, err
- }
- u := fmt.Sprintf("projects/%s/%s/%d/award_emoji",
- url.QueryEscape(project),
- resource,
- resourceID,
- )
- req, err := s.client.NewRequest("POST", u, opt, options)
- if err != nil {
- return nil, nil, err
- }
- a := new(AwardEmoji)
- resp, err := s.client.Do(req, &a)
- if err != nil {
- return nil, resp, err
- }
- return a, resp, err
- }
- // DeleteIssueAwardEmoji delete award emoji on an issue.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji-on-a-note
- func (s *AwardEmojiService) DeleteIssueAwardEmoji(pid interface{}, issueIID, awardID int, options ...OptionFunc) (*Response, error) {
- return s.deleteAwardEmoji(pid, awardMergeRequest, issueIID, awardID, options...)
- }
- // DeleteMergeRequestAwardEmoji delete award emoji on a merge request.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji-on-a-note
- func (s *AwardEmojiService) DeleteMergeRequestAwardEmoji(pid interface{}, mergeRequestIID, awardID int, options ...OptionFunc) (*Response, error) {
- return s.deleteAwardEmoji(pid, awardMergeRequest, mergeRequestIID, awardID, options...)
- }
- // DeleteSnippetAwardEmoji delete award emoji on a snippet.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji-on-a-note
- func (s *AwardEmojiService) DeleteSnippetAwardEmoji(pid interface{}, snippetID, awardID int, options ...OptionFunc) (*Response, error) {
- return s.deleteAwardEmoji(pid, awardMergeRequest, snippetID, awardID, options...)
- }
- // DeleteAwardEmoji Delete an award emoji on the specified resource.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#delete-an-award-emoji
- func (s *AwardEmojiService) deleteAwardEmoji(pid interface{}, resource string, resourceID, awardID int, options ...OptionFunc) (*Response, error) {
- project, err := parseID(pid)
- if err != nil {
- return nil, err
- }
- u := fmt.Sprintf("projects/%s/%s/%d/award_emoji/%d", url.QueryEscape(project), resource,
- resourceID, awardID)
- req, err := s.client.NewRequest("DELETE", u, nil, options)
- if err != nil {
- return nil, err
- }
- return s.client.Do(req, nil)
- }
- // ListIssuesAwardEmojiOnNote gets a list of all award emoji on a note from the
- // issue.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) ListIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
- return s.listAwardEmojiOnNote(pid, awardIssue, issueID, noteID, opt, options...)
- }
- // ListMergeRequestAwardEmojiOnNote gets a list of all award emoji on a note
- // from the merge request.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) ListMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
- return s.listAwardEmojiOnNote(pid, awardMergeRequest, mergeRequestIID, noteID, opt, options...)
- }
- // ListSnippetAwardEmojiOnNote gets a list of all award emoji on a note from the
- // snippet.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) ListSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
- return s.listAwardEmojiOnNote(pid, awardSnippets, snippetIID, noteID, opt, options...)
- }
- func (s *AwardEmojiService) listAwardEmojiOnNote(pid interface{}, resources string, ressourceID, noteID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
- project, err := parseID(pid)
- if err != nil {
- return nil, nil, err
- }
- u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji", url.QueryEscape(project), resources,
- ressourceID, noteID)
- req, err := s.client.NewRequest("GET", u, opt, options)
- if err != nil {
- return nil, nil, err
- }
- var as []*AwardEmoji
- resp, err := s.client.Do(req, &as)
- if err != nil {
- return nil, resp, err
- }
- return as, resp, err
- }
- // GetIssuesAwardEmojiOnNote gets an award emoji on a note from an issue.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) GetIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.getSingleNoteAwardEmoji(pid, awardIssue, issueID, noteID, awardID, options...)
- }
- // GetMergeRequestAwardEmojiOnNote gets an award emoji on a note from a
- // merge request.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) GetMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.getSingleNoteAwardEmoji(pid, awardMergeRequest, mergeRequestIID, noteID, awardID,
- options...)
- }
- // GetSnippetAwardEmojiOnNote gets an award emoji on a note from a snippet.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) GetSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.getSingleNoteAwardEmoji(pid, awardSnippets, snippetIID, noteID, awardID, options...)
- }
- func (s *AwardEmojiService) getSingleNoteAwardEmoji(pid interface{}, ressource string, resourceID, noteID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- project, err := parseID(pid)
- if err != nil {
- return nil, nil, err
- }
- u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji/%d",
- url.QueryEscape(project),
- ressource,
- resourceID,
- noteID,
- awardID,
- )
- req, err := s.client.NewRequest("GET", u, nil, options)
- if err != nil {
- return nil, nil, err
- }
- a := new(AwardEmoji)
- resp, err := s.client.Do(req, &a)
- if err != nil {
- return nil, resp, err
- }
- return a, resp, err
- }
- // CreateIssuesAwardEmojiOnNote gets an award emoji on a note from an issue.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) CreateIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.createAwardEmojiOnNote(pid, awardIssue, issueID, noteID, opt, options...)
- }
- // CreateMergeRequestAwardEmojiOnNote gets an award emoji on a note from a
- // merge request.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) CreateMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.createAwardEmojiOnNote(pid, awardMergeRequest, mergeRequestIID, noteID, opt, options...)
- }
- // CreateSnippetAwardEmojiOnNote gets an award emoji on a note from a snippet.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) CreateSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- return s.createAwardEmojiOnNote(pid, awardSnippets, snippetIID, noteID, opt, options...)
- }
- // CreateAwardEmojiOnNote award emoji on a note.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji-on-a-note
- func (s *AwardEmojiService) createAwardEmojiOnNote(pid interface{}, resource string, resourceID, noteID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
- project, err := parseID(pid)
- if err != nil {
- return nil, nil, err
- }
- u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji",
- url.QueryEscape(project),
- resource,
- resourceID,
- noteID,
- )
- req, err := s.client.NewRequest("POST", u, nil, options)
- if err != nil {
- return nil, nil, err
- }
- a := new(AwardEmoji)
- resp, err := s.client.Do(req, &a)
- if err != nil {
- return nil, resp, err
- }
- return a, resp, err
- }
- // DeleteIssuesAwardEmojiOnNote deletes an award emoji on a note from an issue.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) DeleteIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID, awardID int, options ...OptionFunc) (*Response, error) {
- return s.deleteAwardEmojiOnNote(pid, awardIssue, issueID, noteID, awardID, options...)
- }
- // DeleteMergeRequestAwardEmojiOnNote deletes an award emoji on a note from a
- // merge request.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) DeleteMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID, awardID int, options ...OptionFunc) (*Response, error) {
- return s.deleteAwardEmojiOnNote(pid, awardMergeRequest, mergeRequestIID, noteID, awardID,
- options...)
- }
- // DeleteSnippetAwardEmojiOnNote deletes an award emoji on a note from a snippet.
- //
- // GitLab API docs:
- // https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
- func (s *AwardEmojiService) DeleteSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID, awardID int, options ...OptionFunc) (*Response, error) {
- return s.deleteAwardEmojiOnNote(pid, awardSnippets, snippetIID, noteID, awardID, options...)
- }
- func (s *AwardEmojiService) deleteAwardEmojiOnNote(pid interface{}, resource string, resourceID, noteID, awardID int, options ...OptionFunc) (*Response, error) {
- project, err := parseID(pid)
- if err != nil {
- return nil, err
- }
- u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji/%d",
- url.QueryEscape(project),
- resource,
- resourceID,
- noteID,
- awardID,
- )
- req, err := s.client.NewRequest("DELETE", u, nil, options)
- if err != nil {
- return nil, err
- }
- return s.client.Do(req, nil)
- }
|