Source code for luna_backport3.app.handlers.liveness_handler

from luna3.common.luna_response import LunaResponse
from sanic.response import HTTPResponse

from app.handlers.base_handler import APIProxyBaseHandler
from crutches_on_wheels.errors.errors import ErrorInfo
from crutches_on_wheels.errors.exception import VLException
from crutches_on_wheels.web.base_proxy_handler_class import ProxyRequest


[docs]class LivenessHandler(APIProxyBaseHandler): """ Handler for liveness prediction service """ allowedMethods = ("POST",)
[docs] async def prepareRequestPost(self) -> ProxyRequest: """ Predict liveness, see `spec liveness`_. .. _`spec liveness`: _static/api.html#tag/liveness Returns: Proxy request with new face """ headers = self.prepareHeaders() headers.update({"Luna-Account-Id": self.accountId}) return ProxyRequest(self.request.body, headers, self.prepareQuery())
[docs] async def postProcessingPost(self, response: LunaResponse) -> HTTPResponse: """ Default post processing response from the service Args: response: response Returns: response in api format """ responseJson = response.json for imageDict in responseJson["images"]: if (error := imageDict.get("error")) is not None: imageDict["error"] = {"error_code": error["error_code"], "detail": error["detail"]} return self.success(response.statusCode, outputJson=responseJson, extraHeaders=response.headers)
[docs] async def postProcessingFailedRequest(self, response: LunaResponse) -> HTTPResponse: """ Post processing failed response from the service Args: response: response Returns: response in api format """ raise VLException(ErrorInfo.fromDict(response.json), response.statusCode, False)