@@ -631,41 +631,57 @@ def _to_response(self, result: Union[Dict, Response]) -> Response:
631
631
def _json_dump (self , obj : Any ) -> str :
632
632
return self ._serializer (obj )
633
633
634
- class Blueprint ():
634
+
635
+ class Blueprint :
635
636
"""Blueprint helper class to allow splitting ApiGatewayResolver into multiple files"""
637
+
636
638
def __init__ (self ):
637
639
self ._api : Dict [tuple , Callable ] = {}
638
640
639
- def __call__ (self , rule : str , method : Union [str , Tuple [str ], List [str ]], cors : Optional [bool ] = None , compress : bool = False , cache_control : Optional [str ] = None ,):
641
+ def route (
642
+ self ,
643
+ rule : str ,
644
+ method : Union [str , Tuple [str ], List [str ]],
645
+ cors : Optional [bool ] = None ,
646
+ compress : bool = False ,
647
+ cache_control : Optional [str ] = None ,
648
+ ):
640
649
def actual_decorator (func : Callable ):
641
650
@wraps (func )
642
651
def wrapper (app : ApiGatewayResolver ):
643
652
def inner_wrapper ():
644
653
return func (app )
654
+
645
655
return inner_wrapper
656
+
646
657
if isinstance (method , (list , tuple )):
647
658
for item in method :
648
659
self ._api [(rule , item , cors , compress , cache_control )] = wrapper
649
660
else :
650
661
self ._api [(rule , method , cors , compress , cache_control )] = wrapper
662
+
651
663
return actual_decorator
652
664
653
665
def get (self , rule : str , cors : Optional [bool ] = None , compress : bool = False , cache_control : Optional [str ] = None ):
654
- return self .__call__ (rule , "GET" , cors , compress , cache_control )
666
+ return self .route (rule , "GET" , cors , compress , cache_control )
655
667
656
668
def post (self , rule : str , cors : Optional [bool ] = None , compress : bool = False , cache_control : Optional [str ] = None ):
657
- return self .__call__ (rule , "POST" , cors , compress , cache_control )
669
+ return self .route (rule , "POST" , cors , compress , cache_control )
658
670
659
671
def put (self , rule : str , cors : Optional [bool ] = None , compress : bool = False , cache_control : Optional [str ] = None ):
660
- return self .__call__ (rule , "PUT" , cors , compress , cache_control )
672
+ return self .route (rule , "PUT" , cors , compress , cache_control )
661
673
662
- def delete (self , rule : str , cors : Optional [bool ] = None , compress : bool = False , cache_control : Optional [str ] = None ):
663
- return self .__call__ (rule , "DELETE" , cors , compress , cache_control )
674
+ def delete (
675
+ self , rule : str , cors : Optional [bool ] = None , compress : bool = False , cache_control : Optional [str ] = None
676
+ ):
677
+ return self .route (rule , "DELETE" , cors , compress , cache_control )
664
678
665
- def patch (self , rule : str , cors : Optional [bool ] = None , compress : bool = False , cache_control : Optional [str ] = None ):
666
- return self .__call__ (rule , "PATCH" , cors , compress , cache_control )
679
+ def patch (
680
+ self , rule : str , cors : Optional [bool ] = None , compress : bool = False , cache_control : Optional [str ] = None
681
+ ):
682
+ return self .route (rule , "PATCH" , cors , compress , cache_control )
667
683
668
- def register_to_app (self , app :ApiGatewayResolver ):
684
+ def register_to_app (self , app : ApiGatewayResolver ):
669
685
"""Bind a blueprint object to an existing ApiGatewayResolver instance"""
670
686
for route , func in self ._api .items ():
671
687
app .route (* route )(func (app = app ))
0 commit comments