Skip to content

Commit d5533d1

Browse files
authored
feat: add support for setting x-request-id header (#606)
1 parent 2c13006 commit d5533d1

File tree

3 files changed

+38
-1
lines changed

3 files changed

+38
-1
lines changed

censys/common/base.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ def __init__(
9898
self._session.proxies.update(proxies)
9999
if cookies:
100100
self._session.cookies.update(cookies)
101+
self.request_id = kwargs.get("request_id")
101102
self._session.headers.update(
102103
{
103104
"accept": "application/json, */8",
@@ -112,6 +113,29 @@ def __init__(
112113
}
113114
)
114115

116+
@property
117+
def request_id(self) -> Optional[str]:
118+
"""The x-request-id header value for API requests.
119+
120+
The x-request-id header is not set when the value is None.
121+
Value is None by default
122+
123+
Returns:
124+
Type[Optional[str]]: The value of the header.
125+
"""
126+
value = self._session.headers.get("x-request-id")
127+
if not isinstance(value, str):
128+
return None
129+
return value
130+
131+
@request_id.setter
132+
def request_id(self, value: Optional[str]):
133+
if value is None:
134+
self._session.headers.pop("x-request-id", None)
135+
return
136+
137+
self._session.headers["x-request-id"] = value
138+
115139
@staticmethod
116140
def _get_exception_class(_: Response) -> Type[CensysAPIException]:
117141
"""Maps HTTP status code or ASM error code to exception.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "censys"
3-
version = "2.2.11"
3+
version = "2.2.12"
44
description = "An easy-to-use and lightweight API wrapper for Censys APIs (censys.io)."
55
authors = ["Censys, Inc. <support@censys.io>"]
66
license = "Apache-2.0"

tests/test_base.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,19 @@ def test_user_agent(self):
9696
== requests.utils.default_user_agent() + " test"
9797
)
9898

99+
def test_request_id(self):
100+
id_value = "my-request-id"
101+
102+
# Test request id value is present
103+
base = CensysAPIBase(TEST_URL, request_id=id_value)
104+
assert base.request_id == id_value
105+
assert base._session.headers.get("x-request-id") == id_value
106+
107+
# Test request id value is not present
108+
base.request_id = None
109+
assert base.request_id is None
110+
assert base._session.headers.get("x-request-id") is None
111+
99112
@pytest.mark.filterwarnings("ignore:HTTP proxies will not be used.")
100113
def test_proxies(self):
101114
# Mock/actual call

0 commit comments

Comments
 (0)