Source code for luna_api.app.handlers.faces_proxy_handler

""" Handler for a certain faces. """
from luna3.common.luna_response import LunaResponse
from sanic.response import HTTPResponse

from app.handlers.base_handler import FacesServiceBaseHandler, ProxyRequest
from crutches_on_wheels.cow.errors.errors import Error
from crutches_on_wheels.cow.errors.exception import VLException


[docs]class FacesHandler(FacesServiceBaseHandler): """ Handler for create new faces. See `spec_faces`_. .. _spec_faces: _static/api.html#tag/faces Resource: "/{api_version}/faces" """ allowedMethods = ("POST", "GET", "DELETE")
[docs] def checkTokenPermissions(self) -> None: """ Description see :func:`~BaseRequestHandler.checkTokenPermissions`. """ self.checkTokenPermissionsDefault(objectName="face")
[docs] async def prepareRequestPost(self) -> ProxyRequest: """ Add account id to new face Returns: proxy request """ proxyRequest = self.prepareRequestCreation() # require to additionally validate `lists` field here to avoid duplicate json body validation if ( self.request.method == "POST" and self.request.credentials.permissions is not None and self.request.json.get("lists") ): if (action := "modification") not in self.request.credentials.permissions.list: raise VLException(Error.ForbiddenByToken.format(action, "list"), 403, False) return proxyRequest
[docs] async def postProcessingPost(self, response: LunaResponse) -> HTTPResponse: """ Update urls in output json and location header Args: response: from faces Returns: response """ return self.success(response.statusCode, outputJson=self.convertIncomingUrls(response))
[docs]class FacesCountHandler(FacesServiceBaseHandler): """ Handler for getting face count. See `spec_get_faces_count`_. .. _spec_get_faces_count: _static/api.html#operation/getFacesCount Resource: "/{api_version}/faces/count" """ allowedMethods = ("GET",)
[docs] def checkTokenPermissions(self) -> None: """ Description see :func:`~BaseRequestHandler.checkTokenPermissions`. """ self.checkTokenPermissionsDefault(objectName="face")
[docs]class FaceHandler(FacesServiceBaseHandler): """ Handler for work with a face. See `spec_face`_. .. _spec_face: _static/api.html#tag/faces Resource: "/{api_version}/faces/{faceId}" """ allowedMethods = ("PATCH", "GET", "DELETE", "HEAD")
[docs] def checkTokenPermissions(self) -> None: """ Description see :func:`~BaseRequestHandler.checkTokenPermissions`. """ self.checkTokenPermissionsDefault(objectName="face")
[docs]class FacesAttributeHandler(FacesServiceBaseHandler): """ Handler for work with a face attributes. See `spec_face_attributes`_. .. _spec_face_attributes: _static/api.html#tag/face-attributes Resource: "/{api_version}/faces/{faceId}/attributes" """ allowedMethods = ("PUT", "GET", "DELETE")
[docs] def checkTokenPermissions(self) -> None: """ Description see :func:`~BaseRequestHandler.checkTokenPermissions`. """ self.checkTokenPermissionsDefault(objectName="face")
[docs]class FacesAttributesCountHandler(FacesServiceBaseHandler): """ Handler for getting count faces with attributes. See `spec_get_face_attribute_count`_. .. _spec_get_face_attribute_count: _static/api.html#operation/getFaceAttributeCount Resource: "/{api_version}/faces/attributes/count" """ allowedMethods = ("GET",)
[docs] def checkTokenPermissions(self) -> None: """ Description see :func:`~BaseRequestHandler.checkTokenPermissions`. """ self.checkTokenPermissionsDefault(objectName="attribute")
[docs]class FacesAttributeSamplesHandler(FacesServiceBaseHandler): """ Handler for work with face attribute samples. See `spec_get_face_attribute_samples`_. .. _spec_get_face_attribute_samples: _static/api.html#operation/getFaceAttributeSamples Resource: "/{api_version}/faces/{faceId}/attributes/samples" """ allowedMethods = ("GET",)
[docs] def checkTokenPermissions(self) -> None: """ Description see :func:`~BaseRequestHandler.checkTokenPermissions`. """ self.checkTokenPermissionsDefault(objectName="faceSample")