mirror of
				https://github.com/RGBCube/GitHubWrapper
				synced 2025-10-31 14:02:46 +00:00 
			
		
		
		
	Adding user object
Editing Exceptions and changing _state to session
This commit is contained in:
		
							parent
							
								
									25710629f2
								
							
						
					
					
						commit
						77de27ea5a
					
				
					 3 changed files with 40 additions and 11 deletions
				
			
		|  | @ -28,23 +28,23 @@ class Ratelimited(APIError): | |||
| class WillExceedRatelimit(APIError): | ||||
|     """Raised when the library predicts the call will exceed the ratelimit, will abort the call by default.""" | ||||
|     def __init__(self, response, count): | ||||
|         msg = 'Performing this action will exceed the ratelimit, aborting.\n{} remaining available calls, calls to make: {}' | ||||
|         msg = 'Performing this action will exceed the ratelimit, aborting.\n{} remaining available calls, calls to make: {}.' | ||||
|         msg = msg.format(response.header['X-RateLimit-Remaining'], count) | ||||
|         super().__init__(msg) | ||||
| 
 | ||||
| class UserNotFound(APIError): | ||||
|     def __init__(self): | ||||
|         msg = 'User not found' | ||||
|         msg = 'User not found.' | ||||
|         super().__init__(msg) | ||||
| 
 | ||||
| class OrganizationNotFound(APIError): | ||||
|     def __init__(self): | ||||
|         msg = 'Organization not found' | ||||
|         msg = 'Organization not found.' | ||||
|         super().__init__(msg) | ||||
| 
 | ||||
| class RepositoryNotFound(APIError): | ||||
|     def __init__(self): | ||||
|         msg = 'Repository not found' | ||||
|         msg = 'Repository not found.' | ||||
|         super().__init__(msg) | ||||
| 
 | ||||
| class ObjectNotFound(APIError): | ||||
|  | @ -55,7 +55,7 @@ class ObjectNotFound(APIError): | |||
| class NoAuthProvided(APIError): | ||||
|     """Raised when no proper authorization or invalid authorization is given to the client""" | ||||
|     def __init__(self): | ||||
|         msg = 'Without authorization, this client doesn\'t have it\'s own repository' | ||||
|         msg = 'Without authorization, this client doesn\'t have it\'s own repository.' | ||||
|         super().__init__(msg) | ||||
| 
 | ||||
| class InvalidAuthCombination(APIError): | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ from .objects import User | |||
| 
 | ||||
| class Github: | ||||
|     _auth = None | ||||
|     _state = aiohttp.ClientSession | ||||
|     session = aiohttp.ClientSession | ||||
|     def __init__( | ||||
|         self, | ||||
|         *, | ||||
|  | @ -28,8 +28,8 @@ class Github: | |||
| 
 | ||||
|     async def start(self): | ||||
|         """Main entry point to the wrapper, this creates the ClientSession.""" | ||||
|         self._state = await http.make_session(headers=self._headers, authorization=self._auth) | ||||
|         self.session = await http.make_session(headers=self._headers, authorization=self._auth) | ||||
| 
 | ||||
|     async def get_user(self, username: str): | ||||
|         """Fetch a Github user from their username.""" | ||||
|         return User(await http.get_user(self._state, username), self._state) | ||||
|         return User(await http.get_user(self.session, username), self.session) | ||||
|  | @ -11,15 +11,23 @@ __all__ = ( | |||
|     'User', | ||||
| ) | ||||
| 
 | ||||
| def dt_formatter(time_str): | ||||
|     if time_str is not None: | ||||
|         return datetime.strptime(time_str, r"%Y-%m-%dT%H:%M:%SZ") | ||||
|     return None | ||||
| 
 | ||||
| def repr_dt(time_str): | ||||
|     return time_str.strftime(r'%d-%m-%Y, %H:%M:%S') | ||||
| 
 | ||||
| class APIOBJECT: | ||||
|     __slots__ = ( | ||||
|         '_response', | ||||
|         '_state' | ||||
|         'session' | ||||
|     ) | ||||
| 
 | ||||
|     def __init__(self, response: dict[str, str | int], session: aiohttp.ClientSession) -> None: | ||||
|         self._response = response | ||||
|         self._state = session | ||||
|         self.session = session | ||||
| 
 | ||||
| 
 | ||||
|     def __repr__(self) -> str: | ||||
|  | @ -52,7 +60,28 @@ class User(_BaseUser): | |||
|         ) | ||||
|     def __init__(self, response: dict, session: aiohttp.ClientSession) -> None: | ||||
|         super().__init__(response, session) | ||||
|         ... | ||||
|         tmp = self.__slots__ | ||||
|         keys = {key: value for key,value in self.response.items() if key in tmp} | ||||
|         for key, value in key.items(): | ||||
|             if key == 'login': | ||||
|                 self.login = value | ||||
|                 return | ||||
| 
 | ||||
|             if '_at' in key and value is not None: | ||||
|                 setattr(self, key, dt_formatter(value)) | ||||
|                 return | ||||
| 
 | ||||
|             setattr(self, key, value) | ||||
| 
 | ||||
|     def __repr__(self): | ||||
|         return f'<User; login: {self.login}, id: {self.id}, created_at: {repr_dt(self.created_at)}>' | ||||
| 
 | ||||
|     @classmethod | ||||
|     async def get_user(self, session: aiohttp.ClientSession, username: str) -> 'User': | ||||
|         """Returns a User object from the username, with the mentions slots.""" | ||||
|         response = await http.get_user(session, username) | ||||
|         return User(response, session) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 VarMonke
						VarMonke