@@ -28,20 +28,34 @@ Future<Response> _handleGet(RequestContext context) async {
28
28
final authenticatedUser = context.read <User >();
29
29
final params = context.request.uri.queryParameters;
30
30
31
- final filter = params.containsKey ('filter' )
32
- ? jsonDecode (params['filter' ]! ) as Map <String , dynamic >
33
- : null ;
31
+ Map <String , dynamic >? filter;
32
+ if (params.containsKey ('filter' )) {
33
+ try {
34
+ filter = jsonDecode (params['filter' ]! ) as Map <String , dynamic >;
35
+ } on FormatException catch (e) {
36
+ throw BadRequestException (
37
+ 'Invalid "filter" parameter: Not valid JSON. $e ' ,
38
+ );
39
+ }
40
+ }
34
41
35
- final sort = params.containsKey ('sort' )
36
- ? (params['sort' ]! .split (',' ).map ((s) {
37
- final parts = s.split (':' );
38
- final field = parts[0 ];
39
- final order = (parts.length > 1 && parts[1 ] == 'desc' )
40
- ? SortOrder .desc
41
- : SortOrder .asc;
42
- return SortOption (field, order);
43
- }).toList ())
44
- : null ;
42
+ List <SortOption >? sort;
43
+ if (params.containsKey ('sort' )) {
44
+ try {
45
+ sort = params['sort' ]! .split (',' ).map ((s) {
46
+ final parts = s.split (':' );
47
+ final field = parts[0 ];
48
+ final order = (parts.length > 1 && parts[1 ] == 'desc' )
49
+ ? SortOrder .desc
50
+ : SortOrder .asc;
51
+ return SortOption (field, order);
52
+ }).toList ();
53
+ } catch (e) {
54
+ throw const BadRequestException (
55
+ 'Invalid "sort" parameter format. Use "field:order,field2:order".' ,
56
+ );
57
+ }
58
+ }
45
59
46
60
final pagination =
47
61
(params.containsKey ('limit' ) || params.containsKey ('cursor' ))
@@ -91,7 +105,14 @@ Future<Response> _handlePost(RequestContext context) async {
91
105
requestBody['createdAt' ] = now;
92
106
requestBody['updatedAt' ] = now;
93
107
94
- final itemToCreate = modelConfig.fromJson (requestBody);
108
+ dynamic itemToCreate;
109
+ try {
110
+ itemToCreate = modelConfig.fromJson (requestBody);
111
+ } on TypeError catch (e) {
112
+ throw BadRequestException (
113
+ 'Invalid request body: Missing or invalid required field(s). $e ' ,
114
+ );
115
+ }
95
116
96
117
final userIdForRepoCall =
97
118
(modelConfig.getOwnerId != null &&
0 commit comments