File tree Expand file tree Collapse file tree 3 files changed +47
-25
lines changed Expand file tree Collapse file tree 3 files changed +47
-25
lines changed Original file line number Diff line number Diff line change 2222import httpx
2323
2424from .response import Response
25- from .exception import RequestFailed
2625from .config import Config , get_config
26+ from .exception import RequestError , RequestFailed , RequestTimeout
2727from .auth import BaseAuthStrategy , TokenAuthStrategy , UnauthAuthStrategy
2828from .typing import (
2929 URLTypes ,
@@ -228,17 +228,22 @@ def _request(
228228 cookies : Optional [CookieTypes ] = None ,
229229 ) -> httpx .Response :
230230 with self .get_sync_client () as client :
231- return client .request (
232- method ,
233- url ,
234- params = params ,
235- content = content ,
236- data = data ,
237- files = files ,
238- json = json ,
239- headers = headers ,
240- cookies = cookies ,
241- )
231+ try :
232+ return client .request (
233+ method ,
234+ url ,
235+ params = params ,
236+ content = content ,
237+ data = data ,
238+ files = files ,
239+ json = json ,
240+ headers = headers ,
241+ cookies = cookies ,
242+ )
243+ except httpx .TimeoutException as e :
244+ raise RequestTimeout (e .request ) from e
245+ except Exception as e :
246+ raise RequestError (repr (e )) from e
242247
243248 # async request
244249 async def _arequest (
@@ -255,17 +260,22 @@ async def _arequest(
255260 cookies : Optional [CookieTypes ] = None ,
256261 ) -> httpx .Response :
257262 async with self .get_async_client () as client :
258- return await client .request (
259- method ,
260- url ,
261- params = params ,
262- content = content ,
263- data = data ,
264- files = files ,
265- json = json ,
266- headers = headers ,
267- cookies = cookies ,
268- )
263+ try :
264+ return await client .request (
265+ method ,
266+ url ,
267+ params = params ,
268+ content = content ,
269+ data = data ,
270+ files = files ,
271+ json = json ,
272+ headers = headers ,
273+ cookies = cookies ,
274+ )
275+ except httpx .TimeoutException as e :
276+ raise RequestTimeout (e .request ) from e
277+ except Exception as e :
278+ raise RequestError (repr (e )) from e
269279
270280 # check and parse response
271281 def _check (
Original file line number Diff line number Diff line change 11from typing import TYPE_CHECKING
22
3+ import httpx
4+
35if TYPE_CHECKING :
46 from .response import Response
57 from .graphql import GraphQLResponse
@@ -17,10 +19,22 @@ class AuthExpiredError(GitHubException):
1719 """Auth Expired Error"""
1820
1921
22+ class RequestError (GitHubException ):
23+ """Simple API request failed with unknown error"""
24+
25+
26+ class RequestTimeout (GitHubException ):
27+ """Simple API request timeout"""
28+
29+ def __init__ (self , request : httpx .Request ):
30+ self .request = request
31+
32+
2033class RequestFailed (GitHubException ):
2134 """Simple API request failed with error status code"""
2235
2336 def __init__ (self , response : "Response" ):
37+ self .request = response .raw_request
2438 self .response = response
2539
2640 def __repr__ (self ) -> str :
Original file line number Diff line number Diff line change 3333
3434
3535class GitHub (GitHubCore [A ]):
36- # high level methods
37-
3836 # copy github instance with other auth
3937 def with_auth (self , auth : A_o ) -> "GitHub[A_o]" :
4038 return GitHub (auth = auth , config = self .config .copy ())
You can’t perform that action at this time.
0 commit comments