v0.5.4: fix 500 на массив + валидация serviceId (int>0)

This commit is contained in:
2026-08-02 06:23:08 +04:00
parent 1f03f66e50
commit e368b18bde
2 changed files with 10 additions and 1 deletions
+1 -1
View File
@@ -80,7 +80,7 @@ SERVICES = _DF["SERVICES"]
OPS_INDEX = _DF["OPS_INDEX"] OPS_INDEX = _DF["OPS_INDEX"]
DELAY = float(os.getenv("MOCK_OP_DELAY", "0.1")) DELAY = float(os.getenv("MOCK_OP_DELAY", "0.1"))
VERSION = "0.5.3" VERSION = "0.5.4"
def get_services(stand_id): def get_services(stand_id):
+9
View File
@@ -72,6 +72,11 @@ def create_instance():
на случай если заголовок не дойдёт. на случай если заголовок не дойдёт.
""" """
body = request.get_json(silent=True) or {} body = request.get_json(silent=True) or {}
# ⛔ body должен быть dict, не массив и не примитив
if not isinstance(body, dict):
return jsonify({"error": "request body must be a JSON object"}), 400
service_id = body.get("serviceId") service_id = body.get("serviceId")
display_name = body.get("displayName", "unnamed") display_name = body.get("displayName", "unnamed")
@@ -79,6 +84,10 @@ def create_instance():
if service_id is None: if service_id is None:
return jsonify({"error": "serviceId is required"}), 400 return jsonify({"error": "serviceId is required"}), 400
# Валидация: serviceId должен быть целым положительным числом
if not isinstance(service_id, int) or isinstance(service_id, bool) or service_id <= 0:
return jsonify({"error": "serviceId must be a positive integer"}), 400
# Проверка что сервис существует в конфиге # Проверка что сервис существует в конфиге
svc_def = SERVICES.get(service_id) svc_def = SERVICES.get(service_id)
if not svc_def: if not svc_def: