File size: 2,303 Bytes
db14b86 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
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
)
|