import json from pathlib import Path from fastapi import FastAPI, Response, Request from scripts.lib.config import LobeConfig from scripts.lib.package import LobePackage from scripts.lib.locale import LobeLocale from scripts.lib.lobe_log import LobeLog class LobeApi: def __init__(self, config: LobeConfig, package: LobePackage, locale: LobeLocale): self.package = package self.config = config self.locale = locale pass def create_api_route(self, app: FastAPI): @app.get("/lobe/package") async def lobe_package_get(): LobeLog.debug("lobe_package_get") if self.package.is_empty(): return Response(content=self.package.json(), media_type="application/json", status_code=404) return Response(content=self.package.json(), media_type="application/json", status_code=200) @app.get("/lobe/locales/{lng}") async def lobe_locale_get(lng: str): LobeLog.debug(f"lobe_locale_get: {lng}") language_data = self.locale.get_language_file(lng) return Response(content=json.dumps(language_data), media_type="application/json", status_code=200) @app.get("/lobe/config") async def lobe_config_get(): LobeLog.debug("lobe_config_get") if self.config.is_empty(): return Response(content=self.config.json(), media_type="application/json", status_code=404) return Response(content=self.config.json(), media_type="application/json", status_code=200) @app.post("/lobe/config") async def lobe_config_save(request: Request): LobeLog.debug("lobe_config_save") data = await request.json() self.config.save(data) return Response( content=json.dumps({"message": "Config saved successfully"}), media_type="application/json", status_code=200 ) @app.delete("/lobe/config") async def lobe_config_delete(): LobeLog.debug("lobe_config_delete") self.config.delete() return Response( content=json.dumps({"message": "Config deleted successfully"}), media_type="application/json", status_code=200 )