Skip to content

Commit 5e4c7fc

Browse files
authored
Send service header on all requests (#492)
1 parent 11d6895 commit 5e4c7fc

File tree

3 files changed

+14
-14
lines changed

3 files changed

+14
-14
lines changed

statsig/http_worker.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ def _request(
314314
create_marker().start({"markerID": marker_id})
315315
)
316316

317-
headers = self._prepare_headers(headers, zipped, url)
317+
headers = self._prepare_headers(headers, zipped)
318318

319319
if payload is not None:
320320
payload = self._prepare_payload(payload, url, zipped)
@@ -447,7 +447,7 @@ def _is_success_code(self, status_code: Optional[int]) -> bool:
447447
return 200 <= status_code < 300
448448

449449
def _prepare_headers(
450-
self, headers: Optional[Dict[str, Any]], zipped: bool, url: str
450+
self, headers: Optional[Dict[str, Any]], zipped: bool
451451
) -> Dict[str, Any]:
452452
base_headers = {
453453
"Content-type": "application/json",
@@ -458,6 +458,7 @@ def _prepare_headers(
458458
"STATSIG-SDK-VERSION": self.__statsig_metadata["sdkVersion"],
459459
"STATSIG-RETRY": "0",
460460
"Accept-Encoding": "gzip, deflate, br",
461+
"x-request-service": self.__service_name,
461462
}
462463

463464
if zipped:
@@ -466,9 +467,6 @@ def _prepare_headers(
466467
if headers is not None:
467468
base_headers.update(headers)
468469

469-
if "statsig-foward-proxy" in url:
470-
base_headers.update({"x-request-service": self.__service_name})
471-
472470
return base_headers
473471

474472
def _zip_payload(self, payload: str) -> bytes:

tests/test_network.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def fake_request(_method, _url, headers, *_args, **_kwargs):
9595

9696
self.assertEqual(captured_headers.get("x-request-service"), "unit-test-service")
9797

98-
def test_dcs_service_header_not_sent_without_forward_proxy_url(self):
98+
def test_dcs_service_header_sent_without_forward_proxy_url(self):
9999
captured_headers = {}
100100
self.net._HttpWorker__service_name = "unit-test-service"
101101
self.net._HttpWorker__api_for_download_config_specs = "http://test/no-forward-proxy/"
@@ -107,7 +107,7 @@ def fake_request(_method, _url, headers, *_args, **_kwargs):
107107
with patch.object(self.net, "_run_request_with_strict_timeout", side_effect=fake_request):
108108
self.net.get_dcs(lambda *_: None)
109109

110-
self.assertIsNone(captured_headers.get("x-request-service"))
110+
self.assertEqual(captured_headers.get("x-request-service"), "unit-test-service")
111111

112112
def test_id_lists_service_header_sent_for_forward_proxy_url(self):
113113
captured_headers = {}
@@ -123,7 +123,7 @@ def fake_request(_method, _url, headers, *_args, **_kwargs):
123123

124124
self.assertEqual(captured_headers.get("x-request-service"), "unit-test-service")
125125

126-
def test_id_lists_service_header_not_sent_without_forward_proxy_url(self):
126+
def test_id_lists_service_header_sent_without_forward_proxy_url(self):
127127
captured_headers = {}
128128
self.net._HttpWorker__service_name = "unit-test-service"
129129
self.net._HttpWorker__api_for_get_id_lists = "http://test/no-forward-proxy/"
@@ -135,7 +135,7 @@ def fake_request(_method, _url, headers, *_args, **_kwargs):
135135
with patch.object(self.net, "_run_request_with_strict_timeout", side_effect=fake_request):
136136
self.net.get_id_lists(lambda *_: None)
137137

138-
self.assertIsNone(captured_headers.get("x-request-service"))
138+
self.assertEqual(captured_headers.get("x-request-service"), "unit-test-service")
139139

140140
def test_id_list_service_header_sent_for_forward_proxy_url(self):
141141
captured_headers = {}
@@ -150,7 +150,7 @@ def fake_request(_method, _url, headers, *_args, **_kwargs):
150150

151151
self.assertEqual(captured_headers.get("x-request-service"), "unit-test-service")
152152

153-
def test_id_list_service_header_not_sent_without_forward_proxy_url(self):
153+
def test_id_list_service_header_sent_without_forward_proxy_url(self):
154154
captured_headers = {}
155155
self.net._HttpWorker__service_name = "unit-test-service"
156156

@@ -161,7 +161,7 @@ def fake_request(_method, _url, headers, *_args, **_kwargs):
161161
with patch.object(self.net, "_run_request_with_strict_timeout", side_effect=fake_request):
162162
self.net.get_id_list(lambda *_: None, "http://test/no-forward-proxy/list_1", headers={})
163163

164-
self.assertIsNone(captured_headers.get("x-request-service"))
164+
self.assertEqual(captured_headers.get("x-request-service"), "unit-test-service")
165165

166166
def test_network_latency_metric_includes_required_tags(self):
167167
self.net._HttpWorker__api_for_get_id_lists = "https://api.statsigcdn.com/v1/"

tests/test_sync_config_fallback.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,13 +186,14 @@ def verify_headers(url, **kwargs):
186186

187187
self.assertTrue(headers_verified, "Headers were not verified")
188188

189-
def test_service_name_header_not_sent_without_forward_proxy_url(self, mock_request):
189+
def test_service_name_header_sent_without_forward_proxy_url(self, mock_request):
190190
headers_verified = False
191+
captured_service_name = None
191192

192193
def verify_headers(url, **kwargs):
193-
nonlocal headers_verified
194+
nonlocal headers_verified, captured_service_name
194195
request_headers = kwargs.get("headers", {})
195-
self.assertIsNone(request_headers.get("x-request-service"))
196+
captured_service_name = request_headers.get("x-request-service")
196197
headers_verified = True
197198
return PARSED_CONFIG_SPEC
198199

@@ -207,6 +208,7 @@ def verify_headers(url, **kwargs):
207208
statsig.shutdown()
208209

209210
self.assertTrue(headers_verified, "Service name header was not verified")
211+
self.assertEqual(captured_service_name, "unit-test-service")
210212

211213
def wait_for_sync_and_validate(self):
212214
_network_stub.stub_statsig_api_request_with_value("download_config_specs/.*", 200,

0 commit comments

Comments
 (0)