Skip to content

Commit dc32a10

Browse files
MarcoP9baywet
andauthored
fix: grab the first value if the server response contains a comma (#482)
* fix: grab the first value if the serve response contains a comma * test: Add test on the retry handler when handling comma separated values * fix: make the comma check more specific through a regex * chore: relaxes regex --------- Co-authored-by: Vincent Biret <vibiret@microsoft.com> Co-authored-by: Vincent Biret <vincentbiret@hotmail.com>
1 parent b5e2fd1 commit dc32a10

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

packages/http/httpx/kiota_http/middleware/retry_handler.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import datetime
22
import random
3+
import re
34
import time
45
from email.utils import parsedate_to_datetime
56

@@ -202,6 +203,9 @@ def _parse_retry_after(self, retry_after):
202203
Helper to parse Retry-After and get value in seconds.
203204
"""
204205
try:
206+
retry_after = retry_after.split(",")[0] if re.match(
207+
r"\d+,\d+$", retry_after
208+
) else retry_after
205209
delay = int(retry_after)
206210
except ValueError:
207211
# Not an integer? Try HTTP date

packages/http/httpx/tests/middleware_tests/test_retry_handler.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,16 @@ def test_get_retry_after_no_header():
142142
assert retry_handler._get_retry_after(response) is None
143143

144144

145+
def test_get_retry_after_string_with_comma():
146+
"""
147+
Test the _get_retry_after method with string 30,120 as Retry-After value.
148+
"""
149+
response = httpx.Response(TOO_MANY_REQUESTS, headers={RETRY_AFTER: f'30,120'})
150+
151+
retry_handler = RetryHandler()
152+
assert retry_handler._get_retry_after(response) == 30
153+
154+
145155
def test_get_retry_after_http_date():
146156
"""
147157
Test the _get_retry_after method with a http date as Retry-After value.

0 commit comments

Comments
 (0)