Make Link header parsing more robust

Split on comma before searching for rel="next" to avoid
incorrectly matching page number from a different link
(e.g., rel="prev") in multi-link headers.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
George Antonopoulos
2026-01-14 19:39:52 +00:00
parent ad6075629e
commit feb0d297f4

View File

@@ -435,12 +435,13 @@ class BasecampClient:
# Parse Link header for next page # Parse Link header for next page
next_page = None next_page = None
link_header = response.headers.get('Link', '') link_header = response.headers.get('Link', '')
if 'rel="next"' in link_header: # Split by comma to handle multiple links (e.g., rel="prev", rel="next")
# Extract page number from Link header for link in link_header.split(','):
# Format: <https://3.basecampapi.com/.../comments.json?page=2>; rel="next" if 'rel="next"' in link:
match = re.search(r'page=(\d+).*rel="next"', link_header) match = re.search(r'page=(\d+)', link)
if match: if match:
next_page = int(match.group(1)) next_page = int(match.group(1))
break
return { return {
"comments": response.json(), "comments": response.json(),