diff --git a/custom_components/bahmcloud_store/views.py b/custom_components/bahmcloud_store/views.py index a66a779..d356c5d 100644 --- a/custom_components/bahmcloud_store/views.py +++ b/custom_components/bahmcloud_store/views.py @@ -292,6 +292,27 @@ class BCSReadmeView(HomeAssistantView): return web.json_response({"ok": True, "readme": md_str, "html": html}) +class BCSVersionsView(HomeAssistantView): + url = "/api/bcs/versions" + name = "api:bcs_versions" + requires_auth = True + + def __init__(self, core: Any) -> None: + self.core: BCSCore = core + + async def get(self, request: web.Request) -> web.Response: + repo_id = request.query.get("repo_id") + if not repo_id: + return web.json_response({"ok": False, "message": "Missing repo_id"}, status=400) + + try: + versions = await self.core.list_repo_versions(repo_id) + return web.json_response({"ok": True, "repo_id": repo_id, "versions": versions}, status=200) + except Exception as e: + _LOGGER.exception("BCS list versions failed: %s", e) + return web.json_response({"ok": False, "message": str(e) or "List versions failed"}, status=500) + + class BCSInstallView(HomeAssistantView): url = "/api/bcs/install" name = "api:bcs_install" @@ -302,11 +323,13 @@ class BCSInstallView(HomeAssistantView): async def post(self, request: web.Request) -> web.Response: repo_id = request.query.get("repo_id") + version = request.query.get("version") if not repo_id: return web.json_response({"ok": False, "message": "Missing repo_id"}, status=400) try: - result = await self.core.install_repo(repo_id) + v = str(version).strip() if version is not None else None + result = await self.core.install_repo(repo_id, version=v) return web.json_response(result, status=200) except Exception as e: _LOGGER.exception("BCS install failed: %s", e) @@ -323,11 +346,13 @@ class BCSUpdateView(HomeAssistantView): async def post(self, request: web.Request) -> web.Response: repo_id = request.query.get("repo_id") + version = request.query.get("version") if not repo_id: return web.json_response({"ok": False, "message": "Missing repo_id"}, status=400) try: - result = await self.core.update_repo(repo_id) + v = str(version).strip() if version is not None else None + result = await self.core.update_repo(repo_id, version=v) return web.json_response(result, status=200) except Exception as e: _LOGGER.exception("BCS update failed: %s", e)