...

Source file src/github.com/xanzy/go-gitlab/award_emojis.go

Documentation: github.com/xanzy/go-gitlab

     1  //
     2  // Copyright 2021, Arkbriar
     3  //
     4  // Licensed under the Apache License, Version 2.0 (the "License");
     5  // you may not use this file except in compliance with the License.
     6  // You may obtain a copy of the License at
     7  //
     8  //     http://www.apache.org/licenses/LICENSE-2.0
     9  //
    10  // Unless required by applicable law or agreed to in writing, software
    11  // distributed under the License is distributed on an "AS IS" BASIS,
    12  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  // See the License for the specific language governing permissions and
    14  // limitations under the License.
    15  //
    16  
    17  package gitlab
    18  
    19  import (
    20  	"fmt"
    21  	"net/http"
    22  	"time"
    23  )
    24  
    25  // AwardEmojiService handles communication with the emoji awards related methods
    26  // of the GitLab API.
    27  //
    28  // GitLab API docs: https://docs.gitlab.com/ee/api/award_emoji.html
    29  type AwardEmojiService struct {
    30  	client *Client
    31  }
    32  
    33  // AwardEmoji represents a GitLab Award Emoji.
    34  //
    35  // GitLab API docs: https://docs.gitlab.com/ee/api/award_emoji.html
    36  type AwardEmoji struct {
    37  	ID   int    `json:"id"`
    38  	Name string `json:"name"`
    39  	User struct {
    40  		Name      string `json:"name"`
    41  		Username  string `json:"username"`
    42  		ID        int    `json:"id"`
    43  		State     string `json:"state"`
    44  		AvatarURL string `json:"avatar_url"`
    45  		WebURL    string `json:"web_url"`
    46  	} `json:"user"`
    47  	CreatedAt     *time.Time `json:"created_at"`
    48  	UpdatedAt     *time.Time `json:"updated_at"`
    49  	AwardableID   int        `json:"awardable_id"`
    50  	AwardableType string     `json:"awardable_type"`
    51  }
    52  
    53  const (
    54  	awardMergeRequest = "merge_requests"
    55  	awardIssue        = "issues"
    56  	awardSnippets     = "snippets"
    57  )
    58  
    59  // ListAwardEmojiOptions represents the available options for listing emoji
    60  // for each resources
    61  //
    62  // GitLab API docs:
    63  // https://docs.gitlab.com/ee/api/award_emoji.html
    64  type ListAwardEmojiOptions ListOptions
    65  
    66  // ListMergeRequestAwardEmoji gets a list of all award emoji on the merge request.
    67  //
    68  // GitLab API docs:
    69  // https://docs.gitlab.com/ee/api/award_emoji.html#list-an-awardables-award-emojis
    70  func (s *AwardEmojiService) ListMergeRequestAwardEmoji(pid interface{}, mergeRequestIID int, opt *ListAwardEmojiOptions, options ...RequestOptionFunc) ([]*AwardEmoji, *Response, error) {
    71  	return s.listAwardEmoji(pid, awardMergeRequest, mergeRequestIID, opt, options...)
    72  }
    73  
    74  // ListIssueAwardEmoji gets a list of all award emoji on the issue.
    75  //
    76  // GitLab API docs:
    77  // https://docs.gitlab.com/ee/api/award_emoji.html#list-an-awardables-award-emojis
    78  func (s *AwardEmojiService) ListIssueAwardEmoji(pid interface{}, issueIID int, opt *ListAwardEmojiOptions, options ...RequestOptionFunc) ([]*AwardEmoji, *Response, error) {
    79  	return s.listAwardEmoji(pid, awardIssue, issueIID, opt, options...)
    80  }
    81  
    82  // ListSnippetAwardEmoji gets a list of all award emoji on the snippet.
    83  //
    84  // GitLab API docs:
    85  // https://docs.gitlab.com/ee/api/award_emoji.html#list-an-awardables-award-emojis
    86  func (s *AwardEmojiService) ListSnippetAwardEmoji(pid interface{}, snippetID int, opt *ListAwardEmojiOptions, options ...RequestOptionFunc) ([]*AwardEmoji, *Response, error) {
    87  	return s.listAwardEmoji(pid, awardSnippets, snippetID, opt, options...)
    88  }
    89  
    90  func (s *AwardEmojiService) listAwardEmoji(pid interface{}, resource string, resourceID int, opt *ListAwardEmojiOptions, options ...RequestOptionFunc) ([]*AwardEmoji, *Response, error) {
    91  	project, err := parseID(pid)
    92  	if err != nil {
    93  		return nil, nil, err
    94  	}
    95  	u := fmt.Sprintf("projects/%s/%s/%d/award_emoji",
    96  		PathEscape(project),
    97  		resource,
    98  		resourceID,
    99  	)
   100  
   101  	req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
   102  	if err != nil {
   103  		return nil, nil, err
   104  	}
   105  
   106  	var as []*AwardEmoji
   107  	resp, err := s.client.Do(req, &as)
   108  	if err != nil {
   109  		return nil, resp, err
   110  	}
   111  
   112  	return as, resp, nil
   113  }
   114  
   115  // GetMergeRequestAwardEmoji get an award emoji from merge request.
   116  //
   117  // GitLab API docs:
   118  // https://docs.gitlab.com/ee/api/award_emoji.html#get-single-award-emoji
   119  func (s *AwardEmojiService) GetMergeRequestAwardEmoji(pid interface{}, mergeRequestIID, awardID int, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   120  	return s.getAwardEmoji(pid, awardMergeRequest, mergeRequestIID, awardID, options...)
   121  }
   122  
   123  // GetIssueAwardEmoji get an award emoji from issue.
   124  //
   125  // GitLab API docs:
   126  // https://docs.gitlab.com/ee/api/award_emoji.html#get-single-award-emoji
   127  func (s *AwardEmojiService) GetIssueAwardEmoji(pid interface{}, issueIID, awardID int, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   128  	return s.getAwardEmoji(pid, awardIssue, issueIID, awardID, options...)
   129  }
   130  
   131  // GetSnippetAwardEmoji get an award emoji from snippet.
   132  //
   133  // GitLab API docs:
   134  // https://docs.gitlab.com/ee/api/award_emoji.html#get-single-award-emoji
   135  func (s *AwardEmojiService) GetSnippetAwardEmoji(pid interface{}, snippetID, awardID int, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   136  	return s.getAwardEmoji(pid, awardSnippets, snippetID, awardID, options...)
   137  }
   138  
   139  func (s *AwardEmojiService) getAwardEmoji(pid interface{}, resource string, resourceID, awardID int, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   140  	project, err := parseID(pid)
   141  	if err != nil {
   142  		return nil, nil, err
   143  	}
   144  	u := fmt.Sprintf("projects/%s/%s/%d/award_emoji/%d",
   145  		PathEscape(project),
   146  		resource,
   147  		resourceID,
   148  		awardID,
   149  	)
   150  
   151  	req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
   152  	if err != nil {
   153  		return nil, nil, err
   154  	}
   155  
   156  	a := new(AwardEmoji)
   157  	resp, err := s.client.Do(req, &a)
   158  	if err != nil {
   159  		return nil, resp, err
   160  	}
   161  
   162  	return a, resp, nil
   163  }
   164  
   165  // CreateAwardEmojiOptions represents the available options for awarding emoji
   166  // for a resource
   167  //
   168  // GitLab API docs:
   169  // https://docs.gitlab.com/ee/api/award_emoji.html#award-a-new-emoji
   170  type CreateAwardEmojiOptions struct {
   171  	Name string `json:"name"`
   172  }
   173  
   174  // CreateMergeRequestAwardEmoji get an award emoji from merge request.
   175  //
   176  // GitLab API docs:
   177  // https://docs.gitlab.com/ee/api/award_emoji.html#award-a-new-emoji
   178  func (s *AwardEmojiService) CreateMergeRequestAwardEmoji(pid interface{}, mergeRequestIID int, opt *CreateAwardEmojiOptions, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   179  	return s.createAwardEmoji(pid, awardMergeRequest, mergeRequestIID, opt, options...)
   180  }
   181  
   182  // CreateIssueAwardEmoji get an award emoji from issue.
   183  //
   184  // GitLab API docs:
   185  // https://docs.gitlab.com/ee/api/award_emoji.html#award-a-new-emoji
   186  func (s *AwardEmojiService) CreateIssueAwardEmoji(pid interface{}, issueIID int, opt *CreateAwardEmojiOptions, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   187  	return s.createAwardEmoji(pid, awardIssue, issueIID, opt, options...)
   188  }
   189  
   190  // CreateSnippetAwardEmoji get an award emoji from snippet.
   191  //
   192  // GitLab API docs:
   193  // https://docs.gitlab.com/ee/api/award_emoji.html#award-a-new-emoji
   194  func (s *AwardEmojiService) CreateSnippetAwardEmoji(pid interface{}, snippetID int, opt *CreateAwardEmojiOptions, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   195  	return s.createAwardEmoji(pid, awardSnippets, snippetID, opt, options...)
   196  }
   197  
   198  func (s *AwardEmojiService) createAwardEmoji(pid interface{}, resource string, resourceID int, opt *CreateAwardEmojiOptions, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   199  	project, err := parseID(pid)
   200  	if err != nil {
   201  		return nil, nil, err
   202  	}
   203  	u := fmt.Sprintf("projects/%s/%s/%d/award_emoji",
   204  		PathEscape(project),
   205  		resource,
   206  		resourceID,
   207  	)
   208  
   209  	req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
   210  	if err != nil {
   211  		return nil, nil, err
   212  	}
   213  
   214  	a := new(AwardEmoji)
   215  	resp, err := s.client.Do(req, &a)
   216  	if err != nil {
   217  		return nil, resp, err
   218  	}
   219  
   220  	return a, resp, nil
   221  }
   222  
   223  // DeleteIssueAwardEmoji delete award emoji on an issue.
   224  //
   225  // GitLab API docs:
   226  // https://docs.gitlab.com/ee/api/award_emoji.html#delete-an-award-emoji
   227  func (s *AwardEmojiService) DeleteIssueAwardEmoji(pid interface{}, issueIID, awardID int, options ...RequestOptionFunc) (*Response, error) {
   228  	return s.deleteAwardEmoji(pid, awardIssue, issueIID, awardID, options...)
   229  }
   230  
   231  // DeleteMergeRequestAwardEmoji delete award emoji on a merge request.
   232  //
   233  // GitLab API docs:
   234  // https://docs.gitlab.com/ee/api/award_emoji.html#delete-an-award-emoji
   235  func (s *AwardEmojiService) DeleteMergeRequestAwardEmoji(pid interface{}, mergeRequestIID, awardID int, options ...RequestOptionFunc) (*Response, error) {
   236  	return s.deleteAwardEmoji(pid, awardMergeRequest, mergeRequestIID, awardID, options...)
   237  }
   238  
   239  // DeleteSnippetAwardEmoji delete award emoji on a snippet.
   240  //
   241  // GitLab API docs:
   242  // https://docs.gitlab.com/ee/api/award_emoji.html#delete-an-award-emoji
   243  func (s *AwardEmojiService) DeleteSnippetAwardEmoji(pid interface{}, snippetID, awardID int, options ...RequestOptionFunc) (*Response, error) {
   244  	return s.deleteAwardEmoji(pid, awardSnippets, snippetID, awardID, options...)
   245  }
   246  
   247  // DeleteAwardEmoji Delete an award emoji on the specified resource.
   248  //
   249  // GitLab API docs:
   250  // https://docs.gitlab.com/ee/api/award_emoji.html#delete-an-award-emoji
   251  func (s *AwardEmojiService) deleteAwardEmoji(pid interface{}, resource string, resourceID, awardID int, options ...RequestOptionFunc) (*Response, error) {
   252  	project, err := parseID(pid)
   253  	if err != nil {
   254  		return nil, err
   255  	}
   256  	u := fmt.Sprintf("projects/%s/%s/%d/award_emoji/%d", PathEscape(project), resource,
   257  		resourceID, awardID)
   258  
   259  	req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
   260  	if err != nil {
   261  		return nil, err
   262  	}
   263  	return s.client.Do(req, nil)
   264  }
   265  
   266  // ListIssuesAwardEmojiOnNote gets a list of all award emoji on a note from the
   267  // issue.
   268  //
   269  // GitLab API docs:
   270  // https://docs.gitlab.com/ee/api/award_emoji.html#list-a-comments-award-emojis
   271  func (s *AwardEmojiService) ListIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID int, opt *ListAwardEmojiOptions, options ...RequestOptionFunc) ([]*AwardEmoji, *Response, error) {
   272  	return s.listAwardEmojiOnNote(pid, awardIssue, issueID, noteID, opt, options...)
   273  }
   274  
   275  // ListMergeRequestAwardEmojiOnNote gets a list of all award emoji on a note
   276  // from the merge request.
   277  //
   278  // GitLab API docs:
   279  // https://docs.gitlab.com/ee/api/award_emoji.html#list-a-comments-award-emojis
   280  func (s *AwardEmojiService) ListMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID int, opt *ListAwardEmojiOptions, options ...RequestOptionFunc) ([]*AwardEmoji, *Response, error) {
   281  	return s.listAwardEmojiOnNote(pid, awardMergeRequest, mergeRequestIID, noteID, opt, options...)
   282  }
   283  
   284  // ListSnippetAwardEmojiOnNote gets a list of all award emoji on a note from the
   285  // snippet.
   286  //
   287  // GitLab API docs:
   288  // https://docs.gitlab.com/ee/api/award_emoji.html#list-a-comments-award-emojis
   289  func (s *AwardEmojiService) ListSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID int, opt *ListAwardEmojiOptions, options ...RequestOptionFunc) ([]*AwardEmoji, *Response, error) {
   290  	return s.listAwardEmojiOnNote(pid, awardSnippets, snippetIID, noteID, opt, options...)
   291  }
   292  
   293  func (s *AwardEmojiService) listAwardEmojiOnNote(pid interface{}, resources string, ressourceID, noteID int, opt *ListAwardEmojiOptions, options ...RequestOptionFunc) ([]*AwardEmoji, *Response, error) {
   294  	project, err := parseID(pid)
   295  	if err != nil {
   296  		return nil, nil, err
   297  	}
   298  	u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji", PathEscape(project), resources,
   299  		ressourceID, noteID)
   300  
   301  	req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
   302  	if err != nil {
   303  		return nil, nil, err
   304  	}
   305  
   306  	var as []*AwardEmoji
   307  	resp, err := s.client.Do(req, &as)
   308  	if err != nil {
   309  		return nil, resp, err
   310  	}
   311  
   312  	return as, resp, nil
   313  }
   314  
   315  // GetIssuesAwardEmojiOnNote gets an award emoji on a note from an issue.
   316  //
   317  // GitLab API docs:
   318  // https://docs.gitlab.com/ee/api/award_emoji.html#get-an-award-emoji-for-a-comment
   319  func (s *AwardEmojiService) GetIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID, awardID int, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   320  	return s.getSingleNoteAwardEmoji(pid, awardIssue, issueID, noteID, awardID, options...)
   321  }
   322  
   323  // GetMergeRequestAwardEmojiOnNote gets an award emoji on a note from a
   324  // merge request.
   325  //
   326  // GitLab API docs:
   327  // https://docs.gitlab.com/ee/api/award_emoji.html#get-an-award-emoji-for-a-comment
   328  func (s *AwardEmojiService) GetMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID, awardID int, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   329  	return s.getSingleNoteAwardEmoji(pid, awardMergeRequest, mergeRequestIID, noteID, awardID,
   330  		options...)
   331  }
   332  
   333  // GetSnippetAwardEmojiOnNote gets an award emoji on a note from a snippet.
   334  //
   335  // GitLab API docs:
   336  // https://docs.gitlab.com/ee/api/award_emoji.html#get-an-award-emoji-for-a-comment
   337  func (s *AwardEmojiService) GetSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID, awardID int, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   338  	return s.getSingleNoteAwardEmoji(pid, awardSnippets, snippetIID, noteID, awardID, options...)
   339  }
   340  
   341  func (s *AwardEmojiService) getSingleNoteAwardEmoji(pid interface{}, ressource string, resourceID, noteID, awardID int, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   342  	project, err := parseID(pid)
   343  	if err != nil {
   344  		return nil, nil, err
   345  	}
   346  	u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji/%d",
   347  		PathEscape(project),
   348  		ressource,
   349  		resourceID,
   350  		noteID,
   351  		awardID,
   352  	)
   353  
   354  	req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
   355  	if err != nil {
   356  		return nil, nil, err
   357  	}
   358  
   359  	a := new(AwardEmoji)
   360  	resp, err := s.client.Do(req, &a)
   361  	if err != nil {
   362  		return nil, resp, err
   363  	}
   364  
   365  	return a, resp, nil
   366  }
   367  
   368  // CreateIssuesAwardEmojiOnNote gets an award emoji on a note from an issue.
   369  //
   370  // GitLab API docs:
   371  // https://docs.gitlab.com/ee/api/award_emoji.html#award-a-new-emoji-on-a-comment
   372  func (s *AwardEmojiService) CreateIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID int, opt *CreateAwardEmojiOptions, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   373  	return s.createAwardEmojiOnNote(pid, awardIssue, issueID, noteID, opt, options...)
   374  }
   375  
   376  // CreateMergeRequestAwardEmojiOnNote gets an award emoji on a note from a
   377  // merge request.
   378  //
   379  // GitLab API docs:
   380  // https://docs.gitlab.com/ee/api/award_emoji.html#award-a-new-emoji-on-a-comment
   381  func (s *AwardEmojiService) CreateMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID int, opt *CreateAwardEmojiOptions, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   382  	return s.createAwardEmojiOnNote(pid, awardMergeRequest, mergeRequestIID, noteID, opt, options...)
   383  }
   384  
   385  // CreateSnippetAwardEmojiOnNote gets an award emoji on a note from a snippet.
   386  //
   387  // GitLab API docs:
   388  // https://docs.gitlab.com/ee/api/award_emoji.html#award-a-new-emoji-on-a-comment
   389  func (s *AwardEmojiService) CreateSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID int, opt *CreateAwardEmojiOptions, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   390  	return s.createAwardEmojiOnNote(pid, awardSnippets, snippetIID, noteID, opt, options...)
   391  }
   392  
   393  // CreateAwardEmojiOnNote award emoji on a note.
   394  //
   395  // GitLab API docs:
   396  // https://docs.gitlab.com/ee/api/award_emoji.html#award-a-new-emoji-on-a-comment
   397  func (s *AwardEmojiService) createAwardEmojiOnNote(pid interface{}, resource string, resourceID, noteID int, opt *CreateAwardEmojiOptions, options ...RequestOptionFunc) (*AwardEmoji, *Response, error) {
   398  	project, err := parseID(pid)
   399  	if err != nil {
   400  		return nil, nil, err
   401  	}
   402  	u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji",
   403  		PathEscape(project),
   404  		resource,
   405  		resourceID,
   406  		noteID,
   407  	)
   408  
   409  	req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
   410  	if err != nil {
   411  		return nil, nil, err
   412  	}
   413  
   414  	a := new(AwardEmoji)
   415  	resp, err := s.client.Do(req, &a)
   416  	if err != nil {
   417  		return nil, resp, err
   418  	}
   419  
   420  	return a, resp, nil
   421  }
   422  
   423  // DeleteIssuesAwardEmojiOnNote deletes an award emoji on a note from an issue.
   424  //
   425  // GitLab API docs:
   426  // https://docs.gitlab.com/ee/api/award_emoji.html#delete-an-award-emoji-from-a-comment
   427  func (s *AwardEmojiService) DeleteIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID, awardID int, options ...RequestOptionFunc) (*Response, error) {
   428  	return s.deleteAwardEmojiOnNote(pid, awardIssue, issueID, noteID, awardID, options...)
   429  }
   430  
   431  // DeleteMergeRequestAwardEmojiOnNote deletes an award emoji on a note from a
   432  // merge request.
   433  //
   434  // GitLab API docs:
   435  // https://docs.gitlab.com/ee/api/award_emoji.html#delete-an-award-emoji-from-a-comment
   436  func (s *AwardEmojiService) DeleteMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID, awardID int, options ...RequestOptionFunc) (*Response, error) {
   437  	return s.deleteAwardEmojiOnNote(pid, awardMergeRequest, mergeRequestIID, noteID, awardID,
   438  		options...)
   439  }
   440  
   441  // DeleteSnippetAwardEmojiOnNote deletes an award emoji on a note from a snippet.
   442  //
   443  // GitLab API docs:
   444  // https://docs.gitlab.com/ee/api/award_emoji.html#delete-an-award-emoji-from-a-comment
   445  func (s *AwardEmojiService) DeleteSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID, awardID int, options ...RequestOptionFunc) (*Response, error) {
   446  	return s.deleteAwardEmojiOnNote(pid, awardSnippets, snippetIID, noteID, awardID, options...)
   447  }
   448  
   449  func (s *AwardEmojiService) deleteAwardEmojiOnNote(pid interface{}, resource string, resourceID, noteID, awardID int, options ...RequestOptionFunc) (*Response, error) {
   450  	project, err := parseID(pid)
   451  	if err != nil {
   452  		return nil, err
   453  	}
   454  	u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji/%d",
   455  		PathEscape(project),
   456  		resource,
   457  		resourceID,
   458  		noteID,
   459  		awardID,
   460  	)
   461  
   462  	req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
   463  	if err != nil {
   464  		return nil, err
   465  	}
   466  
   467  	return s.client.Do(req, nil)
   468  }
   469  

View as plain text