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', | ||||
|     'Paginator', | ||||
|     '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)) | ||||
|     if result.status == 200: | ||||
|         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.""" | ||||
|         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.""" | ||||
|         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': | ||||
|         """Fetch a Github organization from it's name""" | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ | |||
| import aiohttp | ||||
| 
 | ||||
| from .objects import APIOBJECT, dt_formatter | ||||
| from . import PartialUser | ||||
| from . import PartialUser, User | ||||
| from .. import http | ||||
| 
 | ||||
| __all__ = ( | ||||
|  | @ -33,17 +33,31 @@ class Repository(APIOBJECT): | |||
|     def __init__(self, response: dict, session: aiohttp.ClientSession) -> None: | ||||
|         super().__init__(response, session) | ||||
|         tmp = self.__slots__ + APIOBJECT.__slots__ | ||||
|         keys = {key: value for key,value in self.response.items() if key in tmp} | ||||
|         for key, value in key.items(): | ||||
|         keys = {key: value for key,value in self._response.items() if key in tmp} | ||||
|         for key, value in keys.items(): | ||||
|             if key == 'owner': | ||||
|                 self.owner = PartialUser(value, self.session) | ||||
|                 setattr(self, key,  PartialUser(value, session)) | ||||
|                 return | ||||
| 
 | ||||
|             if key == 'name': | ||||
|                 setattr(self, key, value) | ||||
|                 return | ||||
| 
 | ||||
|             if '_at' in key and value is not None: | ||||
|                 setattr(self, key, dt_formatter(value)) | ||||
|                 return | ||||
|              | ||||
|             else: | ||||
|                 setattr(self, key, value) | ||||
|                 continue | ||||
| 
 | ||||
|             setattr(self, key, value) | ||||
| 
 | ||||
|     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}, >' | ||||
| 
 | ||||
|     @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: | ||||
|         super().__init__(response, session) | ||||
|         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(): | ||||
|             if '_at' in key and value is not None: | ||||
|                 setattr(self, key, dt_formatter(value)) | ||||
|  |  | |||
|  | @ -18,4 +18,12 @@ USER_GISTS_URL = USERS_URL + '/gists' | |||
| 
 | ||||
| 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