From 0589d13e398c877c64146bc23573ad731af894e5 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 15 Jul 2022 16:31:48 +0800 Subject: [PATCH] =?UTF-8?q?api=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/manager.py | 8 ++-- core/controller/manager_blueprint.py | 68 ++++++++++++++++++++++++++++ core/manager.py | 1 + main.py | 7 ++- requirements.txt | 3 +- 5 files changed, 80 insertions(+), 7 deletions(-) create mode 100644 core/controller/manager_blueprint.py diff --git a/config/manager.py b/config/manager.py index 269ea53..bbe629e 100644 --- a/config/manager.py +++ b/config/manager.py @@ -50,18 +50,18 @@ class ConfigManager(metaclass=Singleton): if not os.path.exists(config_file): _log.warning("配置文件不存在,写入初始化配置") self._current_config = self._default_config - self._write_config() + self.save_config() else: - self._read_config() + self.load_config() - def _read_config(self): + def load_config(self): _log.debug("读取文件%s的配置内容", self._config_file) with open(self._config_file, "r", encoding="UTF8") as _f: yaml = YAML(typ="unsafe", pure=True) self._current_config = yaml.load(_f) _log.debug("读取文件%s的配置内容完毕", self._config_file) - def _write_config(self): + def save_config(self): _log.debug("向文件%s写入配置", self._config_file) with open(self._config_file, "w", encoding="UTF8") as _f: _log.debug("配置内容:", self._current_config) diff --git a/core/controller/manager_blueprint.py b/core/controller/manager_blueprint.py new file mode 100644 index 0000000..c1fbbc9 --- /dev/null +++ b/core/controller/manager_blueprint.py @@ -0,0 +1,68 @@ +from flask import Blueprint, request, jsonify + +from core import CoreManager + +blueprint = Blueprint("api_manager", __name__, url_prefix="/api/manager") + +c = CoreManager() + + +@blueprint.post("/on_broadcast") +def on_broadcast(): + form = request.form + if "room_id" in form: + c.on_broadcast(room_id=form['room_id']) + return jsonify( + message="OK", + code=0, + success=True, + data=None + ) + else: + return jsonify( + message="Missing Param [room_id]", + code=403, + success=False, + data=None + ) + + +@blueprint.post("/open_url") +def open_url(): + form = request.form + if "url" in form: + c.open_tab(form['url']) + return jsonify( + message="OK", + code=0, + success=True, + data=None + ) + else: + return jsonify( + message="Missing Param [room_id]", + code=403, + success=False, + data=None + ) + + +@blueprint.get("/config") +def get_config(): + return jsonify( + message="OK", + code=0, + success=True, + data=c.config_manager.config, + ) + + +@blueprint.post("/config") +def write_config(): + c.config_manager.save_config() + return jsonify( + message="OK", + code=0, + success=True, + data=None + ) diff --git a/core/manager.py b/core/manager.py index cb2b42e..2696162 100644 --- a/core/manager.py +++ b/core/manager.py @@ -61,6 +61,7 @@ class CoreManager(metaclass=Singleton): _log.info("初始化浏览器管理器完毕") _log.debug("初始化输出管理器") self.output_manager = OutputManager(self.config_manager) + self.output_manager.start_loop() _log.info("初始化输出管理器完毕") self._open_config_tabs() diff --git a/main.py b/main.py index 82c44da..eb00a3f 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,12 @@ import logging import atexit +from flask import Flask from core import CoreManager +from core.controller.manager_blueprint import blueprint as manager_blueprint -logging.basicConfig(level=logging.INFO) +app = Flask(__name__) +app.register_blueprint(manager_blueprint) def _on_exit(): @@ -15,4 +18,4 @@ atexit.register(_on_exit) if __name__ == '__main__': c = CoreManager() - c.proxy_manager.join() + app.run() diff --git a/requirements.txt b/requirements.txt index 973e513..9808f09 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,5 @@ colorama==0.4.4 selenium==4.1.0 mitmproxy~=8.0.0 -protobuf<3.20 \ No newline at end of file +protobuf<3.20 +Flask~=2.0.3 \ No newline at end of file