Skip to content

Commit 39299fe

Browse files
committed
[mock_uss] add isa notification endpoint to mock RID display provider
1 parent abf62e8 commit 39299fe

File tree

3 files changed

+91
-0
lines changed

3 files changed

+91
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,23 @@
11
from monitoring.mock_uss import webapp
2+
from monitoring.mock_uss.riddp.config import KEY_RID_VERSION
3+
from ...monitorlib.rid import RIDVersion
4+
5+
rid_version: RIDVersion = webapp.config[KEY_RID_VERSION]
26

37

48
@webapp.route("/riddp/status")
59
def riddp_status():
610
return "Mock RID Display Provider ok"
711

812

13+
if rid_version == RIDVersion.f3411_19:
14+
from . import routes_riddp_v19
15+
elif rid_version == RIDVersion.f3411_22a:
16+
from . import routes_riddp_v22a
17+
else:
18+
raise NotImplementedError(
19+
f"Mock USS does not yet support RID version {rid_version}"
20+
)
21+
922
from . import routes_observation
1023
from . import routes_behavior
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import flask
2+
from implicitdict import ImplicitDict
3+
from uas_standards.astm.f3411.v19.api import (
4+
OperationID,
5+
OPERATIONS,
6+
PutIdentificationServiceAreaNotificationParameters,
7+
)
8+
from uas_standards.astm.f3411.v19.constants import (
9+
Scope,
10+
)
11+
12+
from monitoring.mock_uss import webapp
13+
from monitoring.mock_uss.auth import requires_scope
14+
15+
16+
def rid_v19_operation(op_id: OperationID):
17+
op = OPERATIONS[op_id]
18+
path = op.path.replace("{", "<").replace("}", ">")
19+
return webapp.route('/mock/riddp/' + path, methods=[op.verb])
20+
21+
22+
@rid_v19_operation(OperationID.PostIdentificationServiceArea)
23+
@requires_scope(Scope.Write)
24+
def ridsp_notify_isa_v19(id: str):
25+
try:
26+
json = flask.request.json
27+
if json is None:
28+
raise ValueError("Request did not contain a JSON payload")
29+
ImplicitDict.parse(json, PutIdentificationServiceAreaNotificationParameters)
30+
except ValueError as e:
31+
msg = "Unable to parse PutIdentificationServiceAreaNotificationParameters JSON request: {}".format(
32+
e
33+
)
34+
return msg, 400
35+
36+
return (
37+
flask.jsonify(None),
38+
204,
39+
)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import flask
2+
from implicitdict import ImplicitDict
3+
from uas_standards.astm.f3411.v22a.api import (
4+
OperationID,
5+
OPERATIONS,
6+
PutIdentificationServiceAreaNotificationParameters,
7+
)
8+
from uas_standards.astm.f3411.v22a.constants import (
9+
Scope,
10+
)
11+
12+
from monitoring.mock_uss import webapp
13+
from monitoring.mock_uss.auth import requires_scope
14+
15+
16+
def rid_v22a_operation(op_id: OperationID):
17+
op = OPERATIONS[op_id]
18+
path = op.path.replace("{", "<").replace("}", ">")
19+
return webapp.route('/mock/riddp' + path, methods=[op.verb])
20+
21+
22+
@rid_v22a_operation(OperationID.PostIdentificationServiceArea)
23+
@requires_scope(Scope.ServiceProvider)
24+
def ridsp_notify_isa_v22a(id: str):
25+
try:
26+
json = flask.request.json
27+
if json is None:
28+
raise ValueError("Request did not contain a JSON payload")
29+
ImplicitDict.parse(json, PutIdentificationServiceAreaNotificationParameters)
30+
except ValueError as e:
31+
msg = "Unable to parse PutIdentificationServiceAreaNotificationParameters JSON request: {}".format(
32+
e
33+
)
34+
return msg, 400
35+
36+
return (
37+
flask.jsonify(None),
38+
204,
39+
)

0 commit comments

Comments
 (0)