Source code for aries_cloudagent.protocols.issue_credential.v2_0.handlers.cred_problem_report_handler

"""Credential problem report message handler."""

from .....messaging.base_handler import BaseHandler, HandlerException
from .....messaging.request_context import RequestContext
from .....messaging.responder import BaseResponder
from .....storage.error import StorageError, StorageNotFoundError

from ..manager import V20CredManager
from ..messages.cred_problem_report import V20CredProblemReport


[docs]class CredProblemReportHandler(BaseHandler): """Message handler class for problem reports."""
[docs] async def handle(self, context: RequestContext, responder: BaseResponder): """ Message handler logic for problem reports. Args: context: request context responder: responder callback """ self._logger.debug( "Issue-credential v2.0 problem report handler called with context %s", context, ) assert isinstance(context.message, V20CredProblemReport) # If connection is present it must be ready for use if context.connection_record and not context.connection_ready: raise HandlerException( "Connection used for credential problem report not ready" ) elif not context.connection_record: raise HandlerException( "Connectionless not supported for credential problem report" ) cred_manager = V20CredManager(context.profile) try: await cred_manager.receive_problem_report( context.message, context.connection_record.connection_id, ) except (StorageError, StorageNotFoundError): self._logger.exception( "Error processing issue-credential v2.0 problem report message" )