Files
weilin9999-WeiLin-Comfyui-T…/app/server/panel_server/server_init.py
T
WeiLin 7c46d18229 修复已知问题 0.0.6版本
修复已知问题 0.0.6版本
2025-01-15 17:58:59 +08:00

144 lines
6.2 KiB
Python

import os
import json
from http.server import BaseHTTPRequestHandler
from ..dao.dao import set_language
from .ymal_utils import mergerDataToDb
class FileListHandler:
def __init__(self, directory='user_data'):
current_dir = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(current_dir, f'../../../user_data')
self.directory = db_path
def handle(self, request_handler: BaseHTTPRequestHandler):
if request_handler.path == '/api/file_list':
file_list = self.get_file_list()
response = json.dumps({"data": file_list})
request_handler.send_response(200)
request_handler.send_header('Content-type', 'application/json')
request_handler.send_header('Access-Control-Allow-Origin', '*')
request_handler.end_headers()
request_handler.wfile.write(response.encode('utf-8'))
return True
return False
def get_file_list(self):
file_list = []
for root, dirs, files in os.walk(self.directory):
for file in files:
file_path = os.path.join(root, file)
file_list.append({
'path': file_path,
'name': file
})
return file_list
class LanguageHandler:
def _set_headers(self, handler):
handler.send_header('Content-type', 'application/json')
handler.send_header('Access-Control-Allow-Origin', '*')
handler.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
handler.send_header('Access-Control-Allow-Headers', 'x-api-key,Content-Type')
def handle(self, request_handler: BaseHTTPRequestHandler):
if request_handler.path == '/api/set_language':
if request_handler.command == 'OPTIONS':
self.handle_options(request_handler)
return True
elif request_handler.command == 'POST':
self.handle_post(request_handler)
return True
return False
def handle_options(self, request_handler: BaseHTTPRequestHandler):
request_handler.send_response(200)
self._set_headers(request_handler)
request_handler.end_headers()
def handle_post(self, request_handler: BaseHTTPRequestHandler):
try:
content_length = int(request_handler.headers['Content-Length'])
post_data = request_handler.rfile.read(content_length)
# 确保读取到的数据是字符串
post_data = post_data.decode('utf-8')
data = json.loads(post_data)
name = data.get("name")
if name:
try:
set_language(name)
response = json.dumps({"status": "success"})
request_handler.send_response(200)
except FileNotFoundError as e:
response = json.dumps({"status": "error", "message": str(e)})
request_handler.send_response(404)
except Exception as e:
response = json.dumps({"status": "error", "message": str(e)})
request_handler.send_response(500)
else:
response = json.dumps({"status": "error", "message": "Missing 'name' parameter"})
request_handler.send_response(400)
self._set_headers(request_handler)
request_handler.end_headers()
request_handler.wfile.write(response.encode('utf-8'))
except Exception as e:
print(f"Error handling request: {e}")
request_handler.send_response(500)
self._set_headers(request_handler)
request_handler.end_headers()
response = json.dumps({"status": "error", "message": str(e)})
request_handler.wfile.write(response.encode('utf-8'))
class YamlConvertHandler:
def _set_headers(self, handler):
handler.send_header('Content-type', 'application/json')
handler.send_header('Access-Control-Allow-Origin', '*')
handler.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
handler.send_header('Access-Control-Allow-Headers', 'x-api-key,Content-Type')
def handle(self, request_handler: BaseHTTPRequestHandler):
if request_handler.path == '/api/convert_yaml':
if request_handler.command == 'OPTIONS':
self.handle_options(request_handler)
return True
elif request_handler.command == 'POST':
self.handle_post(request_handler)
return True
return False
def handle_options(self, request_handler: BaseHTTPRequestHandler):
request_handler.send_response(200)
self._set_headers(request_handler)
request_handler.end_headers()
def handle_post(self, request_handler: BaseHTTPRequestHandler):
try:
content_length = int(request_handler.headers['Content-Length'])
post_data = request_handler.rfile.read(content_length)
data = json.loads(post_data.decode('utf-8'))
yaml_file = data.get("yaml_file")
if not yaml_file:
response = json.dumps({"status": "error", "message": "Missing yaml_file parameter"})
request_handler.send_response(400)
else:
try:
mergerDataToDb(yaml_file)
response = json.dumps({"status": "success"})
request_handler.send_response(200)
except Exception as e:
response = json.dumps({"status": "error", "message": str(e)})
request_handler.send_response(500)
self._set_headers(request_handler)
request_handler.end_headers()
request_handler.wfile.write(response.encode('utf-8'))
except Exception as e:
print(f"Error handling request: {e}")
request_handler.send_response(500)
self._set_headers(request_handler)
request_handler.end_headers()
response = json.dumps({"status": "error", "message": str(e)})
request_handler.wfile.write(response.encode('utf-8'))