Source code for luna_api.app.handlers.liveness_handler
from typing import Optional
from sanic.views import HTTPMethodView
from classes.token import Permissions
from crutches_on_wheels.cow.errors.errors import Error
from crutches_on_wheels.cow.errors.exception import VLException
from ..app import ApiRequest
from .liveness_v1_handler import LivenessV1Handler
from .liveness_v2_handler import LivenessV2Handler
[docs]class LivenessHandler(HTTPMethodView):
"""
Liveness handler.
"""
[docs] @staticmethod
def checkTokenPermissions(permissions: Optional[Permissions] = None) -> None:
"""
Check token permissions if specified
"""
if permissions is not None:
if (resource := "liveness") not in permissions.resources:
raise VLException(Error.ResourceForbiddenByToken.format(resource), 403, False)
[docs] def post(self, request: ApiRequest):
"""
Process post request according to service settings.
"""
self.checkTokenPermissions(request.credentials.permissions)
if not request.app.ctx.licenseChecker.licenseState.liveness.value:
raise VLException(Error.LicenseProblem.format("Liveness feature disabled"), 403, False)
if request.config.additionalServicesUsage.liveness:
if request.app.ctx.licenseChecker.licenseState.liveness.value != 1:
raise VLException(
Error.LicenseProblem.format("Liveness v.1 feature disabled"),
403,
False,
)
reply = LivenessV1Handler(request).post()
else:
if request.app.ctx.licenseChecker.licenseState.liveness.value != 2:
raise VLException(
Error.LicenseProblem.format("Liveness v.2 feature disabled"),
403,
False,
)
reply = LivenessV2Handler(request).post()
return reply