moto/moto/apigateway/exceptions.py
2022-10-11 13:16:27 +00:00

287 lines
7.3 KiB
Python

from moto.core.exceptions import JsonRESTError
from typing import Any
class ApiGatewayException(JsonRESTError):
pass
class BadRequestException(ApiGatewayException):
def __init__(self, message: str):
super().__init__("BadRequestException", message)
class NotFoundException(ApiGatewayException):
def __init__(self, message: str):
super().__init__("NotFoundException", message)
class AccessDeniedException(ApiGatewayException):
pass
class ConflictException(ApiGatewayException):
code = 409
def __init__(self, message: str):
super().__init__("ConflictException", message)
class AwsProxyNotAllowed(BadRequestException):
def __init__(self) -> None:
super().__init__(
"Integrations of type 'AWS_PROXY' currently only supports Lambda function and Firehose stream invocations."
)
class CrossAccountNotAllowed(AccessDeniedException):
def __init__(self) -> None:
super().__init__(
"AccessDeniedException", "Cross-account pass role is not allowed."
)
class RoleNotSpecified(BadRequestException):
def __init__(self) -> None:
super().__init__("Role ARN must be specified for AWS integrations")
class IntegrationMethodNotDefined(BadRequestException):
def __init__(self) -> None:
super().__init__("Enumeration value for HttpMethod must be non-empty")
class InvalidOpenAPIDocumentException(BadRequestException):
def __init__(self, cause: Any):
super().__init__(
f"Failed to parse the uploaded OpenAPI document due to: {cause.message}"
)
class InvalidOpenApiDocVersionException(BadRequestException):
def __init__(self) -> None:
super().__init__("Only OpenAPI 3.x.x are currently supported")
class InvalidOpenApiModeException(BadRequestException):
def __init__(self) -> None:
super().__init__(
'Enumeration value of OpenAPI import mode must be "overwrite" or "merge"',
)
class InvalidResourcePathException(BadRequestException):
def __init__(self) -> None:
super().__init__(
"Resource's path part only allow a-zA-Z0-9._- and curly braces at the beginning and the end and an optional plus sign before the closing brace."
)
class InvalidHttpEndpoint(BadRequestException):
def __init__(self) -> None:
super().__init__("Invalid HTTP endpoint specified for URI")
class InvalidArn(BadRequestException):
def __init__(self) -> None:
super().__init__("Invalid ARN specified in the request")
class InvalidIntegrationArn(BadRequestException):
def __init__(self) -> None:
super().__init__("AWS ARN for integration must contain path or action")
class InvalidRequestInput(BadRequestException):
def __init__(self) -> None:
super().__init__("Invalid request input")
class NoIntegrationDefined(NotFoundException):
def __init__(self) -> None:
super().__init__("No integration defined for method")
class NoIntegrationResponseDefined(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("Invalid Response status code specified")
class NoMethodDefined(BadRequestException):
def __init__(self) -> None:
super().__init__("The REST API doesn't contain any methods")
class AuthorizerNotFoundException(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("Invalid Authorizer identifier specified")
class StageNotFoundException(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("Invalid stage identifier specified")
class ApiKeyNotFoundException(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("Invalid API Key identifier specified")
class UsagePlanNotFoundException(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("Invalid Usage Plan ID specified")
class ApiKeyAlreadyExists(ApiGatewayException):
code = 409
def __init__(self) -> None:
super().__init__("ConflictException", "API Key already exists")
class InvalidDomainName(BadRequestException):
code = 404
def __init__(self) -> None:
super().__init__("No Domain Name specified")
class DomainNameNotFound(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("Invalid domain name identifier specified")
class InvalidRestApiId(BadRequestException):
code = 404
def __init__(self) -> None:
super().__init__("No Rest API Id specified")
class InvalidModelName(BadRequestException):
code = 404
def __init__(self) -> None:
super().__init__("No Model Name specified")
class RestAPINotFound(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("Invalid Rest API Id specified")
class RequestValidatorNotFound(BadRequestException):
code = 400
def __init__(self) -> None:
super().__init__("Invalid Request Validator Id specified")
class ModelNotFound(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("Invalid Model Name specified")
class ApiKeyValueMinLength(BadRequestException):
code = 400
def __init__(self) -> None:
super().__init__("API Key value should be at least 20 characters")
class MethodNotFoundException(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("Invalid Method identifier specified")
class InvalidBasePathException(BadRequestException):
code = 400
def __init__(self) -> None:
super().__init__(
"API Gateway V1 doesn't support the slash character (/) in base path mappings. "
"To create a multi-level base path mapping, use API Gateway V2."
)
class DeploymentNotFoundException(NotFoundException):
def __init__(self) -> None:
super().__init__("Invalid Deployment identifier specified")
class InvalidRestApiIdForBasePathMappingException(BadRequestException):
code = 400
def __init__(self) -> None:
super().__init__("Invalid REST API identifier specified")
class InvalidStageException(BadRequestException):
code = 400
def __init__(self) -> None:
super().__init__("Invalid stage identifier specified")
class BasePathConflictException(ConflictException):
def __init__(self) -> None:
super().__init__("Base path already exists for this domain name")
class BasePathNotFoundException(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("Invalid base path mapping identifier specified")
class ResourceIdNotFoundException(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("Invalid resource identifier specified")
class VpcLinkNotFound(NotFoundException):
code = 404
def __init__(self) -> None:
super().__init__("VPCLink not found")
class ValidationException(ApiGatewayException):
code = 400
def __init__(self, message: str):
super().__init__("ValidationException", message)
class StageStillActive(BadRequestException):
def __init__(self) -> None:
super().__init__(
"Active stages pointing to this deployment must be moved or deleted"
)
class GatewayResponseNotFound(NotFoundException):
def __init__(self) -> None:
super().__init__("GatewayResponse not found")