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