diff --git a/IntegrationTest.py b/IntegrationTest.py index ed46149f..1ad86065 100644 --- a/IntegrationTest.py +++ b/IntegrationTest.py @@ -335,16 +335,16 @@ class IntegrationTest: t.delete() self.printList( "Teams", o.get_teams(), lambda t: t.name ) - # @todo Restore correct pagination - # def testEvents( self ): - # self.printList( "User events", self.g.get_user( self.cobayeUser ).get_events(), lambda e: e.type ) - # self.printList( "User public events", self.g.get_user( self.cobayeUser ).get_public_events(), lambda e: e.type ) - # self.printList( "User public received events", self.g.get_user( self.cobayeUser ).get_public_received_events(), lambda e: e.type ) - # self.printList( "User received events", self.g.get_user( self.cobayeUser ).get_received_events(), lambda e: e.type ) + # @todo Custom url /events instead of /user/events + def testEvents( self ): + self.printList( "User events", self.g.get_user( self.cobayeUser ).get_events(), lambda e: e.type ) + self.printList( "User public events", self.g.get_user( self.cobayeUser ).get_public_events(), lambda e: e.type ) + self.printList( "User public received events", self.g.get_user( self.cobayeUser ).get_public_received_events(), lambda e: e.type ) + self.printList( "User received events", self.g.get_user( self.cobayeUser ).get_received_events(), lambda e: e.type ) - # self.printList( "Organization events", self.g.get_organization( self.cobayeOrganization ).get_events(), lambda e: e.type ) + self.printList( "Organization events", self.g.get_organization( self.cobayeOrganization ).get_events(), lambda e: e.type ) - # self.printList( "User events", self.g.get_user().get_events(), lambda e: e.type ) + self.printList( "User events", self.g.get_user().get_events(), lambda e: e.type ) # o = self.g.get_organization( self.cobayeOrganization ) # self.printList( "Organization events", self.g.get_user().get_organization_events( o ), lambda e: e.type ) @@ -398,8 +398,8 @@ class IntegrationTest: # g.delete() # self.printList( "Gists", u.get_gists(), lambda g: g.description ) - # def testGistsAll( self ): - # self.printList( "Gists", self.g.get_gists(), lambda g: g.description ) + def testGistsAll( self ): + self.printList( "Gists", self.g.get_gists(), lambda g: g.description ) # @todo custom url/repos/BeaverSoftware/TestPyGithub/git/refs/heads/master instead of /repos/BeaverSoftware/TestPyGithub/git_refs/refs/heads/master # def testGitObjects( self ): diff --git a/JsonDescriptionOfGithubApiV3/description.000.human_readable.json b/JsonDescriptionOfGithubApiV3/description.000.human_readable.json index dd2c4444..18441118 100644 --- a/JsonDescriptionOfGithubApiV3/description.000.human_readable.json +++ b/JsonDescriptionOfGithubApiV3/description.000.human_readable.json @@ -777,17 +777,38 @@ { "name": [ "get", "public", "events" ], "group": "events", - "type": { "cardinality": "list", "name": "Event" } + "type": { "cardinality": "list", "name": "Event" }, + "request": { + "verb": "GET", + "url": [ + { "type": "attribute", "value": [ "url" ] }, + { "type": "constant", "value": "/events/public" } + ] + } }, { "name": [ "get", "received", "events" ], "group": "events", - "type": { "cardinality": "list", "name": "Event" } + "type": { "cardinality": "list", "name": "Event" }, + "request": { + "verb": "GET", + "url": [ + { "type": "attribute", "value": [ "url" ] }, + { "type": "constant", "value": "/received_events" } + ] + } }, { "name": [ "get", "public", "received", "events" ], "group": "events", - "type": { "cardinality": "list", "name": "Event" } + "type": { "cardinality": "list", "name": "Event" }, + "request": { + "verb": "GET", + "url": [ + { "type": "attribute", "value": [ "url" ] }, + { "type": "constant", "value": "/received_events/public" } + ] + } } ] }, diff --git a/JsonDescriptionOfGithubApiV3/description.001.normalized.json b/JsonDescriptionOfGithubApiV3/description.001.normalized.json index 0ded97b7..439986d8 100644 --- a/JsonDescriptionOfGithubApiV3/description.001.normalized.json +++ b/JsonDescriptionOfGithubApiV3/description.001.normalized.json @@ -4906,6 +4906,21 @@ "public", "events" ], + "request": { + "url": [ + { + "type": "attribute", + "value": [ + "url" + ] + }, + { + "type": "constant", + "value": "/events/public" + } + ], + "verb": "GET" + }, "optional_parameters": [], "type": { "simple": false, @@ -4922,6 +4937,21 @@ "received", "events" ], + "request": { + "url": [ + { + "type": "attribute", + "value": [ + "url" + ] + }, + { + "type": "constant", + "value": "/received_events" + } + ], + "verb": "GET" + }, "optional_parameters": [], "type": { "simple": false, @@ -4939,6 +4969,21 @@ "received", "events" ], + "request": { + "url": [ + { + "type": "attribute", + "value": [ + "url" + ] + }, + { + "type": "constant", + "value": "/received_events/public" + } + ], + "verb": "GET" + }, "optional_parameters": [], "type": { "simple": false, diff --git a/ReferenceOfClasses.md b/ReferenceOfClasses.md index 1fd21dda..d04fa753 100644 --- a/ReferenceOfClasses.md +++ b/ReferenceOfClasses.md @@ -783,7 +783,6 @@ Attributes Comments -------- -* `create_comment( < body, commit_id, path, position > or < body, in_reply_to > )`: `PullRequestComment` * `get_comment( id )`: `PullRequestComment` * `id` * `get_comments()`: list of `PullRequestComment` @@ -1078,7 +1077,6 @@ Modification Pulls ----- -* `create_pull( < title, body, base, head > or < issue, base, head > )`: `PullRequest` * `get_pull( number )`: `PullRequest` * `number` * `get_pulls( [state] )`: list of `PullRequest` diff --git a/github/Github.py b/github/Github.py index f7fe4f67..f5165cbf 100644 --- a/github/Github.py +++ b/github/Github.py @@ -3,6 +3,7 @@ import GithubObjects.AuthenticatedUser import GithubObjects.NamedUser import GithubObjects.Organization import GithubObjects.Gist +import GithubObjects.PaginatedList class Github: def __init__( self, login, password ): @@ -33,9 +34,10 @@ class Github: return GithubObjects.Gist.Gist( self.__requester, { "id": id }, lazy = False ) def get_gists( self ): - status, headers, data = self.__requester.request( "GET", "/gists/public", None, None ) - return [ - GithubObjects.Gist.Gist( self.__requester, attributes, lazy = True ) - for attributes - in data - ] + status, headers, data = self.__requester.request( "GET", "https://api.github.com/gists/public", None, None ) + return GithubObjects.PaginatedList.PaginatedList( + GithubObjects.Gist.Gist, + self.__requester, + headers, + data + ) diff --git a/github/GithubObjects/NamedUser.py b/github/GithubObjects/NamedUser.py index a6b6990e..b77cbd34 100644 --- a/github/GithubObjects/NamedUser.py +++ b/github/GithubObjects/NamedUser.py @@ -238,13 +238,46 @@ class NamedUser( object ): ) def get_public_events( self ): - pass + status, headers, data = self.__requester.request( + "GET", + str( self.url ) + "/events/public", + None, + None + ) + return PaginatedList.PaginatedList( + Event.Event, + self.__requester, + headers, + data + ) def get_public_received_events( self ): - pass + status, headers, data = self.__requester.request( + "GET", + str( self.url ) + "/received_events/public", + None, + None + ) + return PaginatedList.PaginatedList( + Event.Event, + self.__requester, + headers, + data + ) def get_received_events( self ): - pass + status, headers, data = self.__requester.request( + "GET", + str( self.url ) + "/received_events", + None, + None + ) + return PaginatedList.PaginatedList( + Event.Event, + self.__requester, + headers, + data + ) def get_repo( self, name ): status, headers, data = self.__requester.request( diff --git a/github/GithubObjects/PaginatedList.py b/github/GithubObjects/PaginatedList.py index 4c47e68d..ba509db1 100644 --- a/github/GithubObjects/PaginatedList.py +++ b/github/GithubObjects/PaginatedList.py @@ -9,6 +9,7 @@ class PaginatedList: def __init__( self, contentClass, requester, headers, data ): self.__requester = requester self.__contentClass = contentClass + self.__pages = 0 self.__fromData( headers, data ) def __iter__( self ): @@ -27,7 +28,8 @@ class PaginatedList: def __fromData( self, headers, data ): links = self.__parseLinkHeader( headers ) - if len( data ) > 0 and "next" in links: + if len( data ) > 0 and "next" in links and self.__pages < 9: + self.__pages += 1 self.__nextUrl = links[ "next" ] else: self.__nextUrl = None