Skip to content

Commit 506348a

Browse files
committed
Add support for max_redirects in HTTPClient and corresponding unit tests
1 parent 7362d3b commit 506348a

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

src/ciberwebscan/core/client/http_client.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ def __init__(
120120
metrics_callback: MetricsCallback | None = None,
121121
proxy: str | None = None,
122122
retryable_status_codes: set[int] | None = None,
123+
max_redirects: int | None = None,
123124
):
124125
"""
125126
Initialize the HTTP client.
@@ -141,6 +142,8 @@ def __init__(
141142
Supports http, https, and socks5 protocols.
142143
retryable_status_codes: HTTP status codes that trigger retry.
143144
If None, uses config value or DEFAULT_RETRYABLE_STATUS_CODES.
145+
max_redirects: Maximum number of redirects to follow.
146+
If None, uses config value (default 10).
144147
"""
145148
config = get_config().http
146149

@@ -171,6 +174,9 @@ def __init__(
171174
resolved_follow_redirects = (
172175
config.follow_redirects if follow_redirects is None else follow_redirects
173176
)
177+
resolved_max_redirects = (
178+
config.max_redirects if max_redirects is None else max_redirects
179+
)
174180

175181
resolved_proxy = proxy
176182
if resolved_proxy is None and config.proxy is not None:
@@ -206,6 +212,7 @@ def __init__(
206212
http2=resolved_http2,
207213
verify=resolved_verify,
208214
follow_redirects=resolved_follow_redirects,
215+
max_redirects=resolved_max_redirects,
209216
headers=default_headers,
210217
proxy=resolved_proxy,
211218
)

tests/unit/core/client/test_http_client.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,18 @@ def test_retry_on_retryable_status(self, mock_request):
271271
assert response.status_code == 200
272272
assert mock_request.call_count == 2
273273

274+
def test_max_redirects_from_config(self):
275+
"""Test that max_redirects is loaded from config (default 10)."""
276+
client = HTTPClient()
277+
assert client._client.max_redirects == 10
278+
client.close()
279+
280+
def test_max_redirects_override(self):
281+
"""Test that max_redirects can be overridden per instance."""
282+
client = HTTPClient(max_redirects=5)
283+
assert client._client.max_redirects == 5
284+
client.close()
285+
274286
def test_convenience_methods_exist(self):
275287
"""Test that all convenience methods exist."""
276288
client = HTTPClient()

0 commit comments

Comments
 (0)