Skip to content

Commit e321581

Browse files
authored
Merge pull request #37 from asherf/bg
Properly handle network errors (no response object)
2 parents 9fdef35 + 247309a commit e321581

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

bugout/calls.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,26 @@
77

88

99
def make_request(method: Method, url: str, **kwargs) -> Any:
10-
response_body = None
1110
try:
12-
r = requests.request(method.value, url=url, **kwargs)
13-
r.raise_for_status()
14-
response_body = r.json()
15-
except requests.exceptions.RequestException as e:
16-
exception_detail = r.json()
11+
response = requests.request(method.value, url=url, **kwargs)
12+
response.raise_for_status()
13+
except requests.exceptions.RequestException as err:
14+
response = err.response
15+
if not err.response:
16+
# Connection errors, timepouts, etc...
17+
raise BugoutResponseException("Network error", detail=str(err))
18+
if response.headers.get("Content-Type") == "application/json":
19+
exception_detail = response.json()["detail"]
20+
else:
21+
exception_detail = response.text
1722
raise BugoutResponseException(
1823
"An exception occurred at Bugout API side",
19-
status_code=r.status_code,
20-
detail=exception_detail["detail"]
21-
if exception_detail["detail"] is not None
22-
else None,
24+
status_code=response.status_code,
25+
detail=exception_detail,
2326
)
2427
except Exception as e:
25-
raise BugoutUnexpectedResponse(f"{str(e)}")
26-
return response_body
28+
raise BugoutUnexpectedResponse({str(e)})
29+
return response.json()
2730

2831

2932
def ping(url: str) -> Dict[str, Any]:

bugout/exceptions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class BugoutResponseException(Exception):
2121
def __init__(
2222
self,
2323
message,
24-
status_code: int,
24+
status_code: Optional[int] = None,
2525
detail: Optional[Any] = None,
2626
) -> None:
2727
super().__init__(message)

0 commit comments

Comments
 (0)