revert: remove pagination, only fetch first 100 releases

This commit is contained in:
ytshen 2025-12-24 10:25:57 +08:00
parent 9d489247f2
commit 680094b87d

View File

@ -124,45 +124,29 @@ class GitHubClient(BaseHTTPClient):
return None return None
def get_releases( def get_releases(
self, owner: str, repo: str, per_page: int = 100, max_pages: int = 10 self, owner: str, repo: str, per_page: int = 100
) -> list[dict[str, Any]]: ) -> list[dict[str, Any]]:
"""Get all releases for a repository with pagination. """Get releases for a repository (first page only).
Args: Args:
owner: Repository owner. owner: Repository owner.
repo: Repository name. repo: Repository name.
per_page: Number of releases per page (max 100). per_page: Number of releases to fetch (max 100).
max_pages: Maximum number of pages to fetch.
Returns: Returns:
List of release data dictionaries. List of release data dictionaries.
""" """
url = GitHubAPI.releases(owner, repo) url = GitHubAPI.releases(owner, repo)
all_releases: list[dict[str, Any]] = []
try: try:
for page in range(1, max_pages + 1):
response = self.get( response = self.get(
url, url,
headers=self._headers, headers=self._headers,
params={"per_page": per_page, "page": page}, params={"per_page": per_page},
) )
releases = response.json() return response.json()
if not releases:
break
all_releases.extend(releases)
# If we got fewer than per_page, we've reached the end
if len(releases) < per_page:
break
logger.debug(f"Fetched {len(all_releases)} releases for {owner}/{repo}")
return all_releases
except Exception as e: except Exception as e:
logger.warning(f"Failed to get releases for {owner}/{repo}: {e}") logger.warning(f"Failed to get releases for {owner}/{repo}: {e}")
return all_releases if all_releases else [] return []
def get_release( def get_release(
self, owner: str, repo: str, tag: str self, owner: str, repo: str, tag: str