from flask import Flask, request, jsonify from config import Config from db import MedodsAPI, db, VkPost from scheduler import start_scheduler from token_utils import generate_token from http_client import send_request import logging import os app = Flask(__name__) app.config.from_object(Config) db.init_app(app) os.makedirs("logs", exist_ok=True) logging.basicConfig( level=logging.INFO, format="%(asctime)s | %(levelname)s | %(name)s | %(message)s", handlers=[ logging.FileHandler(Config.LOG_FILE, encoding="utf-8"), logging.StreamHandler(), ], ) logger = logging.getLogger(__name__) from flask import render_template @app.route("/") def index(): return render_template("index.html") @app.route("/medods") def medods(): medods_api = MedodsAPI.query.first() data = {"url": medods_api.url if medods_api else "none"} return render_template("medods.html", data=data) @app.route("/vk") def vk(): return render_template("vk.html") @app.route("/posts") def posts(): return render_template("posts.html") @app.before_request def init(): db.create_all() start_scheduler() logger.info("Приложение запущено") @app.route("/settings/medods_url", methods=["POST"]) def medods_url(): data = request.json db.session.merge(MedodsAPI(url=data.get("url", "http://10.3.10.10/api/v2/"))) db.session.commit() logger.info(data) return jsonify({"status": "ok"}) @app.route("/settings/medods_apikey", methods=["POST"]) def medods_apikey(): data = request.json logger.info(data) return jsonify({"status": "ok"}) @app.route("/settings/requests", methods=["GET", "POST", "PATCH"]) def get_requests(): match request.method: case "POST": logger.info("Добавлен новый запрос") logger.info(request.json) return jsonify({"status": "ok"}) case "PATCH": logger.info("Обновлен запрос") logger.info(request.json) return jsonify({"status": "ok"}) case "GET": logger.info("Получен список запросов") return jsonify( [ { "id": 1, "method": "GET", "title": "Получить список пользователей", "url_path": "/users", "payload": {}, "query": {"limit": 10, "offset": 0}, }, { "id": 2, "method": "POST", "title": "Добавить пост в очередь", "url_path": "/scheduler", "payload": { "text": "Текст поста", "image": "path/to/image.jpg", }, "query": {}, }, ] ) case _: logger.error("Неверный метод запроса") return jsonify({"status": "error"}) @app.route("/token", methods=["GET"]) def token(): return jsonify({"token": generate_token()}) @app.route("/request", methods=["POST"]) def make_request(): data = request.json response = send_request( data["method"], data["url"], data.get("payload"), data.get("headers") ) return jsonify({"status": response.status_code}) @app.route("/vk/post", methods=["POST"]) def add_post(): data = request.json post = VkPost( text=data["text"], image_path=data.get("image"), publish_at=data["publish_at"] ) db.session.add(post) db.session.commit() return jsonify({"status": "ok"}) if __name__ == "__main__": app.run(debug=True)