...

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

Documentation: github.com/xanzy/go-gitlab

     1  //
     2  // Copyright 2021, Sander van Harmelen
     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  // ResourceLabelEventsService handles communication with the event related
    26  // methods of the GitLab API.
    27  //
    28  // GitLab API docs: https://docs.gitlab.com/ee/api/resource_label_events.html
    29  type ResourceLabelEventsService struct {
    30  	client *Client
    31  }
    32  
    33  // LabelEvent represents a resource label event.
    34  //
    35  // GitLab API docs:
    36  // https://docs.gitlab.com/ee/api/resource_label_events.html#get-single-issue-label-event
    37  type LabelEvent struct {
    38  	ID           int        `json:"id"`
    39  	Action       string     `json:"action"`
    40  	CreatedAt    *time.Time `json:"created_at"`
    41  	ResourceType string     `json:"resource_type"`
    42  	ResourceID   int        `json:"resource_id"`
    43  	User         struct {
    44  		ID        int    `json:"id"`
    45  		Name      string `json:"name"`
    46  		Username  string `json:"username"`
    47  		State     string `json:"state"`
    48  		AvatarURL string `json:"avatar_url"`
    49  		WebURL    string `json:"web_url"`
    50  	} `json:"user"`
    51  	Label struct {
    52  		ID          int    `json:"id"`
    53  		Name        string `json:"name"`
    54  		Color       string `json:"color"`
    55  		TextColor   string `json:"text_color"`
    56  		Description string `json:"description"`
    57  	} `json:"label"`
    58  }
    59  
    60  // ListLabelEventsOptions represents the options for all resource label events
    61  // list methods.
    62  //
    63  // GitLab API docs:
    64  // https://docs.gitlab.com/ee/api/resource_label_events.html#list-project-issue-label-events
    65  type ListLabelEventsOptions struct {
    66  	ListOptions
    67  }
    68  
    69  // ListIssueLabelEvents retrieves resource label events for the
    70  // specified project and issue.
    71  //
    72  // GitLab API docs:
    73  // https://docs.gitlab.com/ee/api/resource_label_events.html#list-project-issue-label-events
    74  func (s *ResourceLabelEventsService) ListIssueLabelEvents(pid interface{}, issue int, opt *ListLabelEventsOptions, options ...RequestOptionFunc) ([]*LabelEvent, *Response, error) {
    75  	project, err := parseID(pid)
    76  	if err != nil {
    77  		return nil, nil, err
    78  	}
    79  	u := fmt.Sprintf("projects/%s/issues/%d/resource_label_events", PathEscape(project), issue)
    80  
    81  	req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
    82  	if err != nil {
    83  		return nil, nil, err
    84  	}
    85  
    86  	var ls []*LabelEvent
    87  	resp, err := s.client.Do(req, &ls)
    88  	if err != nil {
    89  		return nil, resp, err
    90  	}
    91  
    92  	return ls, resp, nil
    93  }
    94  
    95  // GetIssueLabelEvent gets a single issue-label-event.
    96  //
    97  // GitLab API docs:
    98  // https://docs.gitlab.com/ee/api/resource_label_events.html#get-single-issue-label-event
    99  func (s *ResourceLabelEventsService) GetIssueLabelEvent(pid interface{}, issue int, event int, options ...RequestOptionFunc) (*LabelEvent, *Response, error) {
   100  	project, err := parseID(pid)
   101  	if err != nil {
   102  		return nil, nil, err
   103  	}
   104  	u := fmt.Sprintf("projects/%s/issues/%d/resource_label_events/%d", PathEscape(project), issue, event)
   105  
   106  	req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
   107  	if err != nil {
   108  		return nil, nil, err
   109  	}
   110  
   111  	l := new(LabelEvent)
   112  	resp, err := s.client.Do(req, l)
   113  	if err != nil {
   114  		return nil, resp, err
   115  	}
   116  
   117  	return l, resp, nil
   118  }
   119  
   120  // ListGroupEpicLabelEvents retrieves resource label events for the specified
   121  // group and epic.
   122  //
   123  // GitLab API docs:
   124  // https://docs.gitlab.com/ee/api/resource_label_events.html#list-group-epic-label-events
   125  func (s *ResourceLabelEventsService) ListGroupEpicLabelEvents(gid interface{}, epic int, opt *ListLabelEventsOptions, options ...RequestOptionFunc) ([]*LabelEvent, *Response, error) {
   126  	group, err := parseID(gid)
   127  	if err != nil {
   128  		return nil, nil, err
   129  	}
   130  	u := fmt.Sprintf("groups/%s/epics/%d/resource_label_events", PathEscape(group), epic)
   131  
   132  	req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
   133  	if err != nil {
   134  		return nil, nil, err
   135  	}
   136  
   137  	var ls []*LabelEvent
   138  	resp, err := s.client.Do(req, &ls)
   139  	if err != nil {
   140  		return nil, resp, err
   141  	}
   142  
   143  	return ls, resp, nil
   144  }
   145  
   146  // GetGroupEpicLabelEvent gets a single group epic label event.
   147  //
   148  // GitLab API docs:
   149  // https://docs.gitlab.com/ee/api/resource_label_events.html#get-single-epic-label-event
   150  func (s *ResourceLabelEventsService) GetGroupEpicLabelEvent(gid interface{}, epic int, event int, options ...RequestOptionFunc) (*LabelEvent, *Response, error) {
   151  	group, err := parseID(gid)
   152  	if err != nil {
   153  		return nil, nil, err
   154  	}
   155  	u := fmt.Sprintf("groups/%s/epics/%d/resource_label_events/%d", PathEscape(group), epic, event)
   156  
   157  	req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
   158  	if err != nil {
   159  		return nil, nil, err
   160  	}
   161  
   162  	l := new(LabelEvent)
   163  	resp, err := s.client.Do(req, l)
   164  	if err != nil {
   165  		return nil, resp, err
   166  	}
   167  
   168  	return l, resp, nil
   169  }
   170  
   171  // ListMergeRequestsLabelEvents retrieves resource label events for the specified
   172  // project and merge request.
   173  //
   174  // GitLab API docs:
   175  // https://docs.gitlab.com/ee/api/resource_label_events.html#list-project-merge-request-label-events
   176  func (s *ResourceLabelEventsService) ListMergeRequestsLabelEvents(pid interface{}, request int, opt *ListLabelEventsOptions, options ...RequestOptionFunc) ([]*LabelEvent, *Response, error) {
   177  	project, err := parseID(pid)
   178  	if err != nil {
   179  		return nil, nil, err
   180  	}
   181  	u := fmt.Sprintf("projects/%s/merge_requests/%d/resource_label_events", PathEscape(project), request)
   182  
   183  	req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
   184  	if err != nil {
   185  		return nil, nil, err
   186  	}
   187  
   188  	var ls []*LabelEvent
   189  	resp, err := s.client.Do(req, &ls)
   190  	if err != nil {
   191  		return nil, resp, err
   192  	}
   193  
   194  	return ls, resp, nil
   195  }
   196  
   197  // GetMergeRequestLabelEvent gets a single merge request label event.
   198  //
   199  // GitLab API docs:
   200  // https://docs.gitlab.com/ee/api/resource_label_events.html#get-single-merge-request-label-event
   201  func (s *ResourceLabelEventsService) GetMergeRequestLabelEvent(pid interface{}, request int, event int, options ...RequestOptionFunc) (*LabelEvent, *Response, error) {
   202  	project, err := parseID(pid)
   203  	if err != nil {
   204  		return nil, nil, err
   205  	}
   206  	u := fmt.Sprintf("projects/%s/merge_requests/%d/resource_label_events/%d", PathEscape(project), request, event)
   207  
   208  	req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
   209  	if err != nil {
   210  		return nil, nil, err
   211  	}
   212  
   213  	l := new(LabelEvent)
   214  	resp, err := s.client.Do(req, l)
   215  	if err != nil {
   216  		return nil, resp, err
   217  	}
   218  
   219  	return l, resp, nil
   220  }
   221  

View as plain text