Skip to content

Commit

Permalink
Do all paginated calls inside PaginatedList
Browse files Browse the repository at this point in the history
This was already the case for Legacy.PaginatedList.

Doing it in PaginatedList.PaginatedList reduces the amount of
repeated code and will allow a generic solution for issue #77
  • Loading branch information
jacquev6 committed Sep 11, 2012
1 parent 25a7696 commit ef403a1
Show file tree
Hide file tree
Showing 25 changed files with 200 additions and 553 deletions.
140 changes: 28 additions & 112 deletions github/AuthenticatedUser.py
Expand Up @@ -332,17 +332,11 @@ def get_authorization( self, id ):
return Authorization.Authorization( self._requester, data, completed = True ) return Authorization.Authorization( self._requester, data, completed = True )


def get_authorizations( self ): def get_authorizations( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/authorizations",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Authorization.Authorization, Authorization.Authorization,
self._requester, self._requester,
headers, "/authorizations",
data None
) )


def get_emails( self ): def get_emails( self ):
Expand All @@ -355,73 +349,43 @@ def get_emails( self ):
return data return data


def get_events( self ): def get_events( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/events",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Event.Event, Event.Event,
self._requester, self._requester,
headers, "/events",
data None
) )


def get_followers( self ): def get_followers( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/user/followers",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
NamedUser.NamedUser, NamedUser.NamedUser,
self._requester, self._requester,
headers, "/user/followers",
data None
) )


def get_following( self ): def get_following( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/user/following",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
NamedUser.NamedUser, NamedUser.NamedUser,
self._requester, self._requester,
headers, "/user/following",
data None
) )


def get_gists( self ): def get_gists( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/gists",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Gist.Gist, Gist.Gist,
self._requester, self._requester,
headers, "/gists",
data None
) )


def get_issues( self ): def get_issues( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/issues",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Issue.Issue, Issue.Issue,
self._requester, self._requester,
headers, "/issues",
data None
) )


def get_key( self, id ): def get_key( self, id ):
Expand All @@ -435,46 +399,28 @@ def get_key( self, id ):
return UserKey.UserKey( self._requester, data, completed = True ) return UserKey.UserKey( self._requester, data, completed = True )


def get_keys( self ): def get_keys( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/user/keys",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
UserKey.UserKey, UserKey.UserKey,
self._requester, self._requester,
headers, "/user/keys",
data None
) )


def get_organization_events( self, org ): def get_organization_events( self, org ):
assert isinstance( org, Organization.Organization ), org assert isinstance( org, Organization.Organization ), org
headers, data = self._requester.requestAndCheck(
"GET",
"/users/" + self.login + "/events/orgs/" + org.login,
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Event.Event, Event.Event,
self._requester, self._requester,
headers, "/users/" + self.login + "/events/orgs/" + org.login,
data None
) )


def get_orgs( self ): def get_orgs( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/user/orgs",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Organization.Organization, Organization.Organization,
self._requester, self._requester,
headers, "/user/orgs",
data None
) )


def get_repo( self, name ): def get_repo( self, name ):
Expand All @@ -498,73 +444,43 @@ def get_repos( self, type = GithubObject.NotSet, sort = GithubObject.NotSet, dir
url_parameters[ "sort" ] = sort url_parameters[ "sort" ] = sort
if direction is not GithubObject.NotSet: if direction is not GithubObject.NotSet:
url_parameters[ "direction" ] = direction url_parameters[ "direction" ] = direction
headers, data = self._requester.requestAndCheck(
"GET",
"/user/repos",
url_parameters,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Repository.Repository, Repository.Repository,
self._requester, self._requester,
headers, "/user/repos",
data url_parameters
) )


def get_starred( self ): def get_starred( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/user/starred",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Repository.Repository, Repository.Repository,
self._requester, self._requester,
headers, "/user/starred",
data None
) )


def get_starred_gists( self ): def get_starred_gists( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/gists/starred",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Gist.Gist, Gist.Gist,
self._requester, self._requester,
headers, "/gists/starred",
data None
) )


def get_subscriptions( self ): def get_subscriptions( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/user/subscriptions",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Repository.Repository, Repository.Repository,
self._requester, self._requester,
headers, "/user/subscriptions",
data None
) )


def get_watched( self ): def get_watched( self ):
headers, data = self._requester.requestAndCheck(
"GET",
"/user/watched",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Repository.Repository, Repository.Repository,
self._requester, self._requester,
headers, "/user/watched",
data None
) )


