init
This commit is contained in:
61
backend/routes/system.py
Normal file
61
backend/routes/system.py
Normal file
@@ -0,0 +1,61 @@
|
||||
from flask import Blueprint, jsonify, request
|
||||
from config import config_manager
|
||||
from utils.plex_utils import PlexManager
|
||||
from utils.placeholders import ServicePlaceholder
|
||||
|
||||
system_bp = Blueprint('system', __name__, url_prefix='/api/system')
|
||||
MANAGER_MAP = {
|
||||
'plex': PlexManager,
|
||||
# TODO: 当你实现其他 Manager 后,在这里添加它们
|
||||
# 'qbittorrent': QBManager,
|
||||
# 'transmission': TransmissionManager,
|
||||
# 'emby': EmbyManager,
|
||||
# 'fnos': FnosManager,
|
||||
}
|
||||
@system_bp.route('/config', methods=['GET'])
|
||||
def get_system_config():
|
||||
"""获取系统配置(屏蔽敏感信息)"""
|
||||
return jsonify(config_manager.get_config(sensitive=False))
|
||||
|
||||
@system_bp.route('/config', methods=['POST'])
|
||||
def save_system_config():
|
||||
"""保存系统配置"""
|
||||
new_config = request.get_json()
|
||||
if not isinstance(new_config, dict):
|
||||
return jsonify({"error": "无效的JSON格式"}), 400
|
||||
|
||||
success, error = config_manager.save_config(new_config)
|
||||
if success:
|
||||
return jsonify({"message": "配置保存成功!"})
|
||||
else:
|
||||
return jsonify({"error": f"保存失败: {error}"}), 500
|
||||
|
||||
@system_bp.route('/test_connection', methods=['POST'])
|
||||
def test_connection():
|
||||
"""动态测试指定服务的连接"""
|
||||
data = request.get_json()
|
||||
service_type = data.get('type')
|
||||
service_config = data.get('config')
|
||||
|
||||
if not service_type or not service_config:
|
||||
return jsonify({"error": "请求参数不完整"}), 400
|
||||
|
||||
# 3. 动态选择 Manager
|
||||
# 从 MANAGER_MAP 中获取对应的类。
|
||||
# 如果 service_type 不在映射中(例如 'emby' 还没实现),则默认使用 ServicePlaceholder
|
||||
ManagerClass = MANAGER_MAP.get(service_type, ServicePlaceholder)
|
||||
|
||||
# 使用从前端实时传来的配置实例化 Manager
|
||||
manager_instance = ManagerClass(service_config)
|
||||
|
||||
try:
|
||||
# 调用实例的 test_connection 方法
|
||||
# 我们新的 Manager 返回 (bool, str),正好符合这里的逻辑
|
||||
success, message = manager_instance.test_connection()
|
||||
return jsonify({"success": success, "message": message})
|
||||
except Exception as e:
|
||||
# 添加一个通用异常捕获,防止 Manager 内部的意外错误导致服务器崩溃
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"message": f"测试时发生内部错误: {str(e)}"
|
||||
}), 500
|
||||
Reference in New Issue
Block a user