Browse Source

Added remaining list event functions

Added Functionality:
ListPublicEvents
ListRepositoryEvents
ListIssueEventsForRepository
ListEventsForRepoNetwork
ListEventsForOrganization
Arıl Bozoluk 13 years ago
committed by Will Norris
parent
commit
f899cc42b1
2 changed files with 236 additions and 6 deletions
  1. +112
    -2
      github/activity_events.go
  2. +124
    -4
      github/activity_events_test.go

+ 112
- 2
github/activity_events.go View File

@ -58,6 +58,116 @@ type PushEventCommit struct {
Distinct bool `json:"distinct"` Distinct bool `json:"distinct"`
} }
// List public events.
//
// GitHub API docs: http://developer.github.com/v3/activity/events/#list-public-events
func (s *ActivityService) ListPublicEvents(opt *ListOptions) ([]Event, *Response, error) {
u := "events"
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
}
// List repository events.
//
// GitHub API docs: http://developer.github.com/v3/activity/events/#list-repository-events
func (s *ActivityService) ListRepositoryEvents(owner, repo string, opt *ListOptions) ([]Event, *Response, error) {
u := fmt.Sprintf("repos/%v/%v/events", owner, repo)
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
}
// List issue events for a repository.
//
// GitHub API docs: http://developer.github.com/v3/activity/events/#list-issue-events-for-a-repository
func (s *ActivityService) ListIssueEventsForRepository(owner, repo string, opt *ListOptions) ([]Event, *Response, error) {
u := fmt.Sprintf("repos/%v/%v/issues/events", owner, repo)
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
}
// List public events for a network of repositories
//
// GitHub API docs: http://developer.github.com/v3/activity/events/#list-public-events-for-a-network-of-repositories
func (s *ActivityService) ListEventsForRepoNetwork(owner, repo string, opt *ListOptions) ([]Event, *Response, error) {
u := fmt.Sprintf("networks/%v/%v/events", owner, repo)
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
}
// List public events for an organization
//
// GitHub API docs: http://developer.github.com/v3/activity/events/#list-public-events-for-an-organization
func (s *ActivityService) ListPublicEventsForOrganization(org string, opt *ListOptions) ([]Event, *Response, error) {
u := fmt.Sprintf("orgs/%v/events", org)
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
}
// ListEventsPerformedByUser lists the events performed by a user. If publicOnly is // ListEventsPerformedByUser lists the events performed by a user. If publicOnly is
// true, only public events will be returned. // true, only public events will be returned.
// //
@ -116,11 +226,11 @@ func (s *ActivityService) ListEventsRecievedByUser(user string, publicOnly bool,
return *events, resp, err return *events, resp, err
} }
// ListEventsForOrganization provides the user’s organization dashboard. You
// ListUserEventsForOrganization provides the user’s organization dashboard. You
// must be authenticated as the user to view this. // must be authenticated as the user to view this.
// //
// GitHub API docs: http://developer.github.com/v3/activity/events/#list-events-for-an-organization // GitHub API docs: http://developer.github.com/v3/activity/events/#list-events-for-an-organization
func (s *ActivityService) ListEventsForOrganization(org, user string, opt *ListOptions) ([]Event, *Response, error) {
func (s *ActivityService) ListUserEventsForOrganization(org, user string, opt *ListOptions) ([]Event, *Response, error) {
u := fmt.Sprintf("users/%v/events/orgs/%v", user, org) u := fmt.Sprintf("users/%v/events/orgs/%v", user, org)
if opt != nil { if opt != nil {
params := url.Values{ params := url.Values{


+ 124
- 4
github/activity_events_test.go View File

@ -13,6 +13,126 @@ import (
"testing" "testing"
) )
func TestActivityService_ListPublicEvents(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/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.ListPublicEvents(opt)
if err != nil {
t.Errorf("Activities.ListPublicEvents returned error: %v", err)
}
want := []Event{{ID: "1"}, {ID: "2"}}
if !reflect.DeepEqual(events, want) {
t.Errorf("Activities.ListPublicEvents returned %+v, want %+v", events, want)
}
}
func TestActivityService_ListRepositoryEvents(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/repos/o/r/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.ListRepositoryEvents("o", "r", opt)
if err != nil {
t.Errorf("Activities.ListRepositoryEvents returned error: %v", err)
}
want := []Event{{ID: "1"}, {ID: "2"}}
if !reflect.DeepEqual(events, want) {
t.Errorf("Activities.ListRepositoryEvents returned %+v, want %+v", events, want)
}
}
func TestActivityService_ListIssueEventsForRepository(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/repos/o/r/issues/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.ListIssueEventsForRepository("o", "r", opt)
if err != nil {
t.Errorf("Activities.ListIssueEventsForRepository returned error: %v", err)
}
want := []Event{{ID: "1"}, {ID: "2"}}
if !reflect.DeepEqual(events, want) {
t.Errorf("Activities.ListIssueEventsForRepository returned %+v, want %+v", events, want)
}
}
func TestActivityService_ListEventsForRepoNetwork(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/networks/o/r/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.ListEventsForRepoNetwork("o", "r", opt)
if err != nil {
t.Errorf("Activities.ListEventsForRepoNetwork returned error: %v", err)
}
want := []Event{{ID: "1"}, {ID: "2"}}
if !reflect.DeepEqual(events, want) {
t.Errorf("Activities.ListEventsForRepoNetwork returned %+v, want %+v", events, want)
}
}
func TestActivityService_ListPublicEventsForOrganization(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/orgs/o/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.ListPublicEventsForOrganization("o", opt)
if err != nil {
t.Errorf("Activities.ListPublicEventsForOrganization returned error: %v", err)
}
want := []Event{{ID: "1"}, {ID: "2"}}
if !reflect.DeepEqual(events, want) {
t.Errorf("Activities.ListPublicEventsForOrganization returned %+v, want %+v", events, want)
}
}
func TestActivityService_ListEventsPerformedByUser_all(t *testing.T) { func TestActivityService_ListEventsPerformedByUser_all(t *testing.T) {
setup() setup()
defer teardown() defer teardown()
@ -101,7 +221,7 @@ func TestActivityService_ListEventsRecievedByUser_publicOnly(t *testing.T) {
} }
} }
func TestActivityService_ListEventsForOrganization(t *testing.T) {
func TestActivityService_ListUserEventsForOrganization(t *testing.T) {
setup() setup()
defer teardown() defer teardown()
@ -110,14 +230,14 @@ func TestActivityService_ListEventsForOrganization(t *testing.T) {
fmt.Fprint(w, `[{"id":"1"},{"id":"2"}]`) fmt.Fprint(w, `[{"id":"1"},{"id":"2"}]`)
}) })
events, _, err := client.Activity.ListEventsForOrganization("o", "u", nil)
events, _, err := client.Activity.ListUserEventsForOrganization("o", "u", nil)
if err != nil { if err != nil {
t.Errorf("Activities.ListEventsForOrganization returned error: %v", err)
t.Errorf("Activities.ListUserEventsForOrganization returned error: %v", err)
} }
want := []Event{{ID: "1"}, {ID: "2"}} want := []Event{{ID: "1"}, {ID: "2"}}
if !reflect.DeepEqual(events, want) { if !reflect.DeepEqual(events, want) {
t.Errorf("Activities.ListEventsForOrganization returned %+v, want %+v", events, want)
t.Errorf("Activities.ListUserEventsForOrganization returned %+v, want %+v", events, want)
} }
} }


Loading…
Cancel
Save