github.com/google/go-github/v60@v60.0.0/github/activity_events.go (about)

     1  // Copyright 2013 The go-github AUTHORS. All rights reserved.
     2  //
     3  // Use of this source code is governed by a BSD-style
     4  // license that can be found in the LICENSE file.
     5  
     6  package github
     7  
     8  import (
     9  	"context"
    10  	"fmt"
    11  )
    12  
    13  // ListEvents drinks from the firehose of all public events across GitHub.
    14  //
    15  // GitHub API docs: https://docs.github.com/rest/activity/events#list-public-events
    16  //
    17  //meta:operation GET /events
    18  func (s *ActivityService) ListEvents(ctx context.Context, opts *ListOptions) ([]*Event, *Response, error) {
    19  	u, err := addOptions("events", opts)
    20  	if err != nil {
    21  		return nil, nil, err
    22  	}
    23  
    24  	req, err := s.client.NewRequest("GET", u, nil)
    25  	if err != nil {
    26  		return nil, nil, err
    27  	}
    28  
    29  	var events []*Event
    30  	resp, err := s.client.Do(ctx, req, &events)
    31  	if err != nil {
    32  		return nil, resp, err
    33  	}
    34  
    35  	return events, resp, nil
    36  }
    37  
    38  // ListRepositoryEvents lists events for a repository.
    39  //
    40  // GitHub API docs: https://docs.github.com/rest/activity/events#list-repository-events
    41  //
    42  //meta:operation GET /repos/{owner}/{repo}/events
    43  func (s *ActivityService) ListRepositoryEvents(ctx context.Context, owner, repo string, opts *ListOptions) ([]*Event, *Response, error) {
    44  	u := fmt.Sprintf("repos/%v/%v/events", owner, repo)
    45  	u, err := addOptions(u, opts)
    46  	if err != nil {
    47  		return nil, nil, err
    48  	}
    49  
    50  	req, err := s.client.NewRequest("GET", u, nil)
    51  	if err != nil {
    52  		return nil, nil, err
    53  	}
    54  
    55  	var events []*Event
    56  	resp, err := s.client.Do(ctx, req, &events)
    57  	if err != nil {
    58  		return nil, resp, err
    59  	}
    60  
    61  	return events, resp, nil
    62  }
    63  
    64  // ListIssueEventsForRepository lists issue events for a repository.
    65  //
    66  // GitHub API docs: https://docs.github.com/rest/issues/events#list-issue-events-for-a-repository
    67  //
    68  //meta:operation GET /repos/{owner}/{repo}/issues/events
    69  func (s *ActivityService) ListIssueEventsForRepository(ctx context.Context, owner, repo string, opts *ListOptions) ([]*IssueEvent, *Response, error) {
    70  	u := fmt.Sprintf("repos/%v/%v/issues/events", owner, repo)
    71  	u, err := addOptions(u, opts)
    72  	if err != nil {
    73  		return nil, nil, err
    74  	}
    75  
    76  	req, err := s.client.NewRequest("GET", u, nil)
    77  	if err != nil {
    78  		return nil, nil, err
    79  	}
    80  
    81  	var events []*IssueEvent
    82  	resp, err := s.client.Do(ctx, req, &events)
    83  	if err != nil {
    84  		return nil, resp, err
    85  	}
    86  
    87  	return events, resp, nil
    88  }
    89  
    90  // ListEventsForRepoNetwork lists public events for a network of repositories.
    91  //
    92  // GitHub API docs: https://docs.github.com/rest/activity/events#list-public-events-for-a-network-of-repositories
    93  //
    94  //meta:operation GET /networks/{owner}/{repo}/events
    95  func (s *ActivityService) ListEventsForRepoNetwork(ctx context.Context, owner, repo string, opts *ListOptions) ([]*Event, *Response, error) {
    96  	u := fmt.Sprintf("networks/%v/%v/events", owner, repo)
    97  	u, err := addOptions(u, opts)
    98  	if err != nil {
    99  		return nil, nil, err
   100  	}
   101  
   102  	req, err := s.client.NewRequest("GET", u, nil)
   103  	if err != nil {
   104  		return nil, nil, err
   105  	}
   106  
   107  	var events []*Event
   108  	resp, err := s.client.Do(ctx, req, &events)
   109  	if err != nil {
   110  		return nil, resp, err
   111  	}
   112  
   113  	return events, resp, nil
   114  }
   115  
   116  // ListEventsForOrganization lists public events for an organization.
   117  //
   118  // GitHub API docs: https://docs.github.com/rest/activity/events#list-public-organization-events
   119  //
   120  //meta:operation GET /orgs/{org}/events
   121  func (s *ActivityService) ListEventsForOrganization(ctx context.Context, org string, opts *ListOptions) ([]*Event, *Response, error) {
   122  	u := fmt.Sprintf("orgs/%v/events", org)
   123  	u, err := addOptions(u, opts)
   124  	if err != nil {
   125  		return nil, nil, err
   126  	}
   127  
   128  	req, err := s.client.NewRequest("GET", u, nil)
   129  	if err != nil {
   130  		return nil, nil, err
   131  	}
   132  
   133  	var events []*Event
   134  	resp, err := s.client.Do(ctx, req, &events)
   135  	if err != nil {
   136  		return nil, resp, err
   137  	}
   138  
   139  	return events, resp, nil
   140  }
   141  
   142  // ListEventsPerformedByUser lists the events performed by a user. If publicOnly is
   143  // true, only public events will be returned.
   144  //
   145  // GitHub API docs: https://docs.github.com/rest/activity/events#list-events-for-the-authenticated-user
   146  // GitHub API docs: https://docs.github.com/rest/activity/events#list-public-events-for-a-user
   147  //
   148  //meta:operation GET /users/{username}/events
   149  //meta:operation GET /users/{username}/events/public
   150  func (s *ActivityService) ListEventsPerformedByUser(ctx context.Context, user string, publicOnly bool, opts *ListOptions) ([]*Event, *Response, error) {
   151  	var u string
   152  	if publicOnly {
   153  		u = fmt.Sprintf("users/%v/events/public", user)
   154  	} else {
   155  		u = fmt.Sprintf("users/%v/events", user)
   156  	}
   157  	u, err := addOptions(u, opts)
   158  	if err != nil {
   159  		return nil, nil, err
   160  	}
   161  
   162  	req, err := s.client.NewRequest("GET", u, nil)
   163  	if err != nil {
   164  		return nil, nil, err
   165  	}
   166  
   167  	var events []*Event
   168  	resp, err := s.client.Do(ctx, req, &events)
   169  	if err != nil {
   170  		return nil, resp, err
   171  	}
   172  
   173  	return events, resp, nil
   174  }
   175  
   176  // ListEventsReceivedByUser lists the events received by a user. If publicOnly is
   177  // true, only public events will be returned.
   178  //
   179  // GitHub API docs: https://docs.github.com/rest/activity/events#list-events-received-by-the-authenticated-user
   180  // GitHub API docs: https://docs.github.com/rest/activity/events#list-public-events-received-by-a-user
   181  //
   182  //meta:operation GET /users/{username}/received_events
   183  //meta:operation GET /users/{username}/received_events/public
   184  func (s *ActivityService) ListEventsReceivedByUser(ctx context.Context, user string, publicOnly bool, opts *ListOptions) ([]*Event, *Response, error) {
   185  	var u string
   186  	if publicOnly {
   187  		u = fmt.Sprintf("users/%v/received_events/public", user)
   188  	} else {
   189  		u = fmt.Sprintf("users/%v/received_events", user)
   190  	}
   191  	u, err := addOptions(u, opts)
   192  	if err != nil {
   193  		return nil, nil, err
   194  	}
   195  
   196  	req, err := s.client.NewRequest("GET", u, nil)
   197  	if err != nil {
   198  		return nil, nil, err
   199  	}
   200  
   201  	var events []*Event
   202  	resp, err := s.client.Do(ctx, req, &events)
   203  	if err != nil {
   204  		return nil, resp, err
   205  	}
   206  
   207  	return events, resp, nil
   208  }
   209  
   210  // ListUserEventsForOrganization provides the user’s organization dashboard. You
   211  // must be authenticated as the user to view this.
   212  //
   213  // GitHub API docs: https://docs.github.com/rest/activity/events#list-organization-events-for-the-authenticated-user
   214  //
   215  //meta:operation GET /users/{username}/events/orgs/{org}
   216  func (s *ActivityService) ListUserEventsForOrganization(ctx context.Context, org, user string, opts *ListOptions) ([]*Event, *Response, error) {
   217  	u := fmt.Sprintf("users/%v/events/orgs/%v", user, org)
   218  	u, err := addOptions(u, opts)
   219  	if err != nil {
   220  		return nil, nil, err
   221  	}
   222  
   223  	req, err := s.client.NewRequest("GET", u, nil)
   224  	if err != nil {
   225  		return nil, nil, err
   226  	}
   227  
   228  	var events []*Event
   229  	resp, err := s.client.Do(ctx, req, &events)
   230  	if err != nil {
   231  		return nil, resp, err
   232  	}
   233  
   234  	return events, resp, nil
   235  }