Skip to content
This repository was archived by the owner on Jun 28, 2024. It is now read-only.

Commit 24eebfb

Browse files
committed
Add breadcrumb
1 parent 7b68d0b commit 24eebfb

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

seamapi/seam.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,20 @@ def make_request(self, method: str, path: str, **kwargs):
103103
}
104104
response = requests.request(method, url, headers=headers, **kwargs)
105105

106+
if self.should_report_exceptions and response.status_code:
107+
# Add breadcrumb
108+
sentry_sdk.add_breadcrumb(
109+
category="http",
110+
level="info",
111+
data={
112+
"method": method,
113+
"url": url,
114+
"status_code": response.status_code,
115+
"request_id": response.headers.get("seam-request-id", "unknown"),
116+
},
117+
)
118+
119+
106120
parsed_response = response.json()
107121

108122
if response.status_code != 200:

tests/test_sentry_errors.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ def test_sends_error_to_sentry(seam: Seam, monkeypatch):
88
method="GET",
99
url=seam.api_url + "/devices/list",
1010
# Missing top-level `devices` key
11-
json={"foo": []}
11+
json={"foo": []},
12+
headers={"seam-request-id": "1234"},
1213
)
1314
responses.add(rsp)
1415

@@ -29,6 +30,8 @@ def test_sends_error_to_sentry(seam: Seam, monkeypatch):
2930
sentry_capture_exception_calls = []
3031
monkeypatch.setattr("sentry_sdk.capture_exception", lambda *a, **kw: sentry_capture_exception_calls.append((a, kw)))
3132

33+
sentry_add_breadcrumb_calls = []
34+
monkeypatch.setattr("sentry_sdk.add_breadcrumb", lambda *a, **kw: sentry_add_breadcrumb_calls.append((a, kw)))
3235
try:
3336
client_with_sentry.devices.list()
3437
assert False
@@ -40,6 +43,10 @@ def test_sends_error_to_sentry(seam: Seam, monkeypatch):
4043
assert len(sentry_capture_exception_calls) == 1
4144
assert type(sentry_capture_exception_calls[0][0][0]) is KeyError
4245

46+
assert len(sentry_add_breadcrumb_calls) == 1
47+
assert sentry_add_breadcrumb_calls[0][1]['category'] == "http"
48+
assert sentry_add_breadcrumb_calls[0][1]["data"]["request_id"] == "1234"
49+
4350
@responses.activate
4451
def test_skips_sentry_reporting(seam: Seam, monkeypatch):
4552
rsp = responses.Response(

0 commit comments

Comments
 (0)