1
Fork 0
mirror of https://github.com/RGBCube/GitHubWrapper synced 2025-05-18 15:05:08 +00:00

Fixed some issues with Repo and Partial Users

This commit is contained in:
sudosnok 2022-03-27 19:02:36 +01:00
parent c39e4c1ed6
commit 04a1eecec8
3 changed files with 14 additions and 19 deletions

View file

@ -21,7 +21,7 @@ class APIOBJECT:
'session' 'session'
) )
def __init__(self, response: dict[str, str | int], session: aiohttp.ClientSession) -> None: def __init__(self, response: dict[str, str | int | dict[str, str | int]], session: aiohttp.ClientSession) -> None:
self._response = response self._response = response
self.session = session self.session = session

View file

@ -37,27 +37,25 @@ class Repository(APIOBJECT):
for key, value in keys.items(): for key, value in keys.items():
if key == 'owner': if key == 'owner':
setattr(self, key, PartialUser(value, session)) setattr(self, key, PartialUser(value, session))
return continue
if key == 'name': if key == 'name':
setattr(self, key, value) setattr(self, key, value)
return continue
if '_at' in key and value is not None: if '_at' in key and value is not None:
setattr(self, key, dt_formatter(value)) setattr(self, key, dt_formatter(value))
return continue
else: else:
setattr(self, key, value) setattr(self, key, value)
continue continue
setattr(self, key, value)
def __repr__(self) -> str: def __repr__(self) -> str:
return f'<Repository; id: {self.id}, name: {self.name}, owner: {self.owner}, created_at: {self.created_at}, default_branch: {self.default_branch}, license: {self.license}, >' return f'<Repository; id: {self.id}, name: {self.name}, owner: {self.owner}, updated_at: {self.updated_at}, default_branch: {self.default_branch}, license: {self.license["name"]}>'
@classmethod @classmethod
async def repo_from_name(cls, session: aiohttp.ClientSession,owner: str, repo_name: str) -> 'Repository': async def from_name(cls, session: aiohttp.ClientSession,owner: str, repo_name: str) -> 'Repository':
"""Fetch a repository from its name.""" """Fetch a repository from its name."""
response = await http.get_repo_from_name(session, owner, repo_name) response = await http.get_repo_from_name(session, owner, repo_name)
return Repository(response, session) return Repository(response, session)

View file

@ -38,7 +38,7 @@ class User(_BaseUser):
def __init__(self, response: dict, session: aiohttp.ClientSession) -> None: def __init__(self, response: dict, session: aiohttp.ClientSession) -> None:
super().__init__(response, session) super().__init__(response, session)
tmp = self.__slots__ + _BaseUser.__slots__ tmp = self.__slots__ + _BaseUser.__slots__
keys = {key: value for key,value in self.items() if key in tmp} keys = {key: value for key,value in self._response.items() if key in tmp}
for key, value in keys.items(): for key, value in keys.items():
if '_at' in key and value is not None: if '_at' in key and value is not None:
setattr(self, key, dt_formatter(value)) setattr(self, key, dt_formatter(value))
@ -47,9 +47,7 @@ class User(_BaseUser):
setattr(self, key, value) setattr(self, key, value)
continue continue
setattr(self, key, value) def __repr__(self) -> str:
def __repr__(self):
return f'<User; login: {self.login}, id: {self.id}, created_at: {self.created_at}>' return f'<User; login: {self.login}, id: {self.id}, created_at: {self.created_at}>'
@classmethod @classmethod
@ -62,7 +60,7 @@ class PartialUser(_BaseUser):
__slots__ = ( __slots__ = (
'site_admin', 'site_admin',
'html_url', 'html_url',
'created_at', 'avatar_url',
) + _BaseUser.__slots__ ) + _BaseUser.__slots__
def __init__(self, response: dict, session: aiohttp.ClientSession) -> None: def __init__(self, response: dict, session: aiohttp.ClientSession) -> None:
@ -71,11 +69,10 @@ class PartialUser(_BaseUser):
self.html_url = response.get('html_url') self.html_url = response.get('html_url')
self.avatar_url = response.get('avatar_url') self.avatar_url = response.get('avatar_url')
def __repr__(self) -> str:
return f'<PartialUser; login: {self.login}, id: {self.id}, site_admin: {self.site_admin}, html_url: {self.html_url}>'
def __repr__(self): async def _get_user(self) -> User:
return f'<PartialUser; login: {self.login}, id: {self.id}, site_admin: {self.site_admin}, html_url: {self.html_url}, created_at: {self.created_at}>'
async def _get_user(self):
"""Upgrades the PartialUser to a User object.""" """Upgrades the PartialUser to a User object."""
response = await http.get_user(self.session, self.login) response = await http.get_user(self.session, self.login)
return User(response, self.session) return User(response, self.session)