11import mimetypes
2- from typing import Any , Optional , Type , cast
2+ from typing import Any , Callable , NoReturn , Optional , Type , cast
33from urllib .parse import urlencode
44
55try :
1818
1919
2020class RestApiBlueprint (Blueprint ):
21- def get (self , path : str , ** kwargs ):
21+ def get (self , path : str , ** kwargs ) -> Callable :
2222 return self .route (path , methods = ['GET' ], ** kwargs )
2323
24- def post (self , path : str , ** kwargs ):
24+ def post (self , path : str , ** kwargs ) -> Callable :
2525 return self .route (path , methods = ['POST' ], ** kwargs )
2626
27- def patch (self , path : str , ** kwargs ):
27+ def patch (self , path : str , ** kwargs ) -> Callable :
2828 return self .route (path , methods = ['PATCH' ], ** kwargs )
2929
30- def delete (self , path : str , ** kwargs ):
30+ def delete (self , path : str , ** kwargs ) -> Callable :
3131 return self .route (path , methods = ['DELETE' ], ** kwargs )
3232
3333 @property
34- def current_user_id (self ):
34+ def current_user_id (self ) -> str :
3535 return self .current_request .context ['user_id' ]
3636
3737 @property
38- def current_platform_id (self ):
38+ def current_platform_id (self ) -> str :
3939 return self .current_request .context ['platform_id' ]
4040
4141 @property
42- def current_api_key_id (self ):
42+ def current_api_key_id (self ) -> str :
4343 return self .current_request .context ['api_key_id' ]
4444
45- def user_id_filter_required (self ):
45+ def user_id_filter_required (self ) -> bool :
4646 """
4747 This method is required to be implemented with your own business logic.
4848 You are responsible of determining when `user_id` filter is required.
@@ -51,7 +51,7 @@ def user_id_filter_required(self):
5151 'this method should be override'
5252 ) # pragma: no cover
5353
54- def platform_id_filter_required (self ):
54+ def platform_id_filter_required (self ) -> bool :
5555 """
5656 This method is required to be implemented with your own business logic.
5757 You are responsible of determining when `user_id` filter is required.
@@ -81,7 +81,7 @@ def retrieve_object(self, resource_class: Any, resource_id: str) -> Any:
8181 raise NotFoundError ('Not valid id' )
8282 return data
8383
84- def validate (self , validation_type : Type [BaseModel ]):
84+ def validate (self , validation_type : Type [BaseModel ]) -> Callable :
8585 """This decorator validate the request body using a
8686 custom pydantyc model. If validation fails return a
8787 BadRequest response with details
@@ -103,7 +103,7 @@ def wrapper(*args, **kwargs):
103103
104104 return decorator
105105
106- def resource (self , path : str ):
106+ def resource (self , path : str ) -> Callable :
107107 """Decorator to transform a class in Chalice REST endpoints
108108
109109 @app.resource('/my_resource')
@@ -164,7 +164,7 @@ def delete(id: str):
164164
165165 @copy_attributes (cls )
166166 def update (id : str ):
167- params = self .current_request .json_body or dict ()
167+ params = self .current_request .json_body or {}
168168 try :
169169 data = cls .update_validator (** params )
170170 except ValidationError as e :
@@ -238,7 +238,7 @@ def query():
238238 next_page = <url_for_next_items>
239239 }
240240 """
241- params = self .current_request .query_params or dict ()
241+ params = self .current_request .query_params or {}
242242 try :
243243 query_params = cls .query_validator (** params )
244244 except ValidationError as e :
@@ -272,7 +272,7 @@ def query():
272272
273273 def _count (filters : Q ):
274274 count = cls .model .objects .filter (filters ).count ()
275- return dict ( count = count )
275+ return { ' count' : count }
276276
277277 def _all (query : QueryParams , filters : Q ):
278278 if query .limit :
@@ -302,7 +302,7 @@ def _all(query: QueryParams, filters: Q):
302302 if self .platform_id_filter_required ():
303303 params .pop ('platform_id' )
304304 next_page_uri = f'{ path } ?{ urlencode (params )} '
305- return dict ( items = item_dicts , next_page_uri = next_page_uri )
305+ return { ' items' : item_dicts , ' next_page_uri' : next_page_uri }
306306
307307 return cls
308308
0 commit comments