mirror of
				https://github.com/RGBCube/GitHubWrapper
				synced 2025-10-31 05:52:45 +00:00 
			
		
		
		
	Erroring
This commit is contained in:
		
							parent
							
								
									ed9c8ceee8
								
							
						
					
					
						commit
						c39e4c1ed6
					
				
					 5 changed files with 42 additions and 9 deletions
				
			
		|  | @ -15,6 +15,7 @@ __all__ = ( | ||||||
|     'make_session', |     'make_session', | ||||||
|     'Paginator', |     'Paginator', | ||||||
|     'get_user', |     'get_user', | ||||||
|  |     'get_repo_from_name', | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -117,4 +118,14 @@ async def get_user(session: aiohttp.ClientSession, username: str) -> GitHubUserD | ||||||
|     result = await session.get(USERS_URL.format(username)) |     result = await session.get(USERS_URL.format(username)) | ||||||
|     if result.status == 200: |     if result.status == 200: | ||||||
|         return await result.json() |         return await result.json() | ||||||
|     raise UserNotFound |     raise UserNotFound | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # repo-related functions / utils | ||||||
|  | 
 | ||||||
|  | async def get_repo_from_name(session: aiohttp.ClientSession, owner: str, repo_name: str): | ||||||
|  |     """Returns a Repo object from the given owner and repo name.""" | ||||||
|  |     result = await session.get(REPO_URL.format(owner, repo_name)) | ||||||
|  |     if result.status == 200: | ||||||
|  |         return await result.json() | ||||||
|  |     raise RepositoryNotFound | ||||||
|  | @ -79,9 +79,9 @@ class GHClient: | ||||||
|         """Fetch a Github user from their username.""" |         """Fetch a Github user from their username.""" | ||||||
|         return User(await http.get_user(self.session, username), self.session) |         return User(await http.get_user(self.session, username), self.session) | ||||||
| 
 | 
 | ||||||
|     async def get_repo(self, repo_name: str) -> Repository: |     async def get_repo(self, owner: str, repo_name: str) -> Repository: | ||||||
|         """Fetch a Github repository from it's name.""" |         """Fetch a Github repository from it's name.""" | ||||||
|         pass |         return Repository(await http.get_repo_from_name(self.session, owner, repo_name), self.session) | ||||||
| 
 | 
 | ||||||
|     async def get_org(self, org_name: str) -> 'Org': |     async def get_org(self, org_name: str) -> 'Org': | ||||||
|         """Fetch a Github organization from it's name""" |         """Fetch a Github organization from it's name""" | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
| import aiohttp | import aiohttp | ||||||
| 
 | 
 | ||||||
| from .objects import APIOBJECT, dt_formatter | from .objects import APIOBJECT, dt_formatter | ||||||
| from . import PartialUser | from . import PartialUser, User | ||||||
| from .. import http | from .. import http | ||||||
| 
 | 
 | ||||||
| __all__ = ( | __all__ = ( | ||||||
|  | @ -33,17 +33,31 @@ class Repository(APIOBJECT): | ||||||
|     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__ + APIOBJECT.__slots__ |         tmp = self.__slots__ + APIOBJECT.__slots__ | ||||||
|         keys = {key: value for key,value in self.response.items() if key in tmp} |         keys = {key: value for key,value in self._response.items() if key in tmp} | ||||||
|         for key, value in key.items(): |         for key, value in keys.items(): | ||||||
|             if key == 'owner': |             if key == 'owner': | ||||||
|                 self.owner = PartialUser(value, self.session) |                 setattr(self, key,  PartialUser(value, session)) | ||||||
|  |                 return | ||||||
|  | 
 | ||||||
|  |             if key == 'name': | ||||||
|  |                 setattr(self, key, value) | ||||||
|                 return |                 return | ||||||
| 
 | 
 | ||||||
|             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 |                 return | ||||||
|  |              | ||||||
|  |             else: | ||||||
|  |                 setattr(self, key, value) | ||||||
|  |                 continue | ||||||
| 
 | 
 | ||||||
|             setattr(self, key, value) |             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}, created_at: {self.created_at}, default_branch: {self.default_branch}, license: {self.license}, >' | ||||||
|  | 
 | ||||||
|  |     @classmethod | ||||||
|  |     async def repo_from_name(cls, session: aiohttp.ClientSession,owner: str, repo_name: str) -> 'Repository': | ||||||
|  |         """Fetch a repository from its name.""" | ||||||
|  |         response = await http.get_repo_from_name(session, owner, repo_name) | ||||||
|  |         return Repository(response, session) | ||||||
|  |  | ||||||
|  | @ -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._response.items() if key in tmp} |         keys = {key: value for key,value in self.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)) | ||||||
|  |  | ||||||
|  | @ -18,4 +18,12 @@ USER_GISTS_URL = USERS_URL + '/gists' | ||||||
| 
 | 
 | ||||||
| USER_FOLLOWERS_URL = USERS_URL + '/followers' | USER_FOLLOWERS_URL = USERS_URL + '/followers' | ||||||
| 
 | 
 | ||||||
| USER_FOLLOWING_URL = USERS_URL + '/following' | USER_FOLLOWING_URL = USERS_URL + '/following' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #== repo urls ==# | ||||||
|  | REPOS_URL = BASE_URL + '/repos/{0}' # repos of a user | ||||||
|  | 
 | ||||||
|  | #REPO_URL = REPOS_URL + '/{1}' # a specific repo | ||||||
|  | 
 | ||||||
|  | REPO_URL = BASE_URL + '/repos/{0}/{1}' # a specific repo | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 VarMonke
						VarMonke