Source code for terminusgps.authorizenet.controllers

from authorizenet.apicontrollersbase import APIOperationBase

from .auth import get_environment


[docs] class AuthorizenetControllerExecutor: """Allows objects to use :py:meth:`execute_controller` to execute Authorizenet API controllers."""
[docs] @staticmethod def execute_controller(controller: APIOperationBase) -> dict | None: """ Executes an Authorizenet API controller and returns its response. :param controller: An Authorizenet API controller. :type controller: :py:obj:`~authorizenet.apicontrollersbase.APIOperationBase` :raises AuthorizenetControllerExecutionError: If the API call fails. :returns: An Authorizenet API response, if any. :rtype: :py:obj:`dict` | :py:obj:`None` """ controller.setenvironment(get_environment()) controller.execute() response = controller.getresponse() if response is not None and response.messages.resultCode != "Ok": raise AuthorizenetControllerExecutionError( message=response.messages.message[0]["text"].text, code=response.messages.message[0]["code"].text, ) return response
[docs] class AuthorizenetControllerExecutionError(Exception): """Raised when an Authorizenet API controller fails to execute.""" def __init__(self, message: str, code: str, *args, **kwargs) -> None: """ Sets :py:attr:`message` and :py:attr`code` for the exception. :param message: An Authorizenet API error message. :type message: :py:obj:`str` :param code: An Authorizenet API error code. :type code: :py:obj:`str` :returns: Nothing. :rtype: :py:obj:`None` """ super().__init__(message, *args, **kwargs) self._message = message self._code = code def __str__(self) -> str: return f"{self.code}: {self.message}" @property def message(self) -> str: """An Authorizenet API error message.""" return self._message @property def code(self) -> str: """An Authorizenet API error code.""" return self._code