From 50844afe07254760a31ca0c7f2aba27ff200584e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=8F=D1=80=D0=BA=D0=B8=D0=B9?= <aoboyarskiy@miem.hse.ru> Date: Sun, 5 Mar 2023 23:20:27 +0300 Subject: [PATCH] new requests added --- flask-app/confs/conf.json | 1 + flask-app/{utils => confs}/conf1.json | 4 +- flask-app/utils/conf.json | 1 - flask-app/utils/onvif_classes.py | 32 ++++++-- flask-app/utils/swagger.yml | 107 +++++++++++++++++++++++--- 5 files changed, 124 insertions(+), 21 deletions(-) create mode 100644 flask-app/confs/conf.json rename flask-app/{utils => confs}/conf1.json (99%) delete mode 100644 flask-app/utils/conf.json diff --git a/flask-app/confs/conf.json b/flask-app/confs/conf.json new file mode 100644 index 0000000..67d4700 --- /dev/null +++ b/flask-app/confs/conf.json @@ -0,0 +1 @@ +{"default": "1", "default_cam": "-1", "ports": {"first": "8001", "last": "8008"}, "remote_controller": {"1": {"1": {"ip": "172.18.191.193", "port": "8000", "streamuri": "rtsp://audi.proxy/studio/4"}, "2": {"ip": "172.18.191.194", "port": "2000", "streamuri": "rtsp://audi.proxy/studio/5"}, "3": {"ip": "172.18.191.195", "port": "2000", "streamuri": "rtsp://audi.proxy/studio/6"}, "4": {"ip": "172.18.191.196", "port": "80", "streamuri": "rtsp://audi.proxy/studio/7"}, "5": {"ip": "172.18.191.197", "port": "8080", "streamuri": "rtsp://audi.proxy/505/3"}}, "2": {"1": {"ip": "172.18.191.93", "port": "9000", "streamuri": "rtsp://audi.proxy/504/3"}, "2": {"ip": "172.18.191.94", "port": "80", "streamuri": "rtsp://audi.proxy/504/4"}, "3": {"ip": "172.18.191.95", "port": "80", "streamuri": "rtsp://audi.proxy/504/5"}, "4": {"ip": "172.18.191.96", "port": "80", "streamuri": "rtsp://audi.proxy/504/6"}, "5": {"ip": "172.18.191.53", "port": "80", "streamuri": "rtsp://audi.proxy/305/3"}, "6": {"ip": "172.18.191.54", "port": "80", "streamuri": "rtsp://audi.proxy/305/4"}, "7": {"ip": "172.18.191.55", "port": "80", "streamuri": "rtsp://audi.proxy/305/5"}}, "3": {"2": {"ip": "172.18.191.104", "port": "80", "streamuri": "rtsp://audi.proxy/506/4"}, "3": {"ip": "172.18.191.105", "port": "80", "streamuri": "rtsp://audi.proxy/506/5"}, "4": {"ip": "172.18.191.106", "port": "80", "streamuri": "rtsp://audi.proxy/506/6"}, "5": {"ip": "172.18.191.63", "port": "80", "streamuri": "rtsp://audi.proxy/306/3"}, "6": {"ip": "172.18.191.64", "port": "80", "streamuri": "rtsp://audi.proxy/306/4"}, "7": {"ip": "172.18.191.65", "port": "80", "streamuri": "rtsp://audi.proxy/306/5"}}, "4": {"1": {"ip": "172.18.191.83", "port": "80", "streamuri": "rtsp://audi.proxy/308/3"}, "2": {"ip": "172.18.191.84", "port": "80", "streamuri": "rtsp://audi.proxy/308/4"}, "3": {"ip": "172.18.191.85", "port": "80", "streamuri": "rtsp://audi.proxy/308/5"}, "4": {"ip": "172.18.191.86", "port": "80", "streamuri": "rtsp://audi.proxy/308/6"}, "5": {"ip": "172.18.191.73", "port": "80", "streamuri": "rtsp://audi.proxy/307/3"}, "6": {"ip": "172.18.191.74", "port": "80", "streamuri": "rtsp://audi.proxy/307/4"}, "7": {"ip": "172.18.191.75", "port": "80", "streamuri": "rtsp://audi.proxy/307/5"}}, "5": {"1": {"ip": "172.18.191.113", "port": "80", "streamuri": "rtsp://audi.proxy/00A/3"}, "2": {"ip": "172.18.191.114", "port": "80", "streamuri": "rtsp://audi.proxy/00A/4"}, "3": {"ip": "172.18.191.115", "port": "80", "streamuri": "rtsp://audi.proxy/00A/5"}, "4": {"ip": "172.18.191.116", "port": "80", "streamuri": "rtsp://audi.proxy/00A/6"}, "5": {"ip": "172.18.191.117", "port": "80", "streamuri": "rtsp://audi.proxy/00A/7"}, "6": {"ip": "172.18.191.118", "port": "80", "streamuri": "rtsp://audi.proxy/00A/8"}}, "6": {"1": {"ip": "172.18.191.123", "port": "9000", "streamuri": "rtsp://audi.proxy/00A/3"}, "2": {"ip": "172.18.191.124", "port": "8899", "streamuri": "rtsp://audi.proxy/00A/4"}, "3": {"ip": "172.18.191.125", "port": "80", "streamuri": "rtsp://audi.proxy/00A/5"}}, "7": {}, "8": {"2": {"ip": "172.18.191.184", "port": "80", "streamuri": "rtsp://audi.proxy/00A/4"}, "3": {"ip": "172.18.191.185", "port": "2000", "streamuri": "rtsp://audi.proxy/00A/5"}}}, "auditories": {"305": {"51": {"ip": "172.18.191.51", "port": "80", "streamuri": "rtsp://audi.proxy/305/1"}, "52": {"ip": "172.18.191.52", "port": "8999", "streamuri": "rtsp://audi.proxy/305/2"}, "53": {"ip": "172.18.191.53", "port": "80", "streamuri": "rtsp://audi.proxy/305/3"}, "54": {"ip": "172.18.191.54", "port": "80", "streamuri": "rtsp://audi.proxy/305/4"}, "55": {"ip": "172.18.191.55", "port": "80", "streamuri": "rtsp://audi.proxy/305/5"}}, "306": {"61": {"ip": "172.18.191.61", "port": "80", "streamuri": "rtsp://audi.proxy/306/1"}, "62": {"ip": "172.18.191.62", "port": "80", "streamuri": "rtsp://audi.proxy/306/2"}, "63": {"ip": "172.18.191.63", "port": "80", "streamuri": "rtsp://audi.proxy/306/3"}, "64": {"ip": "172.18.191.64", "port": "80", "streamuri": "rtsp://audi.proxy/306/4"}, "65": {"ip": "172.18.191.65", "port": "80", "streamuri": "rtsp://audi.proxy/306/5"}}, "307": {"71": {"ip": "172.18.191.71", "port": "80", "streamuri": "rtsp://audi.proxy/307/1"}, "72": {"ip": "172.18.191.72", "port": "80", "streamuri": "rtsp://audi.proxy/307/2"}, "73": {"ip": "172.18.191.73", "port": "80", "streamuri": "rtsp://audi.proxy/307/3"}, "74": {"ip": "172.18.191.74", "port": "80", "streamuri": "rtsp://audi.proxy/307/4"}, "75": {"ip": "172.18.191.75", "port": "80", "streamuri": "rtsp://audi.proxy/307/5"}}, "308": {"81": {"ip": "172.18.191.81", "port": "80", "streamuri": "rtsp://audi.proxy/308/1"}, "83": {"ip": "172.18.191.83", "port": "80", "streamuri": "rtsp://audi.proxy/308/3"}, "84": {"ip": "172.18.191.84", "port": "80", "streamuri": "rtsp://audi.proxy/308/4"}, "85": {"ip": "172.18.191.85", "port": "80", "streamuri": "rtsp://audi.proxy/308/5"}, "86": {"ip": "172.18.191.86", "port": "80", "streamuri": "rtsp://audi.proxy/308/6"}}, "435": {"15": {"ip": "172.18.212.15", "port": "80", "streamuri": "rtsp://audi.proxy/435/4"}, "16": {"ip": "172.18.212.16", "port": "8080", "streamuri": "rtsp://audi.proxy/435/5"}, "212": {"ip": "172.18.190.212", "port": "8899", "streamuri": "rtsp://audi.proxy/435/8"}}, "504": {"91": {"ip": "172.18.191.91", "port": "80", "streamuri": "rtsp://audi.proxy/504/1"}, "92": {"ip": "172.18.191.92", "port": "80", "streamuri": "rtsp://audi.proxy/504/2"}, "93": {"ip": "172.18.191.93", "port": "9000", "streamuri": "rtsp://audi.proxy/504/3"}, "94": {"ip": "172.18.191.94", "port": "80", "streamuri": "rtsp://audi.proxy/504/4"}, "95": {"ip": "172.18.191.95", "port": "80", "streamuri": "rtsp://audi.proxy/504/5"}, "96": {"ip": "172.18.191.96", "port": "80", "streamuri": "rtsp://audi.proxy/504/6"}}, "505": {"137": {"ip": "172.18.191.137", "port": "8899", "streamuri": "rtsp://audi.proxy/505/2"}, "192": {"ip": "172.18.191.192", "port": "8000", "streamuri": "rtsp://audi.proxy/studio/3"}, "193": {"ip": "172.18.191.193", "port": "8000", "streamuri": "rtsp://audi.proxy/studio/4"}, "194": {"ip": "172.18.191.194", "port": "2000", "streamuri": "rtsp://audi.proxy/studio/5"}, "195": {"ip": "172.18.191.195", "port": "2000", "streamuri": "rtsp://audi.proxy/studio/6"}, "196": {"ip": "172.18.191.196", "port": "80", "streamuri": "rtsp://audi.proxy/studio/7"}, "200": {"ip": "172.18.191.200", "port": "8899", "streamuri": "rtsp://audi.proxy/studio/8"}, "201": {"ip": "172.18.191.201", "port": "8899", "streamuri": "rtsp://audi.proxy/505/8"}}, "506": {"101": {"ip": "172.18.191.101", "port": "80", "streamuri": "rtsp://audi.proxy/506/1"}, "103": {"ip": "172.18.191.103", "port": "80", "streamuri": "rtsp://audi.proxy/506/3"}, "104": {"ip": "172.18.191.104", "port": "9000", "streamuri": "rtsp://audi.proxy/506/4"}, "105": {"ip": "172.18.191.105", "port": "80", "streamuri": "rtsp://audi.proxy/506/5"}, "106": {"ip": "172.18.191.106", "port": "80", "streamuri": "rtsp://audi.proxy/506/6"}}, "505a": {"197": {"ip": "172.18.191.197", "port": "8080", "streamuri": "rtsp://audi.proxy/505/3"}}, "00A": {"112": {"ip": "172.18.191.112", "port": "80", "streamuri": "rtsp://audi.proxy/00A/2"}, "113": {"ip": "172.18.191.113", "port": "80", "streamuri": "rtsp://audi.proxy/00A/3"}, "114": {"ip": "172.18.191.114", "port": "80", "streamuri": "rtsp://audi.proxy/00A/4"}, "115": {"ip": "172.18.191.115", "port": "80", "streamuri": "rtsp://audi.proxy/00A/5"}, "116": {"ip": "172.18.191.116", "port": "80", "streamuri": "rtsp://audi.proxy/00A/6"}, "117": {"ip": "172.18.191.117", "port": "80", "streamuri": "rtsp://audi.proxy/00A/7"}, "118": {"ip": "172.18.191.118", "port": "80", "streamuri": "rtsp://audi.proxy/00A/8"}}, "00B": {"122": {"ip": "172.18.191.122", "port": "80", "streamuri": "rtsp://audi.proxy/00A/2"}, "123": {"ip": "172.18.191.123", "port": "9000", "streamuri": "rtsp://audi.proxy/00A/3"}, "124": {"ip": "172.18.191.124", "port": "8899", "streamuri": "rtsp://audi.proxy/00A/4"}, "125": {"ip": "172.18.191.125", "port": "80", "streamuri": "rtsp://audi.proxy/00A/5"}}}} \ No newline at end of file diff --git a/flask-app/utils/conf1.json b/flask-app/confs/conf1.json similarity index 99% rename from flask-app/utils/conf1.json rename to flask-app/confs/conf1.json index 8d131cb..b59368e 100644 --- a/flask-app/utils/conf1.json +++ b/flask-app/confs/conf1.json @@ -2,8 +2,8 @@ "default": "1", "default_cam": "-1", "ports": { - "f": "9001", - "l": "9028" + "first": "9001", + "last": "9028" }, "remote_controller": { "1": { diff --git a/flask-app/utils/conf.json b/flask-app/utils/conf.json deleted file mode 100644 index 9fbdf13..0000000 --- a/flask-app/utils/conf.json +++ /dev/null @@ -1 +0,0 @@ -{"default": "8", "default_cam": "-1", "ports": {"f": "8001", "l": "8008"}, "remote_controller": {"1": {"1": {"ip": "172.18.191.193", "port": "8000", "streamuri": "rtsp://audi.proxy/studio/4"}, "2": {"ip": "172.18.191.194", "port": "2000", "streamuri": "rtsp://audi.proxy/studio/5"}, "3": {"ip": "172.18.191.195", "port": "2000", "streamuri": "rtsp://audi.proxy/studio/6"}, "4": {"ip": "172.18.191.196", "port": "80", "streamuri": "rtsp://audi.proxy/studio/7"}, "5": {"ip": "172.18.191.197", "port": "8080", "streamuri": "rtsp://audi.proxy/505/3"}}, "2": {"1": {"ip": "172.18.191.93", "port": "9000", "streamuri": "rtsp://audi.proxy/504/3"}, "2": {"ip": "172.18.191.94", "port": "80", "streamuri": "rtsp://audi.proxy/504/4"}, "3": {"ip": "172.18.191.95", "port": "80", "streamuri": "rtsp://audi.proxy/504/5"}, "4": {"ip": "172.18.191.96", "port": "80", "streamuri": "rtsp://audi.proxy/504/6"}, "5": {"ip": "172.18.191.53", "port": "80", "streamuri": "rtsp://audi.proxy/305/3"}, "6": {"ip": "172.18.191.54", "port": "80", "streamuri": "rtsp://audi.proxy/305/4"}, "7": {"ip": "172.18.191.55", "port": "80", "streamuri": "rtsp://audi.proxy/305/5"}}, "3": {"2": {"ip": "172.18.191.104", "port": "80", "streamuri": "rtsp://audi.proxy/506/4"}, "3": {"ip": "172.18.191.105", "port": "80", "streamuri": "rtsp://audi.proxy/506/5"}, "4": {"ip": "172.18.191.106", "port": "80", "streamuri": "rtsp://audi.proxy/506/6"}, "5": {"ip": "172.18.191.63", "port": "80", "streamuri": "rtsp://audi.proxy/306/3"}, "6": {"ip": "172.18.191.64", "port": "80", "streamuri": "rtsp://audi.proxy/306/4"}, "7": {"ip": "172.18.191.65", "port": "80", "streamuri": "rtsp://audi.proxy/306/5"}}, "4": {"1": {"ip": "172.18.191.83", "port": "80", "streamuri": "rtsp://audi.proxy/308/3"}, "2": {"ip": "172.18.191.84", "port": "80", "streamuri": "rtsp://audi.proxy/308/4"}, "3": {"ip": "172.18.191.85", "port": "80", "streamuri": "rtsp://audi.proxy/308/5"}, "4": {"ip": "172.18.191.86", "port": "80", "streamuri": "rtsp://audi.proxy/308/6"}, "5": {"ip": "172.18.191.73", "port": "80", "streamuri": "rtsp://audi.proxy/307/3"}, "6": {"ip": "172.18.191.74", "port": "80", "streamuri": "rtsp://audi.proxy/307/4"}, "7": {"ip": "172.18.191.75", "port": "80", "streamuri": "rtsp://audi.proxy/307/5"}}, "5": {"1": {"ip": "172.18.191.113", "port": "80", "streamuri": "rtsp://audi.proxy/00A/3"}, "2": {"ip": "172.18.191.114", "port": "80", "streamuri": "rtsp://audi.proxy/00A/4"}, "3": {"ip": "172.18.191.115", "port": "80", "streamuri": "rtsp://audi.proxy/00A/5"}, "4": {"ip": "172.18.191.116", "port": "80", "streamuri": "rtsp://audi.proxy/00A/6"}, "5": {"ip": "172.18.191.117", "port": "80", "streamuri": "rtsp://audi.proxy/00A/7"}, "6": {"ip": "172.18.191.118", "port": "80", "streamuri": "rtsp://audi.proxy/00A/8"}}, "6": {"1": {"ip": "172.18.191.123", "port": "9000", "streamuri": "rtsp://audi.proxy/00A/3"}, "2": {"ip": "172.18.191.124", "port": "8899", "streamuri": "rtsp://audi.proxy/00A/4"}, "3": {"ip": "172.18.191.125", "port": "80", "streamuri": "rtsp://audi.proxy/00A/5"}}, "7": {}, "8": {"2": {"ip": "172.18.191.184", "port": "80", "streamuri": "rtsp://audi.proxy/00A/4"}, "3": {"ip": "172.18.191.185", "port": "2000", "streamuri": "rtsp://audi.proxy/00A/5"}}}, "auditories": {"305": {"51": {"ip": "172.18.191.51", "port": "80", "streamuri": "rtsp://audi.proxy/305/1"}, "52": {"ip": "172.18.191.52", "port": "8999", "streamuri": "rtsp://audi.proxy/305/2"}, "53": {"ip": "172.18.191.53", "port": "80", "streamuri": "rtsp://audi.proxy/305/3"}, "54": {"ip": "172.18.191.54", "port": "80", "streamuri": "rtsp://audi.proxy/305/4"}, "55": {"ip": "172.18.191.55", "port": "80", "streamuri": "rtsp://audi.proxy/305/5"}}, "306": {"61": {"ip": "172.18.191.61", "port": "80", "streamuri": "rtsp://audi.proxy/306/1"}, "62": {"ip": "172.18.191.62", "port": "80", "streamuri": "rtsp://audi.proxy/306/2"}, "63": {"ip": "172.18.191.63", "port": "80", "streamuri": "rtsp://audi.proxy/306/3"}, "64": {"ip": "172.18.191.64", "port": "80", "streamuri": "rtsp://audi.proxy/306/4"}, "65": {"ip": "172.18.191.65", "port": "80", "streamuri": "rtsp://audi.proxy/306/5"}}, "307": {"71": {"ip": "172.18.191.71", "port": "80", "streamuri": "rtsp://audi.proxy/307/1"}, "72": {"ip": "172.18.191.72", "port": "80", "streamuri": "rtsp://audi.proxy/307/2"}, "73": {"ip": "172.18.191.73", "port": "80", "streamuri": "rtsp://audi.proxy/307/3"}, "74": {"ip": "172.18.191.74", "port": "80", "streamuri": "rtsp://audi.proxy/307/4"}, "75": {"ip": "172.18.191.75", "port": "80", "streamuri": "rtsp://audi.proxy/307/5"}}, "308": {"81": {"ip": "172.18.191.81", "port": "80", "streamuri": "rtsp://audi.proxy/308/1"}, "83": {"ip": "172.18.191.83", "port": "80", "streamuri": "rtsp://audi.proxy/308/3"}, "84": {"ip": "172.18.191.84", "port": "80", "streamuri": "rtsp://audi.proxy/308/4"}, "85": {"ip": "172.18.191.85", "port": "80", "streamuri": "rtsp://audi.proxy/308/5"}, "86": {"ip": "172.18.191.86", "port": "80", "streamuri": "rtsp://audi.proxy/308/6"}}, "435": {"15": {"ip": "172.18.212.15", "port": "80", "streamuri": "rtsp://audi.proxy/435/4"}, "16": {"ip": "172.18.212.16", "port": "8080", "streamuri": "rtsp://audi.proxy/435/5"}, "212": {"ip": "172.18.190.212", "port": "8899", "streamuri": "rtsp://audi.proxy/435/8"}}, "504": {"91": {"ip": "172.18.191.91", "port": "80", "streamuri": "rtsp://audi.proxy/504/1"}, "92": {"ip": "172.18.191.92", "port": "80", "streamuri": "rtsp://audi.proxy/504/2"}, "93": {"ip": "172.18.191.93", "port": "9000", "streamuri": "rtsp://audi.proxy/504/3"}, "94": {"ip": "172.18.191.94", "port": "80", "streamuri": "rtsp://audi.proxy/504/4"}, "95": {"ip": "172.18.191.95", "port": "80", "streamuri": "rtsp://audi.proxy/504/5"}, "96": {"ip": "172.18.191.96", "port": "80", "streamuri": "rtsp://audi.proxy/504/6"}}, "505": {"137": {"ip": "172.18.191.137", "port": "8899", "streamuri": "rtsp://audi.proxy/505/2"}, "192": {"ip": "172.18.191.192", "port": "8000", "streamuri": "rtsp://audi.proxy/studio/3"}, "193": {"ip": "172.18.191.193", "port": "8000", "streamuri": "rtsp://audi.proxy/studio/4"}, "194": {"ip": "172.18.191.194", "port": "2000", "streamuri": "rtsp://audi.proxy/studio/5"}, "195": {"ip": "172.18.191.195", "port": "2000", "streamuri": "rtsp://audi.proxy/studio/6"}, "196": {"ip": "172.18.191.196", "port": "80", "streamuri": "rtsp://audi.proxy/studio/7"}, "200": {"ip": "172.18.191.200", "port": "8899", "streamuri": "rtsp://audi.proxy/studio/8"}, "201": {"ip": "172.18.191.201", "port": "8899", "streamuri": "rtsp://audi.proxy/505/8"}}, "506": {"101": {"ip": "172.18.191.101", "port": "80", "streamuri": "rtsp://audi.proxy/506/1"}, "103": {"ip": "172.18.191.103", "port": "80", "streamuri": "rtsp://audi.proxy/506/3"}, "104": {"ip": "172.18.191.104", "port": "9000", "streamuri": "rtsp://audi.proxy/506/4"}, "105": {"ip": "172.18.191.105", "port": "80", "streamuri": "rtsp://audi.proxy/506/5"}, "106": {"ip": "172.18.191.106", "port": "80", "streamuri": "rtsp://audi.proxy/506/6"}}, "505a": {"197": {"ip": "172.18.191.197", "port": "8080", "streamuri": "rtsp://audi.proxy/505/3"}}, "00A": {"112": {"ip": "172.18.191.112", "port": "80", "streamuri": "rtsp://audi.proxy/00A/2"}, "113": {"ip": "172.18.191.113", "port": "80", "streamuri": "rtsp://audi.proxy/00A/3"}, "114": {"ip": "172.18.191.114", "port": "80", "streamuri": "rtsp://audi.proxy/00A/4"}, "115": {"ip": "172.18.191.115", "port": "80", "streamuri": "rtsp://audi.proxy/00A/5"}, "116": {"ip": "172.18.191.116", "port": "80", "streamuri": "rtsp://audi.proxy/00A/6"}, "117": {"ip": "172.18.191.117", "port": "80", "streamuri": "rtsp://audi.proxy/00A/7"}, "118": {"ip": "172.18.191.118", "port": "80", "streamuri": "rtsp://audi.proxy/00A/8"}}, "00B": {"122": {"ip": "172.18.191.122", "port": "80", "streamuri": "rtsp://audi.proxy/00A/2"}, "123": {"ip": "172.18.191.123", "port": "9000", "streamuri": "rtsp://audi.proxy/00A/3"}, "124": {"ip": "172.18.191.124", "port": "8899", "streamuri": "rtsp://audi.proxy/00A/4"}, "125": {"ip": "172.18.191.125", "port": "80", "streamuri": "rtsp://audi.proxy/00A/5"}}}} \ No newline at end of file diff --git a/flask-app/utils/onvif_classes.py b/flask-app/utils/onvif_classes.py index 1aa4045..f284f16 100644 --- a/flask-app/utils/onvif_classes.py +++ b/flask-app/utils/onvif_classes.py @@ -136,6 +136,16 @@ def replace_token(response, octet): def return_soap(response): return Response(response, mimetype='application/soap+xml') +def return_ports_and_presets(input): + output = { + "ports": input["ports"] + } + presets = {} + for i in list(input["remote_controller"].keys()): + presets[i] = list(input["remote_controller"][i].keys()) + output["presets"] = presets + return output + HTTP_METHODS = ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'] #cameras = json.load(open(os.path.join(os.path.dirname(__file__), 'conf.json'))) @@ -156,15 +166,26 @@ class Proccesser(): with open(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'image', path), "rb") as f: return Response(f.read(), mimetype="image/jpeg") + @self.app.route("/inconf/all", methods=HTTP_METHODS) + def return_all_conf_presets(): + output = {} + confs_directory = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "confs") + for root, dirs, files in os.walk(os.path.abspath(confs_directory)): + for file in files: + output[file] = return_ports_and_presets(json.load(open(os.path.join(root, file)))) + return jsonify(output) + + @self.app.route("/inconf", methods=HTTP_METHODS) + def return_this_conf_presets(): + return jsonify(return_ports_and_presets(self.cameras)) + @self.app.route("/preset/total", methods=HTTP_METHODS) @self.app.route("/preset/total/<preset>", methods=HTTP_METHODS) def return_total(preset = None): if preset == None: - return Response(str(len(list(self.cameras["remote_controller"].keys()))).encode(), - status=200) + return jsonify({"number": len(list(self.cameras["remote_controller"].keys()))}) else: - return Response(str(len(list(self.cameras["remote_controller"][preset].keys()))).encode(), - status=200) + return jsonify({"number": len(list(self.cameras["remote_controller"][preset].keys()))}) @self.app.route("/ports", methods=HTTP_METHODS) def return_ports(): @@ -178,8 +199,7 @@ class Proccesser(): self.cameras["default"] = preset with open(self.conf_path, 'w') as j: json.dump(self.cameras, j) - return Response(str(len(list(self.cameras["remote_controller"][self.cameras["default"]].keys()))).encode(), - status = 200) + return jsonify({"number": len(list(self.cameras["remote_controller"][self.cameras["default"]].keys()))}) @self.app.route("/update", methods=HTTP_METHODS) def update_instance(): self.cameras = json.load(open(self.conf_path)) diff --git a/flask-app/utils/swagger.yml b/flask-app/utils/swagger.yml index d0307e8..eb3b3a7 100644 --- a/flask-app/utils/swagger.yml +++ b/flask-app/utils/swagger.yml @@ -7,7 +7,7 @@ tags: - name: "Получение технической информации" description: "Получение технической информации, РЅСѓР¶РЅРѕР№ для работы пультов" - name: "Настройка" - description: "Рзменение настроек ONVOF-Proxy" + description: "Рзменение настроек ONVIF-Proxy" schemes: - "http" paths: @@ -20,10 +20,13 @@ paths: produces: - "application/json" responses: - "200": - description: "Пресет изменен успешно, возвращено число камер РІ пресете" - "400": - description: "Нет такого пресета" + 200: + description: "Словарь РёР· РѕРґРЅРѕРіРѕ значения" + schema: + type: "object" + properties: + number: + type: "integer" /ports: get: tags: @@ -33,13 +36,11 @@ paths: - "application/json" responses: 200: - description: "Словарь РёР· РґРІСѓС… значений" + description: "Словарь РёР· РѕРґРЅРѕРіРѕ значения" schema: type: "object" properties: - f: - type: "integer" - l: + number: type: "integer" /preset/total: get: @@ -50,10 +51,92 @@ paths: produces: - "text/plain" responses: - "200": - description: "Возвращено число пресетов" + 200: + description: "Словарь РёР· РѕРґРЅРѕРіРѕ значения" schema: - type: "integer" + type: "object" + properties: + number: + type: "integer" + /inconf: + get: + tags: + - "Получение технической информации" + summary: "Получение разбивки портов Рё занесенных камер РІ этом конфиге" + produces: + - "application/json" + responses: + 200: + description: "Словарь РёР· РґРІСѓС… словарей: СЃ портами Рё СЃ занесенными камерами" + schema: + type: "object" + properties: + ports: + type: "object" + properties: + first: + type: "integer" + last: + type: "integer" + presets: + type: "object" + properties: + 1: + type: "array" + example: ["1","2","5"] + 2: + type: "array" + example: [ "1","3","4" ] + /inconf/all: + get: + tags: + - "Получение технической информации" + summary: "Получение разбивки портов Рё занесенных камер РІРѕ всех конфигах" + produces: + - "application/json" + responses: + 200: + description: "Словарь РёР· словарей" + type: "object" + properties: + conf_name1: + type: "object" + properties: + ports: + type: "object" + properties: + first: + type: "integer" + last: + type: "integer" + presets: + type: "object" + properties: + 1: + type: "array" + example: [ "1","2","5" ] + 2: + type: "array" + example: [ "1","3","4" ] + conf_name2: + type: "object" + properties: + ports: + type: "object" + properties: + first: + type: "integer" + last: + type: "integer" + presets: + type: "object" + properties: + 1: + type: "array" + example: [ "1","2","5" ] + 2: + type: "array" + example: [ "1","3","4" ] /preset/total/<preset>: get: tags: -- GitLab