Source code for worldline.acquiring.sdk.v1.exception_factory

# -*- coding: utf-8 -*-
#
# This file was automatically generated.
#
from typing import Any, Optional

from .api_exception import ApiException
from .authorization_exception import AuthorizationException
from .platform_exception import PlatformException
from .reference_exception import ReferenceException
from .validation_exception import ValidationException

from worldline.acquiring.sdk.call_context import CallContext
from worldline.acquiring.sdk.v1.domain.api_payment_error_response import ApiPaymentErrorResponse


[docs] def create_exception(status_code: int, body: str, error_object: Any, context: Optional[CallContext]) -> Exception: """Return a raisable API exception based on the error object given""" def create_exception_from_response_fields(type: Optional[str], title: Optional[str], status: Optional[int], detail: Optional[str], instance: Optional[str]) -> Exception: # get error based on status code, defaulting to ApiException return ERROR_MAP.get(status_code, ApiException)(status_code, body, type, title, status, detail, instance) if not isinstance(error_object, ApiPaymentErrorResponse): raise ValueError("Unsupported error object encountered: {}".format(error_object.__class__.__name__)) return create_exception_from_response_fields(error_object.type, error_object.title, error_object.status, error_object.detail, error_object.instance)
ERROR_MAP = { 400: ValidationException, 403: AuthorizationException, 404: ReferenceException, 409: ReferenceException, 410: ReferenceException, 500: PlatformException, 502: PlatformException, 503: PlatformException, }