74 lines
2.7 KiB
Python
74 lines
2.7 KiB
Python
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.prompt import LobePrompt
|
|
from scripts.lib.locale import LobeLocale
|
|
from scripts.lib.lobe_log import LobeLog
|
|
|
|
class LobeApi:
|
|
def __init__(self, config: LobeConfig, package: LobePackage, prompt:LobePrompt, locale: LobeLocale):
|
|
self.package = package
|
|
self.prompt = prompt
|
|
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/prompt")
|
|
async def lobe_prompt_get():
|
|
LobeLog.debug("lobe_prompt_get")
|
|
|
|
if self.prompt.is_empty():
|
|
return Response(content=self.prompt.json(), media_type="application/json", status_code=404)
|
|
return Response(content=self.prompt.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
|
|
)
|