diff --git a/custom_components/bahmcloud_store/core.py b/custom_components/bahmcloud_store/core.py index 75d9a7a..a8d4c9a 100644 --- a/custom_components/bahmcloud_store/core.py +++ b/custom_components/bahmcloud_store/core.py @@ -58,6 +58,7 @@ class BCSInstallError(BCSError): @dataclass class BCSConfig: store_url: str + github_token: str | None = None @dataclass @@ -696,7 +697,11 @@ class BCSCore: async def process_one(r: RepoItem) -> None: async with sem: - info: RepoInfo = await fetch_repo_info(self.hass, r.url) + info: RepoInfo = await fetch_repo_info( + self.hass, + r.url, + github_token=self.config.github_token, + ) r.provider = info.provider or r.provider r.owner = info.owner or r.owner @@ -755,7 +760,11 @@ class BCSCore: async def _enrich_one_repo(self, r: RepoItem) -> None: """Fetch provider info + metadata for a single repo item.""" - info: RepoInfo = await fetch_repo_info(self.hass, r.url) + info: RepoInfo = await fetch_repo_info( + self.hass, + r.url, + github_token=self.config.github_token, + ) r.provider = info.provider or r.provider r.owner = info.owner or r.owner @@ -807,7 +816,7 @@ class BCSCore: _LOGGER.debug("BCS ensure_repo_details failed for %s", repo_id, exc_info=True) return r - async def list_repo_versions(self, repo_id: str) -> list[dict[str, Any]]: + async def list_repo_versions(self, repo_id: str, *, limit: int = 20) -> list[dict[str, str]]: repo = self.get_repo(repo_id) if not repo: return [] @@ -826,7 +835,14 @@ class BCSCore: return list(cached.get("versions") or []) try: - versions = await fetch_repo_versions(self.hass, repo.url) + versions = await fetch_repo_versions( + self.hass, + repo.url, + provider=repo.provider, + default_branch=repo.default_branch, + github_token=self.config.github_token, + limit=limit, + ) except Exception: versions = [] @@ -1027,23 +1043,6 @@ class BCSCore: default_branch=repo.default_branch, ) - async def list_repo_versions(self, repo_id: str, *, limit: int = 20) -> list[dict[str, str]]: - """List installable versions/refs for a repo. - - This is used by the UI to allow selecting an older tag/release. - """ - repo = self.get_repo(repo_id) - if not repo: - raise BCSInstallError(f"repo_id not found: {repo_id}") - - return await fetch_repo_versions( - self.hass, - repo.url, - provider=repo.provider, - default_branch=repo.default_branch, - limit=limit, - ) - def _pick_ref_for_install(self, repo: RepoItem) -> str: if repo.latest_version and str(repo.latest_version).strip(): return str(repo.latest_version).strip()