Source code for aries_cloudagent.protocols.coordinate_mediation.v1_0.handlers.mediation_request_handler
"""Handler for mediate-request message."""
from .....messaging.base_handler import (
BaseHandler,
BaseResponder,
HandlerException,
RequestContext,
)
from ....problem_report.v1_0.message import ProblemReport
from ..manager import MediationManager, MediationAlreadyExists
from ..messages.mediate_request import MediationRequest
[docs]class MediationRequestHandler(BaseHandler):
"""Handler for mediate-request message."""
[docs] async def handle(self, context: RequestContext, responder: BaseResponder):
"""Handle mediate-request message."""
self._logger.debug(
"%s called with context %s", self.__class__.__name__, context
)
assert isinstance(context.message, MediationRequest)
if not context.connection_ready:
raise HandlerException("Invalid mediation request: no active connection")
mgr = MediationManager(context.profile)
try:
record = await mgr.receive_request(
context.connection_record.connection_id, context.message
)
if context.settings.get("mediation.open", False):
record, grant = await mgr.grant_request(record.mediation_id)
await responder.send_reply(grant)
except MediationAlreadyExists:
await responder.send_reply(
ProblemReport(
explain_ltxt="Mediation request already exists from this connection."
)
)