9
9
from http import HTTPStatus
10
10
from zoneinfo import ZoneInfo
11
11
12
- from flask import Flask , jsonify , request
12
+ from flask import Flask , Response , request
13
13
from pydantic import BaseSettings
14
14
15
15
from mock_vws .database import VuforiaDatabase
@@ -32,7 +32,7 @@ class TargetManagerSettings(BaseSettings):
32
32
"/databases/<string:database_name>" ,
33
33
methods = ["DELETE" ],
34
34
)
35
- def delete_database (database_name : str ) -> tuple [ str , int ] :
35
+ def delete_database (database_name : str ) -> Response :
36
36
"""
37
37
Delete a database.
38
38
@@ -45,23 +45,26 @@ def delete_database(database_name: str) -> tuple[str, int]:
45
45
if database_name == database .database_name
46
46
}
47
47
except ValueError :
48
- return "" , HTTPStatus .NOT_FOUND
48
+ return Response ( response = "" , status = HTTPStatus .NOT_FOUND )
49
49
50
50
TARGET_MANAGER .remove_database (database = matching_database )
51
- return "" , HTTPStatus .OK
51
+ return Response ( response = "" , status = HTTPStatus .OK )
52
52
53
53
54
54
@TARGET_MANAGER_FLASK_APP .route ("/databases" , methods = ["GET" ])
55
- def get_databases () -> tuple [ str , int ] :
55
+ def get_databases () -> Response :
56
56
"""
57
57
Return a list of all databases.
58
58
"""
59
59
databases = [database .to_dict () for database in TARGET_MANAGER .databases ]
60
- return jsonify (databases ), HTTPStatus .OK
60
+ return Response (
61
+ response = json .dumps (obj = databases ),
62
+ status = HTTPStatus .OK ,
63
+ )
61
64
62
65
63
66
@TARGET_MANAGER_FLASK_APP .route ("/databases" , methods = ["POST" ])
64
- def create_database () -> tuple [ str , int ] :
67
+ def create_database () -> Response :
65
68
"""
66
69
Create a new database.
67
70
@@ -131,16 +134,22 @@ def create_database() -> tuple[str, int]:
131
134
try :
132
135
TARGET_MANAGER .add_database (database = database )
133
136
except ValueError as exc :
134
- return str (exc ), HTTPStatus .CONFLICT
135
-
136
- return jsonify (database .to_dict ()), HTTPStatus .CREATED
137
+ return Response (
138
+ response = str (exc ),
139
+ status = HTTPStatus .CONFLICT ,
140
+ )
141
+
142
+ return Response (
143
+ response = json .dumps (database .to_dict ()),
144
+ status = HTTPStatus .CREATED ,
145
+ )
137
146
138
147
139
148
@TARGET_MANAGER_FLASK_APP .route (
140
149
"/databases/<string:database_name>/targets" ,
141
150
methods = ["POST" ],
142
151
)
143
- def create_target (database_name : str ) -> tuple [ str , int ] :
152
+ def create_target (database_name : str ) -> Response :
144
153
"""
145
154
Create a new target in a given database.
146
155
"""
@@ -163,14 +172,17 @@ def create_target(database_name: str) -> tuple[str, int]:
163
172
)
164
173
database .targets .add (target )
165
174
166
- return jsonify (target .to_dict ()), HTTPStatus .CREATED
175
+ return Response (
176
+ response = json .dumps (target .to_dict ()),
177
+ status = HTTPStatus .CREATED ,
178
+ )
167
179
168
180
169
181
@TARGET_MANAGER_FLASK_APP .route (
170
182
"/databases/<string:database_name>/targets/<string:target_id>" ,
171
183
methods = ["DELETE" ],
172
184
)
173
- def delete_target (database_name : str , target_id : str ) -> tuple [ str , int ] :
185
+ def delete_target (database_name : str , target_id : str ) -> Response :
174
186
"""
175
187
Delete a target.
176
188
"""
@@ -184,14 +196,17 @@ def delete_target(database_name: str, target_id: str) -> tuple[str, int]:
184
196
new_target = dataclasses .replace (target , delete_date = now )
185
197
database .targets .remove (target )
186
198
database .targets .add (new_target )
187
- return jsonify (new_target .to_dict ()), HTTPStatus .OK
199
+ return Response (
200
+ response = json .dumps (new_target .to_dict ()),
201
+ status = HTTPStatus .OK ,
202
+ )
188
203
189
204
190
205
@TARGET_MANAGER_FLASK_APP .route (
191
206
"/databases/<string:database_name>/targets/<string:target_id>" ,
192
207
methods = ["PUT" ],
193
208
)
194
- def update_target (database_name : str , target_id : str ) -> tuple [ str , int ] :
209
+ def update_target (database_name : str , target_id : str ) -> Response :
195
210
"""
196
211
Update a target.
197
212
"""
@@ -214,7 +229,7 @@ def update_target(database_name: str, target_id: str) -> tuple[str, int]:
214
229
image_value = target .image_value
215
230
request_json = json .loads (request .data )
216
231
if "image" in request_json :
217
- image_value = base64 .b64decode (s = request . json ["image" ])
232
+ image_value = base64 .b64decode (s = request_json ["image" ])
218
233
219
234
gmt = ZoneInfo ("GMT" )
220
235
last_modified_date = datetime .datetime .now (tz = gmt )
@@ -232,7 +247,10 @@ def update_target(database_name: str, target_id: str) -> tuple[str, int]:
232
247
database .targets .remove (target )
233
248
database .targets .add (new_target )
234
249
235
- return jsonify (new_target .to_dict ()), HTTPStatus .OK
250
+ return Response (
251
+ response = json .dumps (new_target .to_dict ()),
252
+ status = HTTPStatus .OK ,
253
+ )
236
254
237
255
238
256
if __name__ == "__main__" : # pragma: no cover
0 commit comments