базовые настройки
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
from flask import Flask, request, jsonify
|
||||
from config import Config
|
||||
from db import MedodsAPI, db, VkPost
|
||||
from db import VkAPI, db, MedodsAPI, ApiEndpoint
|
||||
from scheduler import start_scheduler
|
||||
from token_utils import generate_token
|
||||
from http_client import send_request
|
||||
import logging
|
||||
import os
|
||||
@@ -33,16 +32,28 @@ def index():
|
||||
return render_template("index.html")
|
||||
|
||||
|
||||
@app.route("/medods")
|
||||
@app.route("/medods", methods=["GET"])
|
||||
def medods():
|
||||
medods_api = MedodsAPI.query.first()
|
||||
data = {"url": medods_api.url if medods_api else "none"}
|
||||
data = {}
|
||||
if medods_api:
|
||||
apiKey = False
|
||||
if medods_api.identity and medods_api.secretKey:
|
||||
apiKey = True
|
||||
data = {
|
||||
"url": medods_api.url,
|
||||
"apiKey": apiKey,
|
||||
}
|
||||
return render_template("medods.html", data=data)
|
||||
|
||||
|
||||
@app.route("/vk")
|
||||
def vk():
|
||||
return render_template("vk.html")
|
||||
vkDB = VkAPI.query.first()
|
||||
data = {}
|
||||
if vkDB:
|
||||
data = {"vk_settings": vkDB.toDict()}
|
||||
return render_template("vk.html", data=data)
|
||||
|
||||
|
||||
@app.route("/posts")
|
||||
@@ -57,66 +68,153 @@ def init():
|
||||
logger.info("Приложение запущено")
|
||||
|
||||
|
||||
@app.route("/settings/medods_url", methods=["POST"])
|
||||
@app.route("/settings/medods", 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"})
|
||||
apiKey = data.get("apiKey", None)
|
||||
url = data.get("url", None)
|
||||
if url is not None:
|
||||
logger.info("Получен url")
|
||||
try:
|
||||
medodsRecord = MedodsAPI.query.first()
|
||||
medodsRecord.url = url
|
||||
db.session.commit()
|
||||
logger.info("Обновлен url")
|
||||
except Exception:
|
||||
db.session.merge(MedodsAPI(url=url))
|
||||
db.session.commit()
|
||||
logger.info("Добавлен url")
|
||||
|
||||
if apiKey:
|
||||
logger.info("Получены ключи")
|
||||
try:
|
||||
medodsRecord = MedodsAPI.query.first()
|
||||
medodsRecord.identity = apiKey["identity"]
|
||||
medodsRecord.secretKey = apiKey["secretKey"]
|
||||
db.session.commit()
|
||||
logger.info("Обновлены ключи")
|
||||
except Exception:
|
||||
db.session.merge(
|
||||
MedodsAPI(identity=apiKey["identity"], secretKey=apiKey["secretKey"])
|
||||
)
|
||||
db.session.commit()
|
||||
logger.info("Добавлены ключи")
|
||||
return jsonify({"ok": True})
|
||||
# return jsonify({"ok": False}), 400
|
||||
|
||||
|
||||
@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"])
|
||||
@app.route("/settings/requests", methods=["GET", "POST", "PATCH", "DELETE"])
|
||||
def get_requests():
|
||||
requestData = (
|
||||
request.json if request.method in ["POST", "PATCH", "DELETE"] else None
|
||||
)
|
||||
match request.method:
|
||||
case "DELETE":
|
||||
logger.info("Удален запрос")
|
||||
logger.info(requestData)
|
||||
return jsonify({"status": "ok"})
|
||||
case "POST":
|
||||
logger.info("Добавлен новый запрос")
|
||||
logger.info(request.json)
|
||||
logger.info("Добавлен/обновлен запрос")
|
||||
if "id" in requestData:
|
||||
logger.info("Обновлен запрос")
|
||||
try:
|
||||
db.session.execute(
|
||||
db.update(ApiEndpoint)
|
||||
.where(ApiEndpoint.id == requestData["id"])
|
||||
.values(
|
||||
method=requestData.get("method"),
|
||||
title=requestData.get("title"),
|
||||
url_path=requestData.get("url_path"),
|
||||
payload=requestData.get("payload", {}),
|
||||
query_params=requestData.get("query_params", {}),
|
||||
)
|
||||
)
|
||||
db.session.commit()
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка при обновлении запроса: {e}")
|
||||
return jsonify({"status": "ok"})
|
||||
else:
|
||||
logger.info("Добавлен запрос")
|
||||
try:
|
||||
db.session.merge(ApiEndpoint(**requestData))
|
||||
db.session.commit()
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка при добавлении запроса: {e}")
|
||||
return jsonify({"status": "ok"})
|
||||
|
||||
case "PATCH":
|
||||
logger.info("Обновлен запрос")
|
||||
logger.info(request.json)
|
||||
return jsonify({"status": "ok"})
|
||||
logger.info("Выполнен запрос")
|
||||
requestParams = ApiEndpoint.query.filter_by(id=requestData["id"]).first()
|
||||
medodsDB = MedodsAPI.query.first()
|
||||
baseUrl = medodsDB.url
|
||||
response = send_request(
|
||||
requestParams.method,
|
||||
f"{baseUrl}{requestParams.url_path}",
|
||||
requestParams.payload,
|
||||
requestParams.query_params,
|
||||
)
|
||||
exitData = {}
|
||||
try:
|
||||
exitData = response.json()
|
||||
except:
|
||||
exitData = response.text
|
||||
return jsonify(exitData)
|
||||
|
||||
case "GET":
|
||||
logger.info("Получен список запросов")
|
||||
|
||||
requestsDB = ApiEndpoint.query.all()
|
||||
requestsList = [r.toDict() for r in requestsDB]
|
||||
logger.info(requestsList)
|
||||
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": {},
|
||||
},
|
||||
]
|
||||
{
|
||||
"status": "ok",
|
||||
"requests": requestsList,
|
||||
}
|
||||
)
|
||||
|
||||
case _:
|
||||
logger.error("Неверный метод запроса")
|
||||
return jsonify({"status": "error"})
|
||||
logger.error("Неверный метод запроса")
|
||||
return jsonify({"status": "error"}), 405
|
||||
|
||||
|
||||
@app.route("/token", methods=["GET"])
|
||||
def token():
|
||||
return jsonify({"token": generate_token()})
|
||||
@app.route("/settings/vk", methods=["POST"])
|
||||
def settings_vk():
|
||||
requestData = request.json
|
||||
logger.info(requestData)
|
||||
if "id" in requestData:
|
||||
logger.info("Обновлен запрос")
|
||||
try:
|
||||
db.session.execute(
|
||||
db.update(VkAPI)
|
||||
.where(VkAPI.id == requestData["id"])
|
||||
.values(
|
||||
group_id=(
|
||||
int(requestData.get("group_id", 0))
|
||||
if requestData.get("group_id")
|
||||
else 0
|
||||
),
|
||||
access_token=requestData.get("access_token"),
|
||||
base_photo_url=(
|
||||
int(requestData.get("base_photo_url", 0))
|
||||
if requestData.get("base_photo_url")
|
||||
else 0
|
||||
),
|
||||
)
|
||||
)
|
||||
db.session.commit()
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка при обновлении запроса: {e}")
|
||||
return jsonify({"status": "ok"})
|
||||
else:
|
||||
logger.info("Добавлен запрос")
|
||||
try:
|
||||
db.session.merge(VkAPI(**requestData))
|
||||
db.session.commit()
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка при добавлении запроса: {e}")
|
||||
return jsonify({"status": "ok"})
|
||||
|
||||
|
||||
@app.route("/request", methods=["POST"])
|
||||
@@ -128,16 +226,5 @@ def make_request():
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user