def METHOD_NAME(self, fun: AuthenticatedAIOHTTPHandler) -> AIOHTTPHandler:
    async def wrapped(request: web.Request) -> web.StreamResponse:
        userdata = await self._userdata_from_rest_request(request)
        if not userdata:
            web_userdata = await self._userdata_from_web_request(request)
            if web_userdata:
                return web.HTTPUnauthorized(reason="provided web auth to REST endpoint")
            raise web.HTTPUnauthorized()
        return await fun(request, userdata)
    return wrapped