Skip to content

Commit 76c710b

Browse files
committed
Handle multiple pages
1 parent 5aad5f1 commit 76c710b

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/labels/github.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,20 @@ def list_labels(self, repo: Repository) -> typing.List[Label]:
6969
f"{self.base_url}/repos/{repo.owner}/{repo.name}/labels",
7070
headers={"Accept": "application/vnd.github.symmetra-preview+json"},
7171
)
72+
json = response.json()
73+
74+
link_header = response.headers.get('Link', [])
75+
next_page = [l for l in link_header.split(',') if 'rel="next"' in l]
76+
while next_page:
77+
l, _ = next_page[0].split(';')
78+
logger.debug(f"Requesting {l.split('?')[1]}")
79+
response = self.session.get(
80+
l[1:-1],
81+
headers={"Accept": "application/vnd.github.symmetra-preview+json"},
82+
)
83+
json.extend(response.json())
84+
link_header = response.headers.get('Link')
85+
next_page = [l for l in link_header.split(',') if 'rel="next"' in l]
7286

7387
if response.status_code != 200:
7488
raise GitHubException(
@@ -77,7 +91,7 @@ def list_labels(self, repo: Repository) -> typing.List[Label]:
7791
f"{response.reason}"
7892
)
7993

80-
return [Label(**data) for data in response.json()]
94+
return [Label(**data) for data in json]
8195

8296
def get_label(self, repo: Repository, *, name: str) -> Label:
8397
"""Return a single Label from the repository.

0 commit comments

Comments
 (0)