Source code for luna_handlers.app.handlers.verifiers_handler
""" Verifiers handler. """
from sanic.response import HTTPResponse
from app.handlers.base_handler import BaseHandler
from app.version import VERSION
from classes.query_schemas.verifiers import VerifiersQueries
from classes.schemas.verifier import VerifierModel
from crutches_on_wheels.cow.errors.errors import Error
from crutches_on_wheels.cow.errors.exception import VLException
[docs]class VerifiersHandler(BaseHandler):
"""
Handler for working with verifiers.
Resource: "/{api_version}/verifiers"
"""
[docs] async def post(self) -> HTTPResponse:
"""
Create new verifier. See `spec_create_verifier`_.
.. _spec_create_verifier:
_static/api.html#operation/createVerifier
Raises:
VLException(Error.BadContentType, 400, isCriticalError=False) if content type is unsupported
Returns:
response with verifier id and verifier location
"""
if self.request.content_type == "application/json":
newVerifier = self.loadDataFromJson(self.request.json, VerifierModel)
verifierId = await self.dbContext.createVerifier(
policies=newVerifier.policies.asDict(),
description=newVerifier.description,
accountId=self.getAccountIdFromHeader(),
)
else:
raise VLException(Error.BadContentType, 400, isCriticalError=False)
location = f"/{VERSION['Version']['api']}/verifiers/{verifierId}"
self.respHeaders["Location"] = location
return self.success(outputJson={"verifier_id": verifierId, "url": location}, statusCode=201)
[docs] async def get(self) -> HTTPResponse:
"""
Get verifiers by filters. See `spec_get_verifiers`_.
.. _spec_get_verifiers:
_static/api.html#operation/getVerifiers
Returns:
response with list of verifiers
"""
page, pageSize = self.getPagination()
queries: VerifiersQueries = self.loadDataFromQuery(VerifiersQueries)
verifiers = await self.dbContext.getVerifiers(
accountId=queries.accountId, description=queries.description, pageSize=pageSize, page=page
)
return self.success(200, outputJson=verifiers)