sd-webui-lobe-theme/scripts/lib/api.py

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
)