Python--看别人的代码(一)

这个是资源保护器修饰器的类,我觉得写得真的好:

class ResourceProtector(_ResourceProtector):

    def acquire_token(self, scope=None):
        request = TokenRequest(
            _req.method,
            _req.full_path,
            _req.data,
            _req.headers
        )
        token = self.validate_request(scope, request)
        token_authenticated.send(self, token=token)
        ctx = _app_ctx_stack.top
        ctx.authlib_server_oauth2_token = token
        return token

    @contextmanager
    def acquire(self, scope=None):
        try:
            yield self.acquire_token(scope)
        except OAuth2Error as error:
            raise_oauth2_error(error)

    def __call__(self, scope=None):
        def wrapper(f):
            @functools.wraps(f)
            def decorated(*args, **kwargs):
                try:
                    self.acquire_token(scope)
                except OAuth2Error as error:
                    raise_oauth2_error(error)
                return f(*args, **kwargs)
            return decorated
        return wrapper

猜你喜欢

转载自blog.csdn.net/qq_28877125/article/details/81562688