Convert legacy objects to v3 ones

Still needed:
- test completion of objects returned by legacy API
- implement legacy pagination
This commit is contained in:
Vincent Jacques
2012-06-29 07:44:10 +02:00
parent ed31abe6de
commit 37c06ea4fc
4 changed files with 52 additions and 5 deletions
+6 -3
View File
@@ -18,6 +18,7 @@ import Organization
import Gist
import PaginatedList
import Repository
import Legacy
class Github( object ):
def __init__( self, login_or_token = None, password = None ):
@@ -74,7 +75,8 @@ class Github( object ):
None,
None
)
return PaginatedList.PaginatedList(
return Legacy.PaginatedList(
Legacy.convertRepo,
Repository.Repository,
self.__requester,
headers,
@@ -89,7 +91,8 @@ class Github( object ):
None,
None
)
return PaginatedList.PaginatedList(
return Legacy.PaginatedList(
Legacy.convertUser,
NamedUser.NamedUser,
self.__requester,
headers,
@@ -104,4 +107,4 @@ class Github( object ):
None,
None
)
return NamedUser.NamedUser( self.__requester, data[ "user" ], completed = False )
return NamedUser.NamedUser( self.__requester, Legacy.convertUser( data[ "user" ] ), completed = False )
+41
View File
@@ -0,0 +1,41 @@
# Copyright 2012 Vincent Jacques
# vincent@vincent-jacques.net
# This file is part of PyGithub. http://vincent-jacques.net/PyGithub
# PyGithub is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public License along with PyGithub. If not, see <http://www.gnu.org/licenses/>.
def PaginatedList( convert, contentClass, requester, headers, data ):
return [
contentClass( requester, convert( element ), completed = False )
for element in data
]
def convertUser( attributes ):
attributes[ "created_at" ] = attributes[ "created_at" ][ : 19 ] + "Z"
if not isinstance( attributes[ "id" ], int ):
attributes[ "id" ] = int( attributes[ "id" ][ 5 : ] )
return attributes
def convertRepo( attributes ):
attributes[ "created_at" ] = attributes[ "created_at" ][ : 19 ] + "Z"
if "pushed_at" in attributes:
attributes[ "pushed_at" ] = attributes[ "pushed_at" ][ : 19 ] + "Z"
attributes[ "owner" ] = { "login": attributes[ "owner" ] }
if "organization" in attributes:
attributes[ "organization" ] = { "login": attributes[ "organization" ] }
attributes[ "url" ] = "https://api.github.com/repos/" + "/".join( attributes[ "url" ].split( "/" )[ -2 : ] )
return attributes
def convertIssue( attributes ):
attributes[ "created_at" ] = attributes[ "created_at" ][ : 19 ] + "Z"
attributes[ "updated_at" ] = attributes[ "updated_at" ][ : 19 ] + "Z"
attributes[ "labels" ] = [ { "name": label } for label in attributes[ "labels" ] ]
attributes[ "user" ] = { "login": attributes[ "user" ] }
return attributes
+3 -1
View File
@@ -46,6 +46,7 @@ import GitTag
import Download
import Permissions
import Event
import Legacy
class Repository( GithubObject.GithubObject ):
@property
@@ -1011,7 +1012,8 @@ class Repository( GithubObject.GithubObject ):
None,
None
)
return PaginatedList.PaginatedList(
return Legacy.PaginatedList(
Legacy.convertIssue,
Issue.Issue,
self._requester,
headers,