|
@@ -3,29 +3,32 @@ import json
|
3
|
3
|
import typing
|
4
|
4
|
from http import HTTPStatus
|
5
|
5
|
|
6
|
|
-from flask import request, Response
|
7
|
|
-
|
8
|
|
-
|
9
|
6
|
from hapic.context import ContextInterface
|
10
|
7
|
from hapic.exception import OutputValidationException
|
11
|
8
|
from hapic.processor import RequestParameters, ProcessValidationError
|
12
|
9
|
|
|
10
|
+if typing.TYPE_CHECKING:
|
|
11
|
+ from flask import Response
|
|
12
|
+
|
13
|
13
|
|
14
|
14
|
class FlaskContext(ContextInterface):
|
15
|
15
|
def get_request_parameters(self, *args, **kwargs) -> RequestParameters:
|
|
16
|
+ from flask import request
|
16
|
17
|
return RequestParameters(
|
17
|
18
|
path_parameters=request.view_args,
|
18
|
19
|
query_parameters=request.args, # TODO: Check
|
19
|
20
|
body_parameters=request.get_json(), # TODO: Check
|
20
|
21
|
form_parameters=request.form,
|
21
|
22
|
header_parameters=request.headers,
|
|
23
|
+ files_parameters={}, # TODO: BS 20171115: Code it
|
22
|
24
|
)
|
23
|
25
|
|
24
|
26
|
def get_response(
|
25
|
27
|
self,
|
26
|
28
|
response: dict,
|
27
|
29
|
http_code: int,
|
28
|
|
- ) -> Response:
|
|
30
|
+ ) -> 'Response':
|
|
31
|
+ from flask import Response
|
29
|
32
|
return Response(
|
30
|
33
|
response=json.dumps(response),
|
31
|
34
|
mimetype='application/json',
|
|
@@ -51,3 +54,6 @@ class FlaskContext(ContextInterface):
|
51
|
54
|
mimetype='application/json',
|
52
|
55
|
status=int(http_code),
|
53
|
56
|
)
|
|
57
|
+
|
|
58
|
+# TODO BS 20171115: Implement other context methods
|
|
59
|
+# (take source in example_a_flask.py)
|