1+ from collections .abc import Callable
12from functools import wraps
2- from typing import cast
3+ from typing import Concatenate , ParamSpec , TypeVar , cast
34
45import flask_login
56from flask import jsonify , request
1516
1617from .. import api
1718
19+ P = ParamSpec ("P" )
20+ R = TypeVar ("R" )
21+ T = TypeVar ("T" )
1822
19- def oauth_server_client_id_required (view ):
23+
24+ def oauth_server_client_id_required (view : Callable [Concatenate [T , OAuthProviderApp , P ], R ]):
2025 @wraps (view )
21- def decorated (* args , ** kwargs ):
26+ def decorated (self : T , * args : P . args , ** kwargs : P . kwargs ):
2227 parser = reqparse .RequestParser ()
2328 parser .add_argument ("client_id" , type = str , required = True , location = "json" )
2429 parsed_args = parser .parse_args ()
@@ -30,18 +35,15 @@ def decorated(*args, **kwargs):
3035 if not oauth_provider_app :
3136 raise NotFound ("client_id is invalid" )
3237
33- kwargs ["oauth_provider_app" ] = oauth_provider_app
34-
35- return view (* args , ** kwargs )
38+ return view (self , oauth_provider_app , * args , ** kwargs )
3639
3740 return decorated
3841
3942
40- def oauth_server_access_token_required (view ):
43+ def oauth_server_access_token_required (view : Callable [ Concatenate [ T , OAuthProviderApp , Account , P ], R ] ):
4144 @wraps (view )
42- def decorated (* args , ** kwargs ):
43- oauth_provider_app = kwargs .get ("oauth_provider_app" )
44- if not oauth_provider_app or not isinstance (oauth_provider_app , OAuthProviderApp ):
45+ def decorated (self : T , oauth_provider_app : OAuthProviderApp , * args : P .args , ** kwargs : P .kwargs ):
46+ if not isinstance (oauth_provider_app , OAuthProviderApp ):
4547 raise BadRequest ("Invalid oauth_provider_app" )
4648
4749 authorization_header = request .headers .get ("Authorization" )
@@ -79,9 +81,7 @@ def decorated(*args, **kwargs):
7981 response .headers ["WWW-Authenticate" ] = "Bearer"
8082 return response
8183
82- kwargs ["account" ] = account
83-
84- return view (* args , ** kwargs )
84+ return view (self , oauth_provider_app , account , * args , ** kwargs )
8585
8686 return decorated
8787
0 commit comments