def has_in_following( self, following ): def has_in_following( self, following ):
Expand Down
20 changes: 4 additions & 16 deletions github/Commit.py
Expand Up @@ -105,31 +105,19 @@ def create_status( self, state, target_url = GithubObject.NotSet, description =
return CommitStatus.CommitStatus( self._requester, data, completed = True ) return CommitStatus.CommitStatus( self._requester, data, completed = True )


def get_comments( self ): def get_comments( self ):
headers, data = self._requester.requestAndCheck(
"GET",
self.url + "/comments",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
CommitComment.CommitComment, CommitComment.CommitComment,
self._requester, self._requester,
headers, self.url + "/comments",
data None
) )


def get_statuses( self ): def get_statuses( self ):
headers, data = self._requester.requestAndCheck(
"GET",
self._parentUrl( self._parentUrl( self.url ) ) + "/statuses/" + self.sha,
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
CommitStatus.CommitStatus, CommitStatus.CommitStatus,
self._requester, self._requester,
headers, self._parentUrl( self._parentUrl( self.url ) ) + "/statuses/" + self.sha,
data None
) )


@property @property
Expand Down
10 changes: 2 additions & 8 deletions github/Gist.py
Expand Up @@ -154,17 +154,11 @@ def get_comment( self, id ):
return GistComment.GistComment( self._requester, data, completed = True ) return GistComment.GistComment( self._requester, data, completed = True )


def get_comments( self ): def get_comments( self ):
headers, data = self._requester.requestAndCheck(
"GET",
self.url + "/comments",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
GistComment.GistComment, GistComment.GistComment,
self._requester, self._requester,
headers, self.url + "/comments",
data None
) )


def is_starred( self ): def is_starred( self ):
Expand Down
5 changes: 2 additions & 3 deletions github/Github.py
Expand Up @@ -69,12 +69,11 @@ def get_gist( self, id ):
return Gist.Gist( self.__requester, data, completed = True ) return Gist.Gist( self.__requester, data, completed = True )


def get_gists( self ): def get_gists( self ):
headers, data = self.__requester.requestAndCheck( "GET", "/gists/public", None, None )
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Gist.Gist, Gist.Gist,
self.__requester, self.__requester,
headers, "/gists/public",
data None
) )


def legacy_search_repos( self, keyword, language = GithubObject.NotSet ): def legacy_search_repos( self, keyword, language = GithubObject.NotSet ):
Expand Down
30 changes: 6 additions & 24 deletions github/Issue.py
Expand Up @@ -183,45 +183,27 @@ def get_comment( self, id ):
return IssueComment.IssueComment( self._requester, data, completed = True ) return IssueComment.IssueComment( self._requester, data, completed = True )


def get_comments( self ): def get_comments( self ):
headers, data = self._requester.requestAndCheck(
"GET",
self.url + "/comments",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
IssueComment.IssueComment, IssueComment.IssueComment,
self._requester, self._requester,
headers, self.url + "/comments",
data None
) )


def get_events( self ): def get_events( self ):
headers, data = self._requester.requestAndCheck(
"GET",
self.url + "/events",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
IssueEvent.IssueEvent, IssueEvent.IssueEvent,
self._requester, self._requester,
headers, self.url + "/events",
data None
) )


def get_labels( self ): def get_labels( self ):
headers, data = self._requester.requestAndCheck(
"GET",
self.url + "/labels",
None,
None
)
return PaginatedList.PaginatedList( return PaginatedList.PaginatedList(
Label.Label, Label.Label,
self._requester, self._requester,
headers, self.url + "/labels",
data None
) )


def remove_from_labels( self, label ): def remove_from_labels( self, label ):
Expand Down
3 changes: 1 addition & 2 deletions github/Legacy.py
Expand Up @@ -15,7 +15,7 @@


class PaginatedList( PaginatedListBase ): class PaginatedList( PaginatedListBase ):
def __init__( self, url, args, requester, key, convert, contentClass ): def __init__( self, url, args, requester, key, convert, contentClass ):
PaginatedListBase.__init__( self, list() ) PaginatedListBase.__init__( self )
self.__url = url self.__url = url
self.__args = args self.__args = args
self.__requester = requester self.__requester = requester
Expand All @@ -24,7 +24,6 @@ def __init__( self, url, args, requester, key, convert, contentClass ):
self.__contentClass = contentClass self.__contentClass = contentClass
self.__nextPage = 1 self.__nextPage = 1
self.__continue = True self.__continue = True
self.__elements = list()


def _couldGrow( self ): def _couldGrow( self ):
return self.__continue return self.__continue
Expand Down

0 comments on commit ef403a1

Please sign in to comment.