Source code for aries_cloudagent.protocols.introduction.v0_1.handlers.forward_invitation_handler

"""Handler for incoming forward invitation messages."""

from .....messaging.base_handler import (
    BaseHandler,
    BaseResponder,
    HandlerException,
    RequestContext,
)

from ....connections.v1_0.manager import ConnectionManager, ConnectionManagerError
from ....problem_report.v1_0.message import ProblemReport

from ..messages.forward_invitation import ForwardInvitation


[docs]class ForwardInvitationHandler(BaseHandler): """Handler for incoming forward invitation messages."""
[docs] async def handle(self, context: RequestContext, responder: BaseResponder): """Message handler implementation.""" self._logger.debug("ForwardInvitationHandler called with context %s", context) assert isinstance(context.message, ForwardInvitation) if not context.connection_ready: raise HandlerException( "No connection established for forward invitation message" ) # Store invitation session = await context.session() connection_mgr = ConnectionManager(session) try: await connection_mgr.receive_invitation(context.message.invitation) except ConnectionManagerError as e: self._logger.exception("Error receiving forward connection invitation") await responder.send_reply( ProblemReport( description={ "en": e.message, "code": e.error_code or "forward-invitation-error", } ) )