From 719fe70855476e5b8a5549ff41e713dbb8e56c50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ar=C4=B1l=20Bozoluk?= Date: Mon, 19 Aug 2013 12:52:56 +0300 Subject: [PATCH] Added ListEventsRecievedByUser Added functionality for ListEventsRecievedByUser. Api reference: http://developer.github.com/v3/activity/events/#list-events-that-a-user-has-received --- github/activity_events.go | 29 ++++++++++++++++++++++ github/activity_events_test.go | 44 ++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) diff --git a/github/activity_events.go b/github/activity_events.go index dee3761..b9b3217 100644 --- a/github/activity_events.go +++ b/github/activity_events.go @@ -86,3 +86,32 @@ func (s *ActivityService) ListEventsPerformedByUser(user string, publicOnly bool resp, err := s.client.Do(req, events) return *events, resp, err } + +// ListEventsRecievedByUser lists the events recieved by a user. If publicOnly is +// true, only public events will be returned. +// +// GitHub API docs: http://developer.github.com/v3/activity/events/#list-events-that-a-user-has-received +func (s *ActivityService) ListEventsRecievedByUser(user string, publicOnly bool, opt *ListOptions) ([]Event, *Response, error) { + var u string + if publicOnly { + u = fmt.Sprintf("users/%v/received_events/public", user) + } else { + u = fmt.Sprintf("users/%v/received_events", user) + } + + if opt != nil { + params := url.Values{ + "page": []string{strconv.Itoa(opt.Page)}, + } + u += "?" + params.Encode() + } + + req, err := s.client.NewRequest("GET", u, nil) + if err != nil { + return nil, nil, err + } + + events := new([]Event) + resp, err := s.client.Do(req, events) + return *events, resp, err +} diff --git a/github/activity_events_test.go b/github/activity_events_test.go index b362e28..27b0692 100644 --- a/github/activity_events_test.go +++ b/github/activity_events_test.go @@ -57,6 +57,50 @@ func TestActivityService_ListEventsPerformedByUser_publicOnly(t *testing.T) { } } +func TestActivityService_ListEventsRecievedByUser_all(t *testing.T) { + setup() + defer teardown() + + mux.HandleFunc("/users/u/received_events", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testFormValues(t, r, values{ + "page": "2", + }) + fmt.Fprint(w, `[{"id":"1"},{"id":"2"}]`) + }) + + opt := &ListOptions{Page: 2} + events, _, err := client.Activity.ListEventsRecievedByUser("u", false, opt) + if err != nil { + t.Errorf("Events.ListRecievedByUser returned error: %v", err) + } + + want := []Event{Event{ID: "1"}, Event{ID: "2"}} + if !reflect.DeepEqual(events, want) { + t.Errorf("Events.ListRecievedUser returned %+v, want %+v", events, want) + } +} + +func TestActivityService_ListEventsRecievedByUser_publicOnly(t *testing.T) { + setup() + defer teardown() + + mux.HandleFunc("/users/u/received_events/public", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + fmt.Fprint(w, `[{"id":"1"},{"id":"2"}]`) + }) + + events, _, err := client.Activity.ListEventsRecievedByUser("u", true, nil) + if err != nil { + t.Errorf("Events.ListRecievedByUser returned error: %v", err) + } + + want := []Event{Event{ID: "1"}, Event{ID: "2"}} + if !reflect.DeepEqual(events, want) { + t.Errorf("Events.ListRecievedByUser returned %+v, want %+v", events, want) + } +} + func TestActivity_EventPayload_typed(t *testing.T) { raw := []byte(`{"type": "PushEvent","payload":{"push_id": 1}}`) var event *Event