now returning bad request when wrong parameters are supplied for room / recorder creation
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
from flask import Blueprint, abort
|
from flask import Blueprint, abort
|
||||||
from flask_restx import Api, Namespace
|
from flask_restx import Api, Namespace
|
||||||
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
api_authorizations = {
|
api_authorizations = {
|
||||||
'apikey': {
|
'apikey': {
|
||||||
@@ -73,6 +74,19 @@ from .virtual_command_api import *
|
|||||||
|
|
||||||
# from .group_api import *
|
# from .group_api import *
|
||||||
|
|
||||||
|
"""
|
||||||
|
@api_v1.errorhandler(InternalServerError)
|
||||||
|
def handle_500(e):
|
||||||
|
original = getattr(e, "original_exception", None)
|
||||||
|
|
||||||
|
if original is None:
|
||||||
|
# direct 500 error, such as abort(500)
|
||||||
|
api_v1.abort(500)
|
||||||
|
|
||||||
|
# wrapped unhandled error
|
||||||
|
#return render_template("500_unhandled.html", e=original), 500
|
||||||
|
api_v1.abort(500)
|
||||||
|
"""
|
||||||
|
|
||||||
@api_bp.route('/<path:path>')
|
@api_bp.route('/<path:path>')
|
||||||
def catch_all_api(path):
|
def catch_all_api(path):
|
||||||
|
|||||||
@@ -2,19 +2,21 @@
|
|||||||
"""
|
"""
|
||||||
This module provides functions related to recorders through the API.
|
This module provides functions related to recorders through the API.
|
||||||
"""
|
"""
|
||||||
|
import logging
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
from flask_jwt_extended import jwt_required
|
from flask_jwt_extended import jwt_required
|
||||||
from flask_restx import fields, Resource, inputs
|
from flask_restx import fields, Resource, inputs
|
||||||
|
|
||||||
from backend import db, app
|
from backend import db, app, LrcException
|
||||||
from backend.api import api_recorder
|
from backend.api import api_recorder
|
||||||
from backend.api.models import recorder_model, recorder_model_model, recorder_command_model
|
from backend.api.models import recorder_model, recorder_model_model, recorder_command_model
|
||||||
from backend.models.recorder_model import Recorder, RecorderModel, RecorderCommand
|
from backend.models.recorder_model import Recorder, RecorderModel, RecorderCommand
|
||||||
from backend.models.room_model import Room
|
from backend.models.room_model import Room
|
||||||
import backend.recorder_adapters as r_a
|
import backend.recorder_adapters as r_a
|
||||||
|
|
||||||
|
logger = logging.getLogger("lrc.api.recorder")
|
||||||
|
|
||||||
# ==
|
# ==
|
||||||
|
|
||||||
@@ -116,10 +118,14 @@ class RecorderList(Resource):
|
|||||||
else:
|
else:
|
||||||
return "specified recorder model (id: {}) does not exist!".format(
|
return "specified recorder model (id: {}) does not exist!".format(
|
||||||
api_recorder.payload["recorder_model_id"]), 404
|
api_recorder.payload["recorder_model_id"]), 404
|
||||||
recorder = Recorder(**api_recorder.payload)
|
try:
|
||||||
db.session.add(recorder)
|
recorder = Recorder(**api_recorder.payload)
|
||||||
db.session.commit()
|
db.session.add(recorder)
|
||||||
return recorder
|
db.session.commit()
|
||||||
|
return recorder
|
||||||
|
except LrcException as e:
|
||||||
|
logger.error(e)
|
||||||
|
return api_recorder.abort(400, str(e))
|
||||||
|
|
||||||
|
|
||||||
@api_recorder.route('/model/<int:id>')
|
@api_recorder.route('/model/<int:id>')
|
||||||
|
|||||||
@@ -5,15 +5,20 @@ For example: listing of available auth providers or registration of users.
|
|||||||
|
|
||||||
Login through API does not start a new session, but instead returns JWT.
|
Login through API does not start a new session, but instead returns JWT.
|
||||||
"""
|
"""
|
||||||
|
import logging
|
||||||
|
|
||||||
from flask_jwt_extended import jwt_required
|
from flask_jwt_extended import jwt_required
|
||||||
from flask_restx import fields, Resource
|
from flask_restx import fields, Resource
|
||||||
from sqlalchemy import exc
|
from sqlalchemy import exc
|
||||||
|
|
||||||
from backend import db, app
|
from backend import db, app, LrcException
|
||||||
from backend.api import api_room
|
from backend.api import api_room
|
||||||
from backend.models.room_model import Room
|
from backend.models.room_model import Room
|
||||||
from backend.models.recorder_model import Recorder
|
from backend.models.recorder_model import Recorder
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger("lrc.api.room")
|
||||||
|
|
||||||
room_model = api_room.model('Room', {
|
room_model = api_room.model('Room', {
|
||||||
'id': fields.String(required=False, description='The room\'s identifier'),
|
'id': fields.String(required=False, description='The room\'s identifier'),
|
||||||
'created_at': fields.DateTime(required=False, description='Creation date of the room info'),
|
'created_at': fields.DateTime(required=False, description='Creation date of the room info'),
|
||||||
@@ -80,8 +85,8 @@ class RoomResource(Resource):
|
|||||||
room.recorder = api_room.payload["recorder"]
|
room.recorder = api_room.payload["recorder"]
|
||||||
else:
|
else:
|
||||||
num_rows_matched = Room.query.filter_by(id=id).update(api_room.payload)
|
num_rows_matched = Room.query.filter_by(id=id).update(api_room.payload)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return "ok"
|
return "ok"
|
||||||
api_room.abort(404)
|
api_room.abort(404)
|
||||||
|
|
||||||
|
|
||||||
@@ -112,11 +117,15 @@ class RoomList(Resource):
|
|||||||
else:
|
else:
|
||||||
return "specified recorder (id: {}) does not exist!".format(api_room.payload["recorder_id"]), 404
|
return "specified recorder (id: {}) does not exist!".format(api_room.payload["recorder_id"]), 404
|
||||||
del api_room.payload["recorder_id"]
|
del api_room.payload["recorder_id"]
|
||||||
room = Room(**api_room.payload)
|
|
||||||
db.session.add(room)
|
|
||||||
try:
|
try:
|
||||||
db.session.commit()
|
room = Room(**api_room.payload)
|
||||||
return room
|
db.session.add(room)
|
||||||
except exc.IntegrityError as e:
|
try:
|
||||||
db.session.rollback()
|
db.session.commit()
|
||||||
return str(e.detail), 400
|
return room
|
||||||
|
except exc.IntegrityError as e:
|
||||||
|
db.session.rollback()
|
||||||
|
return str(e.detail), 400
|
||||||
|
except LrcException as e:
|
||||||
|
logger.error(e)
|
||||||
|
return api_room.abort(400, str(e))
|
||||||
|
|||||||
BIN
backend/app.db_debug
Normal file
BIN
backend/app.db_debug
Normal file
Binary file not shown.
BIN
backend/app.db_old
Normal file
BIN
backend/app.db_old
Normal file
Binary file not shown.
33
backend/cert.pem
Normal file
33
backend/cert.pem
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIFsDCCA5igAwIBAgIJAPBUPeRmjeGxMA0GCSqGSIb3DQEBCwUAMG0xCzAJBgNV
|
||||||
|
BAYTAkRFMQswCQYDVQQIDAJCVzELMAkGA1UEBwwCS0ExDDAKBgNVBAoMA0tJVDEM
|
||||||
|
MAoGA1UECwwDQklCMSgwJgYDVQQDDB91YmthcHMxNTQudWJrYS51bmkta2FybHNy
|
||||||
|
dWhlLmRlMB4XDTE4MDIwOTEyMTAwOFoXDTE5MDIwOTEyMTAwOFowbTELMAkGA1UE
|
||||||
|
BhMCREUxCzAJBgNVBAgMAkJXMQswCQYDVQQHDAJLQTEMMAoGA1UECgwDS0lUMQww
|
||||||
|
CgYDVQQLDANCSUIxKDAmBgNVBAMMH3Via2FwczE1NC51YmthLnVuaS1rYXJsc3J1
|
||||||
|
aGUuZGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDMIX23STpm+2fC
|
||||||
|
zX1SoafxhtDwBbHLc7bhhPqiHV2wp92sj8GVr4TRNPtdxMaAtA6PYJJ+rOZggNi5
|
||||||
|
8ugkQLa9omRRn5Q3V3IQxvUaD5qo0OXI/qHP2xzhBZBzaFwQWfl77kZNibNTYyY0
|
||||||
|
p9Yueg/fMoO7Xeous6DG2cQ57KfNC7vPzTre5f7wMgMgUHf+ziGrYfP8fMIEP2j7
|
||||||
|
u2ULaVgrLhgFrVySJBYDfrBoSU5xIy0U26gcKgAfyX441ybRRRtPThmvW9/MIoH+
|
||||||
|
zRRQAv3SnnnlLH9LAWKEx7OfxjS5Yts8GwJtOJ+TNwO7bIX7TE1+1mZP4hGQHk88
|
||||||
|
JNO/kHM0el2Cbto703F5x0Nk3KCI5oJ9/A+96Dv/8N9F7bQTpbZa89HcEcuwd2iq
|
||||||
|
AsyGVlhEZCyhwsfaNC+IDEBGEfgejvZPBUkuXFLR6F1KwoM3+L4RB2FsI9EYNXjw
|
||||||
|
m/8YCx+2Qn9NoLckf6kJxVYENlLzMWNriyynpmqaQ6XYPPQ1I7OjGqh7jueXV/Bx
|
||||||
|
bvkrUsXW7zbcAuMxVXW1yH8KuXAdMKLTW5gZ3Dj51agErfiRpc06LPPPHaIaCfT8
|
||||||
|
cz4pY3IJQ27jv/fbu2SnpGLuZSADPlWuuLvHKVgtrVS6V3Heay7VQJxDXi5Nzfyd
|
||||||
|
IxGymBfnnjekF4ALJ0f+IZsvDTGojQIDAQABo1MwUTAdBgNVHQ4EFgQU7WjmKeC/
|
||||||
|
yEqGXTK8Qr2irECh5L4wHwYDVR0jBBgwFoAU7WjmKeC/yEqGXTK8Qr2irECh5L4w
|
||||||
|
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAxw/iJGQ0zJaYGobl
|
||||||
|
EmzZX7De/PqiaE/da4Z7Nw2ck5yb0s4z5V5ov41LRWOO/VsaDvP+ucPOrsQzs9uZ
|
||||||
|
ZYpNdb9X1j1ZLLvTepjVFigJO2tXS08oCanSyt5PFjkH/sfyOvrRNr2VPBSB9RDn
|
||||||
|
L8Eru1Cbd2PcZFFO+jm8ioFkRz83uXgTP2t7IZxlc0NUAfT252o+7Y3wf2W4zcXS
|
||||||
|
CiQQTF+isD7F6JVQnmWVLKkBooDE135E3SzesD8bA7VP2OXcld20TMtV6D/HWQKH
|
||||||
|
s/5HlB/D+02+z1kU09xCbpYiUeAk7pRMkR2doAXZ2XjKu5z47H22WD+pzdXn01kX
|
||||||
|
rsxcpRUgv9N+wVScGSK01wcBNNRPXijC/k6hIumlwrYuLN0i3VpJx0sOlnZJ34Gv
|
||||||
|
sVCiW0RDx4mc/HpwMkvNbdKCrra0Q/aX+yjKcAFwelevu0vfj82WF53BAM41aor4
|
||||||
|
yHCDBpFhrfrtOQm3K1jYbUyqTJXbCwNiNs+wstWmDnfkr0qMebXBBGXF81GLrE/4
|
||||||
|
s7LgUuyxu3/dX5Hh/yG7p13LszT3xgk1iEVwEWy6w9Op00pzBDMKGR0Yisq4bzdx
|
||||||
|
ITald/abOFTk+ZwpCOw1HTQO4A6HgwXLAdrVVX45qTP4VsUY8RCcIeEZZtj81SnF
|
||||||
|
xtchwBqM0lLufxWTUOCBIXMVUuU=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
52
backend/key.pem
Normal file
52
backend/key.pem
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
MyJDELvA01ZFZW9xXMwfxTk7k7fUCA==
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
Reference in New Issue
Block a user