2016-03-01 12:03:59 -05:00
|
|
|
import json
|
2021-11-06 19:52:27 +09:00
|
|
|
from urllib.parse import unquote
|
2016-03-01 12:03:59 -05:00
|
|
|
|
2021-09-04 23:35:39 +05:30
|
|
|
from moto.utilities.utils import merge_multiple_dicts
|
2016-03-01 12:03:59 -05:00
|
|
|
from moto.core.responses import BaseResponse
|
|
|
|
from .models import apigateway_backends
|
2022-03-15 15:42:46 -01:00
|
|
|
from .exceptions import InvalidRequestInput
|
2016-03-01 12:03:59 -05:00
|
|
|
|
2020-02-03 10:21:22 -06:00
|
|
|
API_KEY_SOURCES = ["AUTHORIZER", "HEADER"]
|
2020-02-18 10:49:35 -06:00
|
|
|
AUTHORIZER_TYPES = ["TOKEN", "REQUEST", "COGNITO_USER_POOLS"]
|
2020-02-03 10:21:22 -06:00
|
|
|
ENDPOINT_CONFIGURATION_TYPES = ["PRIVATE", "EDGE", "REGIONAL"]
|
|
|
|
|
2016-03-01 12:03:59 -05:00
|
|
|
|
|
|
|
class APIGatewayResponse(BaseResponse):
|
2019-11-04 09:12:24 +00:00
|
|
|
def error(self, type_, message, status=400):
|
2021-07-26 16:21:17 +02:00
|
|
|
headers = self.response_headers or {}
|
|
|
|
headers["X-Amzn-Errortype"] = type_
|
2022-03-10 13:39:59 -01:00
|
|
|
return (status, headers, json.dumps({"__type": type_, "message": message}))
|
2019-11-04 09:12:24 +00:00
|
|
|
|
2016-03-01 12:03:59 -05:00
|
|
|
@property
|
|
|
|
def backend(self):
|
|
|
|
return apigateway_backends[self.region]
|
|
|
|
|
2021-05-23 09:09:02 -07:00
|
|
|
def __validate_api_key_source(self, api_key_source):
|
|
|
|
if api_key_source and api_key_source not in API_KEY_SOURCES:
|
|
|
|
return self.error(
|
|
|
|
"ValidationException",
|
|
|
|
(
|
|
|
|
"1 validation error detected: "
|
|
|
|
"Value '{api_key_source}' at 'createRestApiInput.apiKeySource' failed "
|
|
|
|
"to satisfy constraint: Member must satisfy enum value set: "
|
|
|
|
"[AUTHORIZER, HEADER]"
|
|
|
|
).format(api_key_source=api_key_source),
|
|
|
|
)
|
|
|
|
|
|
|
|
def __validate_endpoint_configuration(self, endpoint_configuration):
|
|
|
|
if endpoint_configuration and "types" in endpoint_configuration:
|
|
|
|
invalid_types = list(
|
|
|
|
set(endpoint_configuration["types"]) - set(ENDPOINT_CONFIGURATION_TYPES)
|
|
|
|
)
|
|
|
|
if invalid_types:
|
|
|
|
return self.error(
|
|
|
|
"ValidationException",
|
|
|
|
(
|
|
|
|
"1 validation error detected: Value '{endpoint_type}' "
|
|
|
|
"at 'createRestApiInput.endpointConfiguration.types' failed "
|
|
|
|
"to satisfy constraint: Member must satisfy enum value set: "
|
|
|
|
"[PRIVATE, EDGE, REGIONAL]"
|
|
|
|
).format(endpoint_type=invalid_types[0]),
|
|
|
|
)
|
|
|
|
|
2016-03-01 12:03:59 -05:00
|
|
|
def restapis(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "GET":
|
2016-03-01 12:03:59 -05:00
|
|
|
apis = self.backend.list_apis()
|
2019-10-31 08:44:26 -07:00
|
|
|
return 200, {}, json.dumps({"item": [api.to_dict() for api in apis]})
|
|
|
|
elif self.method == "POST":
|
|
|
|
name = self._get_param("name")
|
|
|
|
description = self._get_param("description")
|
2020-02-03 10:21:22 -06:00
|
|
|
api_key_source = self._get_param("apiKeySource")
|
|
|
|
endpoint_configuration = self._get_param("endpointConfiguration")
|
|
|
|
tags = self._get_param("tags")
|
2020-04-25 03:13:36 -05:00
|
|
|
policy = self._get_param("policy")
|
2021-07-26 16:21:17 +02:00
|
|
|
minimum_compression_size = self._get_param("minimumCompressionSize")
|
2020-02-03 10:21:22 -06:00
|
|
|
|
|
|
|
# Param validation
|
2021-05-23 09:09:02 -07:00
|
|
|
response = self.__validate_api_key_source(api_key_source)
|
|
|
|
if response is not None:
|
|
|
|
return response
|
2020-02-03 10:21:22 -06:00
|
|
|
|
2021-05-23 09:09:02 -07:00
|
|
|
response = self.__validate_endpoint_configuration(endpoint_configuration)
|
|
|
|
if response is not None:
|
|
|
|
return response
|
2020-02-03 10:21:22 -06:00
|
|
|
|
|
|
|
rest_api = self.backend.create_rest_api(
|
|
|
|
name,
|
|
|
|
description,
|
|
|
|
api_key_source=api_key_source,
|
|
|
|
endpoint_configuration=endpoint_configuration,
|
|
|
|
tags=tags,
|
2020-04-25 03:13:36 -05:00
|
|
|
policy=policy,
|
2021-07-26 16:21:17 +02:00
|
|
|
minimum_compression_size=minimum_compression_size,
|
2020-02-03 10:21:22 -06:00
|
|
|
)
|
2017-02-16 22:51:04 -05:00
|
|
|
return 200, {}, json.dumps(rest_api.to_dict())
|
2016-03-01 12:03:59 -05:00
|
|
|
|
2021-05-23 09:09:02 -07:00
|
|
|
def __validte_rest_patch_operations(self, patch_operations):
|
|
|
|
for op in patch_operations:
|
|
|
|
path = op["path"]
|
|
|
|
if "apiKeySource" in path:
|
2021-09-18 13:17:42 -07:00
|
|
|
value = op["value"]
|
2021-05-23 09:09:02 -07:00
|
|
|
return self.__validate_api_key_source(value)
|
|
|
|
|
2016-03-01 12:03:59 -05:00
|
|
|
def restapis_individual(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
2016-03-01 18:50:06 -05:00
|
|
|
function_id = self.path.replace("/restapis/", "", 1).split("/")[0]
|
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "GET":
|
2016-03-01 12:03:59 -05:00
|
|
|
rest_api = self.backend.get_rest_api(function_id)
|
2019-10-31 08:44:26 -07:00
|
|
|
elif self.method == "DELETE":
|
2016-03-01 12:03:59 -05:00
|
|
|
rest_api = self.backend.delete_rest_api(function_id)
|
2021-05-23 09:09:02 -07:00
|
|
|
elif self.method == "PATCH":
|
|
|
|
patch_operations = self._get_param("patchOperations")
|
|
|
|
response = self.__validte_rest_patch_operations(patch_operations)
|
|
|
|
if response is not None:
|
|
|
|
return response
|
2022-02-18 22:31:33 -01:00
|
|
|
rest_api = self.backend.update_rest_api(function_id, patch_operations)
|
2021-05-23 09:09:02 -07:00
|
|
|
|
|
|
|
return 200, {}, json.dumps(rest_api.to_dict())
|
2016-03-01 18:50:06 -05:00
|
|
|
|
|
|
|
def resources(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
function_id = self.path.replace("/restapis/", "", 1).split("/")[0]
|
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "GET":
|
2016-03-01 18:50:06 -05:00
|
|
|
resources = self.backend.list_resources(function_id)
|
2019-10-31 08:44:26 -07:00
|
|
|
return (
|
|
|
|
200,
|
|
|
|
{},
|
|
|
|
json.dumps({"item": [resource.to_dict() for resource in resources]}),
|
|
|
|
)
|
2016-03-01 18:50:06 -05:00
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
def gateway_response(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
if request.method == "PUT":
|
|
|
|
return self.put_gateway_response()
|
|
|
|
elif request.method == "GET":
|
|
|
|
return self.get_gateway_response()
|
|
|
|
elif request.method == "DELETE":
|
|
|
|
return self.delete_gateway_response()
|
|
|
|
|
|
|
|
def gateway_responses(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
if request.method == "GET":
|
|
|
|
return self.get_gateway_responses()
|
|
|
|
|
2016-03-01 18:50:06 -05:00
|
|
|
def resource_individual(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
function_id = self.path.replace("/restapis/", "", 1).split("/")[0]
|
|
|
|
resource_id = self.path.split("/")[-1]
|
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
resource = self.backend.get_resource(function_id, resource_id)
|
|
|
|
elif self.method == "POST":
|
|
|
|
path_part = self._get_param("pathPart")
|
|
|
|
resource = self.backend.create_resource(function_id, resource_id, path_part)
|
|
|
|
elif self.method == "DELETE":
|
|
|
|
resource = self.backend.delete_resource(function_id, resource_id)
|
|
|
|
return 200, {}, json.dumps(resource.to_dict())
|
2016-03-01 18:50:06 -05:00
|
|
|
|
|
|
|
def resource_methods(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
function_id = url_path_parts[2]
|
|
|
|
resource_id = url_path_parts[4]
|
|
|
|
method_type = url_path_parts[6]
|
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "GET":
|
2022-02-18 22:31:33 -01:00
|
|
|
method = self.backend.get_method(function_id, resource_id, method_type)
|
|
|
|
return 200, {}, json.dumps(method)
|
2019-10-31 08:44:26 -07:00
|
|
|
elif self.method == "PUT":
|
2016-03-01 18:50:06 -05:00
|
|
|
authorization_type = self._get_param("authorizationType")
|
2020-02-14 12:26:27 -06:00
|
|
|
api_key_required = self._get_param("apiKeyRequired")
|
2021-07-26 16:21:17 +02:00
|
|
|
request_models = self._get_param("requestModels")
|
|
|
|
operation_name = self._get_param("operationName")
|
|
|
|
authorizer_id = self._get_param("authorizerId")
|
|
|
|
authorization_scopes = self._get_param("authorizationScopes")
|
|
|
|
request_validator_id = self._get_param("requestValidatorId")
|
2021-11-22 16:05:19 -01:00
|
|
|
method = self.backend.put_method(
|
2020-02-14 12:26:27 -06:00
|
|
|
function_id,
|
|
|
|
resource_id,
|
|
|
|
method_type,
|
|
|
|
authorization_type,
|
|
|
|
api_key_required,
|
2021-07-26 16:21:17 +02:00
|
|
|
request_models=request_models,
|
|
|
|
operation_name=operation_name,
|
|
|
|
authorizer_id=authorizer_id,
|
|
|
|
authorization_scopes=authorization_scopes,
|
|
|
|
request_validator_id=request_validator_id,
|
2019-10-31 08:44:26 -07:00
|
|
|
)
|
2017-02-16 22:51:04 -05:00
|
|
|
return 200, {}, json.dumps(method)
|
2016-03-01 18:50:06 -05:00
|
|
|
|
2021-07-26 16:21:17 +02:00
|
|
|
elif self.method == "DELETE":
|
|
|
|
self.backend.delete_method(function_id, resource_id, method_type)
|
|
|
|
return 200, {}, ""
|
|
|
|
|
|
|
|
elif self.method == "PATCH":
|
|
|
|
patch_operations = self._get_param("patchOperations")
|
|
|
|
self.backend.update_method(
|
|
|
|
function_id, resource_id, method_type, patch_operations
|
|
|
|
)
|
|
|
|
|
|
|
|
return 200, {}, ""
|
|
|
|
|
2016-03-01 18:50:06 -05:00
|
|
|
def resource_method_responses(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
function_id = url_path_parts[2]
|
|
|
|
resource_id = url_path_parts[4]
|
|
|
|
method_type = url_path_parts[6]
|
|
|
|
response_code = url_path_parts[8]
|
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "GET":
|
2017-02-23 21:37:43 -05:00
|
|
|
method_response = self.backend.get_method_response(
|
2019-10-31 08:44:26 -07:00
|
|
|
function_id, resource_id, method_type, response_code
|
|
|
|
)
|
|
|
|
elif self.method == "PUT":
|
2021-07-26 16:21:17 +02:00
|
|
|
response_models = self._get_param("responseModels")
|
|
|
|
response_parameters = self._get_param("responseParameters")
|
2021-11-22 16:05:19 -01:00
|
|
|
method_response = self.backend.put_method_response(
|
2021-07-26 16:21:17 +02:00
|
|
|
function_id,
|
|
|
|
resource_id,
|
|
|
|
method_type,
|
|
|
|
response_code,
|
|
|
|
response_models,
|
|
|
|
response_parameters,
|
2019-10-31 08:44:26 -07:00
|
|
|
)
|
|
|
|
elif self.method == "DELETE":
|
2017-02-23 21:37:43 -05:00
|
|
|
method_response = self.backend.delete_method_response(
|
2019-10-31 08:44:26 -07:00
|
|
|
function_id, resource_id, method_type, response_code
|
|
|
|
)
|
2021-07-26 16:21:17 +02:00
|
|
|
elif self.method == "PATCH":
|
|
|
|
patch_operations = self._get_param("patchOperations")
|
|
|
|
method_response = self.backend.update_method_response(
|
|
|
|
function_id, resource_id, method_type, response_code, patch_operations
|
|
|
|
)
|
|
|
|
else:
|
|
|
|
raise Exception('Unexpected HTTP method "%s"' % self.method)
|
2017-02-16 22:51:04 -05:00
|
|
|
return 200, {}, json.dumps(method_response)
|
2016-03-04 18:02:07 -05:00
|
|
|
|
2020-02-18 10:49:35 -06:00
|
|
|
def restapis_authorizers(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
restapi_id = url_path_parts[2]
|
|
|
|
|
|
|
|
if self.method == "POST":
|
|
|
|
name = self._get_param("name")
|
|
|
|
authorizer_type = self._get_param("type")
|
|
|
|
|
2021-02-15 09:39:35 +00:00
|
|
|
provider_arns = self._get_param("providerARNs")
|
|
|
|
auth_type = self._get_param("authType")
|
|
|
|
authorizer_uri = self._get_param("authorizerUri")
|
|
|
|
authorizer_credentials = self._get_param("authorizerCredentials")
|
|
|
|
identity_source = self._get_param("identitySource")
|
|
|
|
identiy_validation_expression = self._get_param(
|
|
|
|
"identityValidationExpression"
|
2020-02-18 10:49:35 -06:00
|
|
|
)
|
2021-02-15 09:39:35 +00:00
|
|
|
authorizer_result_ttl = self._get_param(
|
|
|
|
"authorizerResultTtlInSeconds", if_none=300
|
2020-02-18 10:49:35 -06:00
|
|
|
)
|
|
|
|
|
|
|
|
# Param validation
|
|
|
|
if authorizer_type and authorizer_type not in AUTHORIZER_TYPES:
|
|
|
|
return self.error(
|
|
|
|
"ValidationException",
|
|
|
|
(
|
|
|
|
"1 validation error detected: "
|
|
|
|
"Value '{authorizer_type}' at 'createAuthorizerInput.type' failed "
|
|
|
|
"to satisfy constraint: Member must satisfy enum value set: "
|
|
|
|
"[TOKEN, REQUEST, COGNITO_USER_POOLS]"
|
|
|
|
).format(authorizer_type=authorizer_type),
|
|
|
|
)
|
|
|
|
|
|
|
|
authorizer_response = self.backend.create_authorizer(
|
2021-12-01 22:06:58 -01:00
|
|
|
restapi_id=restapi_id,
|
|
|
|
name=name,
|
|
|
|
authorizer_type=authorizer_type,
|
2020-02-18 10:49:35 -06:00
|
|
|
provider_arns=provider_arns,
|
|
|
|
auth_type=auth_type,
|
|
|
|
authorizer_uri=authorizer_uri,
|
|
|
|
authorizer_credentials=authorizer_credentials,
|
|
|
|
identity_source=identity_source,
|
|
|
|
identiy_validation_expression=identiy_validation_expression,
|
|
|
|
authorizer_result_ttl=authorizer_result_ttl,
|
|
|
|
)
|
|
|
|
elif self.method == "GET":
|
|
|
|
authorizers = self.backend.get_authorizers(restapi_id)
|
|
|
|
return 200, {}, json.dumps({"item": authorizers})
|
|
|
|
|
|
|
|
return 200, {}, json.dumps(authorizer_response)
|
|
|
|
|
2021-09-22 09:34:20 -07:00
|
|
|
def request_validators(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
restapi_id = url_path_parts[2]
|
2021-09-25 16:20:33 +00:00
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
validators = self.backend.get_request_validators(restapi_id)
|
|
|
|
res = json.dumps(
|
|
|
|
{"item": [validator.to_dict() for validator in validators]}
|
|
|
|
)
|
|
|
|
return 200, {}, res
|
|
|
|
if self.method == "POST":
|
|
|
|
name = self._get_param("name")
|
|
|
|
body = self._get_bool_param("validateRequestBody")
|
|
|
|
params = self._get_bool_param("validateRequestParameters")
|
|
|
|
validator = self.backend.create_request_validator(
|
|
|
|
restapi_id, name, body, params
|
|
|
|
)
|
|
|
|
return 200, {}, json.dumps(validator)
|
2021-09-22 09:34:20 -07:00
|
|
|
|
|
|
|
def request_validator_individual(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
restapi_id = url_path_parts[2]
|
|
|
|
validator_id = url_path_parts[4]
|
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
validator = self.backend.get_request_validator(restapi_id, validator_id)
|
|
|
|
return 200, {}, json.dumps(validator)
|
|
|
|
if self.method == "DELETE":
|
|
|
|
self.backend.delete_request_validator(restapi_id, validator_id)
|
|
|
|
return 202, {}, ""
|
|
|
|
if self.method == "PATCH":
|
|
|
|
patch_operations = self._get_param("patchOperations")
|
|
|
|
validator = self.backend.update_request_validator(
|
|
|
|
restapi_id, validator_id, patch_operations
|
|
|
|
)
|
|
|
|
return 200, {}, json.dumps(validator)
|
|
|
|
|
2020-02-18 10:49:35 -06:00
|
|
|
def authorizers(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
restapi_id = url_path_parts[2]
|
|
|
|
authorizer_id = url_path_parts[4]
|
|
|
|
|
|
|
|
if self.method == "GET":
|
2022-02-18 22:31:33 -01:00
|
|
|
authorizer_response = self.backend.get_authorizer(restapi_id, authorizer_id)
|
2020-02-18 10:49:35 -06:00
|
|
|
elif self.method == "PATCH":
|
|
|
|
patch_operations = self._get_param("patchOperations")
|
|
|
|
authorizer_response = self.backend.update_authorizer(
|
|
|
|
restapi_id, authorizer_id, patch_operations
|
|
|
|
)
|
|
|
|
elif self.method == "DELETE":
|
|
|
|
self.backend.delete_authorizer(restapi_id, authorizer_id)
|
|
|
|
return 202, {}, "{}"
|
|
|
|
return 200, {}, json.dumps(authorizer_response)
|
|
|
|
|
2016-09-13 12:44:17 +01:00
|
|
|
def restapis_stages(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
function_id = url_path_parts[2]
|
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "POST":
|
2016-09-13 12:44:17 +01:00
|
|
|
stage_name = self._get_param("stageName")
|
|
|
|
deployment_id = self._get_param("deploymentId")
|
2021-02-15 09:39:35 +00:00
|
|
|
stage_variables = self._get_param("variables", if_none={})
|
|
|
|
description = self._get_param("description", if_none="")
|
|
|
|
cacheClusterEnabled = self._get_param("cacheClusterEnabled", if_none=False)
|
|
|
|
cacheClusterSize = self._get_param("cacheClusterSize")
|
2021-07-26 16:21:17 +02:00
|
|
|
tags = self._get_param("tags")
|
|
|
|
tracing_enabled = self._get_param("tracingEnabled")
|
2016-09-13 12:44:17 +01:00
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
stage_response = self.backend.create_stage(
|
|
|
|
function_id,
|
|
|
|
stage_name,
|
|
|
|
deployment_id,
|
|
|
|
variables=stage_variables,
|
|
|
|
description=description,
|
|
|
|
cacheClusterEnabled=cacheClusterEnabled,
|
|
|
|
cacheClusterSize=cacheClusterSize,
|
2021-07-26 16:21:17 +02:00
|
|
|
tags=tags,
|
|
|
|
tracing_enabled=tracing_enabled,
|
2019-10-31 08:44:26 -07:00
|
|
|
)
|
|
|
|
elif self.method == "GET":
|
2016-09-13 12:44:17 +01:00
|
|
|
stages = self.backend.get_stages(function_id)
|
2017-02-16 22:51:04 -05:00
|
|
|
return 200, {}, json.dumps({"item": stages})
|
2016-09-13 12:44:17 +01:00
|
|
|
|
2017-02-16 22:51:04 -05:00
|
|
|
return 200, {}, json.dumps(stage_response)
|
2016-09-13 12:44:17 +01:00
|
|
|
|
2021-09-04 23:35:39 +05:30
|
|
|
def restapis_stages_tags(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
function_id = url_path_parts[4]
|
|
|
|
stage_name = url_path_parts[6]
|
|
|
|
if self.method == "PUT":
|
|
|
|
tags = self._get_param("tags")
|
|
|
|
if tags:
|
|
|
|
stage = self.backend.get_stage(function_id, stage_name)
|
|
|
|
stage["tags"] = merge_multiple_dicts(stage.get("tags"), tags)
|
|
|
|
return 200, {}, json.dumps({"item": tags})
|
|
|
|
if self.method == "DELETE":
|
|
|
|
stage = self.backend.get_stage(function_id, stage_name)
|
|
|
|
for tag in stage.get("tags").copy():
|
|
|
|
if tag in self.querystring.get("tagKeys"):
|
|
|
|
stage["tags"].pop(tag, None)
|
|
|
|
return 200, {}, json.dumps({"item": ""})
|
|
|
|
|
2016-08-11 16:14:13 +10:00
|
|
|
def stages(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
function_id = url_path_parts[2]
|
|
|
|
stage_name = url_path_parts[4]
|
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
stage_response = self.backend.get_stage(function_id, stage_name)
|
2021-07-28 11:17:15 +01:00
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
elif self.method == "PATCH":
|
|
|
|
patch_operations = self._get_param("patchOperations")
|
|
|
|
stage_response = self.backend.update_stage(
|
|
|
|
function_id, stage_name, patch_operations
|
|
|
|
)
|
|
|
|
elif self.method == "DELETE":
|
|
|
|
self.backend.delete_stage(function_id, stage_name)
|
|
|
|
return 202, {}, "{}"
|
|
|
|
return 200, {}, json.dumps(stage_response)
|
2016-08-11 16:14:13 +10:00
|
|
|
|
2016-03-04 18:02:07 -05:00
|
|
|
def integrations(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
function_id = url_path_parts[2]
|
|
|
|
resource_id = url_path_parts[4]
|
|
|
|
method_type = url_path_parts[6]
|
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
integration_response = {}
|
2021-07-26 16:21:17 +02:00
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
integration_response = self.backend.get_integration(
|
|
|
|
function_id, resource_id, method_type
|
|
|
|
)
|
|
|
|
elif self.method == "PUT":
|
|
|
|
integration_type = self._get_param("type")
|
|
|
|
uri = self._get_param("uri")
|
|
|
|
credentials = self._get_param("credentials")
|
|
|
|
request_templates = self._get_param("requestTemplates")
|
|
|
|
tls_config = self._get_param("tlsConfig")
|
|
|
|
cache_namespace = self._get_param("cacheNamespace")
|
|
|
|
timeout_in_millis = self._get_param("timeoutInMillis")
|
|
|
|
self.backend.get_method(function_id, resource_id, method_type)
|
|
|
|
|
|
|
|
integration_http_method = self._get_param(
|
|
|
|
"httpMethod"
|
|
|
|
) # default removed because it's a required parameter
|
|
|
|
|
|
|
|
integration_response = self.backend.put_integration(
|
|
|
|
function_id,
|
|
|
|
resource_id,
|
|
|
|
method_type,
|
|
|
|
integration_type,
|
|
|
|
uri,
|
|
|
|
credentials=credentials,
|
|
|
|
integration_method=integration_http_method,
|
|
|
|
request_templates=request_templates,
|
|
|
|
tls_config=tls_config,
|
|
|
|
cache_namespace=cache_namespace,
|
|
|
|
timeout_in_millis=timeout_in_millis,
|
|
|
|
)
|
|
|
|
elif self.method == "DELETE":
|
|
|
|
integration_response = self.backend.delete_integration(
|
|
|
|
function_id, resource_id, method_type
|
|
|
|
)
|
2021-07-26 16:21:17 +02:00
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
return 200, {}, json.dumps(integration_response)
|
2016-03-05 09:48:37 -05:00
|
|
|
|
|
|
|
def integration_responses(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
function_id = url_path_parts[2]
|
|
|
|
resource_id = url_path_parts[4]
|
|
|
|
method_type = url_path_parts[6]
|
|
|
|
status_code = url_path_parts[9]
|
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
integration_response = self.backend.get_integration_response(
|
|
|
|
function_id, resource_id, method_type, status_code
|
|
|
|
)
|
|
|
|
elif self.method == "PUT":
|
|
|
|
if not self.body:
|
|
|
|
raise InvalidRequestInput()
|
|
|
|
|
|
|
|
selection_pattern = self._get_param("selectionPattern")
|
|
|
|
response_templates = self._get_param("responseTemplates")
|
|
|
|
content_handling = self._get_param("contentHandling")
|
|
|
|
integration_response = self.backend.put_integration_response(
|
|
|
|
function_id,
|
|
|
|
resource_id,
|
|
|
|
method_type,
|
|
|
|
status_code,
|
|
|
|
selection_pattern,
|
|
|
|
response_templates,
|
|
|
|
content_handling,
|
|
|
|
)
|
|
|
|
elif self.method == "DELETE":
|
|
|
|
integration_response = self.backend.delete_integration_response(
|
|
|
|
function_id, resource_id, method_type, status_code
|
|
|
|
)
|
|
|
|
return 200, {}, json.dumps(integration_response)
|
2016-03-04 18:35:03 -05:00
|
|
|
|
|
|
|
def deployments(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
function_id = self.path.replace("/restapis/", "", 1).split("/")[0]
|
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
deployments = self.backend.get_deployments(function_id)
|
|
|
|
return 200, {}, json.dumps({"item": deployments})
|
|
|
|
elif self.method == "POST":
|
|
|
|
name = self._get_param("stageName")
|
|
|
|
description = self._get_param("description")
|
|
|
|
stage_variables = self._get_param("variables", if_none={})
|
|
|
|
deployment = self.backend.create_deployment(
|
|
|
|
function_id, name, description, stage_variables
|
|
|
|
)
|
|
|
|
return 200, {}, json.dumps(deployment)
|
2016-03-04 18:35:03 -05:00
|
|
|
|
|
|
|
def individual_deployment(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
function_id = url_path_parts[2]
|
|
|
|
deployment_id = url_path_parts[4]
|
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "GET":
|
|
|
|
deployment = self.backend.get_deployment(function_id, deployment_id)
|
2022-02-18 22:31:33 -01:00
|
|
|
return 200, {}, json.dumps(deployment)
|
2019-10-31 08:44:26 -07:00
|
|
|
elif self.method == "DELETE":
|
|
|
|
deployment = self.backend.delete_deployment(function_id, deployment_id)
|
2022-02-18 22:31:33 -01:00
|
|
|
return 202, {}, json.dumps(deployment)
|
2018-03-21 17:11:49 +01:00
|
|
|
|
|
|
|
def apikeys(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "POST":
|
2022-02-18 22:31:33 -01:00
|
|
|
apikey_response = self.backend.create_api_key(json.loads(self.body))
|
2020-07-15 20:21:11 +09:00
|
|
|
return 201, {}, json.dumps(apikey_response)
|
2021-02-15 09:39:35 +00:00
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
elif self.method == "GET":
|
2021-02-15 09:39:35 +00:00
|
|
|
include_values = self._get_bool_param("includeValues")
|
2021-02-26 18:48:05 +00:00
|
|
|
apikeys_response = self.backend.get_api_keys(include_values=include_values)
|
2018-03-21 17:11:49 +01:00
|
|
|
return 200, {}, json.dumps({"item": apikeys_response})
|
|
|
|
|
|
|
|
def apikey_individual(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
apikey = url_path_parts[2]
|
|
|
|
|
2020-07-15 17:41:41 +09:00
|
|
|
status_code = 200
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "GET":
|
2021-02-15 09:39:35 +00:00
|
|
|
include_value = self._get_bool_param("includeValue")
|
2022-02-18 22:31:33 -01:00
|
|
|
apikey_response = self.backend.get_api_key(
|
|
|
|
apikey, include_value=include_value
|
|
|
|
)
|
2019-10-31 08:44:26 -07:00
|
|
|
elif self.method == "PATCH":
|
|
|
|
patch_operations = self._get_param("patchOperations")
|
2021-02-26 18:48:05 +00:00
|
|
|
apikey_response = self.backend.update_api_key(apikey, patch_operations)
|
2019-10-31 08:44:26 -07:00
|
|
|
elif self.method == "DELETE":
|
2021-02-26 18:48:05 +00:00
|
|
|
apikey_response = self.backend.delete_api_key(apikey)
|
2020-07-15 17:41:41 +09:00
|
|
|
status_code = 202
|
|
|
|
|
|
|
|
return status_code, {}, json.dumps(apikey_response)
|
2018-07-10 14:58:02 +01:00
|
|
|
|
|
|
|
def usage_plans(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "POST":
|
2018-07-10 14:58:02 +01:00
|
|
|
usage_plan_response = self.backend.create_usage_plan(json.loads(self.body))
|
2019-10-31 08:44:26 -07:00
|
|
|
elif self.method == "GET":
|
2018-10-17 13:44:00 +01:00
|
|
|
api_key_id = self.querystring.get("keyId", [None])[0]
|
|
|
|
usage_plans_response = self.backend.get_usage_plans(api_key_id=api_key_id)
|
2018-07-10 14:58:02 +01:00
|
|
|
return 200, {}, json.dumps({"item": usage_plans_response})
|
|
|
|
return 200, {}, json.dumps(usage_plan_response)
|
|
|
|
|
|
|
|
def usage_plan_individual(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
usage_plan = url_path_parts[2]
|
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "GET":
|
2022-02-18 22:31:33 -01:00
|
|
|
usage_plan_response = self.backend.get_usage_plan(usage_plan)
|
2019-10-31 08:44:26 -07:00
|
|
|
elif self.method == "DELETE":
|
2018-07-10 14:58:02 +01:00
|
|
|
usage_plan_response = self.backend.delete_usage_plan(usage_plan)
|
2021-02-24 23:46:11 -08:00
|
|
|
elif self.method == "PATCH":
|
|
|
|
patch_operations = self._get_param("patchOperations")
|
|
|
|
usage_plan_response = self.backend.update_usage_plan(
|
|
|
|
usage_plan, patch_operations
|
|
|
|
)
|
2018-07-10 14:58:02 +01:00
|
|
|
return 200, {}, json.dumps(usage_plan_response)
|
2018-07-11 17:17:58 +01:00
|
|
|
|
|
|
|
def usage_plan_keys(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
usage_plan_id = url_path_parts[2]
|
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "POST":
|
2022-02-18 22:31:33 -01:00
|
|
|
usage_plan_response = self.backend.create_usage_plan_key(
|
|
|
|
usage_plan_id, json.loads(self.body)
|
|
|
|
)
|
2020-07-15 22:01:03 +09:00
|
|
|
return 201, {}, json.dumps(usage_plan_response)
|
2019-10-31 08:44:26 -07:00
|
|
|
elif self.method == "GET":
|
2018-07-11 17:17:58 +01:00
|
|
|
usage_plans_response = self.backend.get_usage_plan_keys(usage_plan_id)
|
|
|
|
return 200, {}, json.dumps({"item": usage_plans_response})
|
|
|
|
|
|
|
|
def usage_plan_key_individual(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
usage_plan_id = url_path_parts[2]
|
|
|
|
key_id = url_path_parts[4]
|
|
|
|
|
2019-10-31 08:44:26 -07:00
|
|
|
if self.method == "GET":
|
2022-02-18 22:31:33 -01:00
|
|
|
usage_plan_response = self.backend.get_usage_plan_key(usage_plan_id, key_id)
|
2019-10-31 08:44:26 -07:00
|
|
|
elif self.method == "DELETE":
|
|
|
|
usage_plan_response = self.backend.delete_usage_plan_key(
|
|
|
|
usage_plan_id, key_id
|
|
|
|
)
|
2018-07-11 17:17:58 +01:00
|
|
|
return 200, {}, json.dumps(usage_plan_response)
|
2020-04-08 03:18:42 +05:30
|
|
|
|
|
|
|
def domain_names(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
domain_names = self.backend.get_domain_names()
|
|
|
|
return 200, {}, json.dumps({"item": domain_names})
|
2020-04-08 21:54:26 +05:30
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
elif self.method == "POST":
|
|
|
|
domain_name = self._get_param("domainName")
|
|
|
|
certificate_name = self._get_param("certificateName")
|
|
|
|
tags = self._get_param("tags")
|
|
|
|
certificate_arn = self._get_param("certificateArn")
|
|
|
|
certificate_body = self._get_param("certificateBody")
|
|
|
|
certificate_private_key = self._get_param("certificatePrivateKey")
|
|
|
|
certificate_chain = self._get_param("certificateChain")
|
|
|
|
regional_certificate_name = self._get_param("regionalCertificateName")
|
|
|
|
regional_certificate_arn = self._get_param("regionalCertificateArn")
|
|
|
|
endpoint_configuration = self._get_param("endpointConfiguration")
|
|
|
|
security_policy = self._get_param("securityPolicy")
|
|
|
|
generate_cli_skeleton = self._get_param("generateCliSkeleton")
|
|
|
|
domain_name_resp = self.backend.create_domain_name(
|
|
|
|
domain_name,
|
|
|
|
certificate_name,
|
|
|
|
tags,
|
|
|
|
certificate_arn,
|
|
|
|
certificate_body,
|
|
|
|
certificate_private_key,
|
|
|
|
certificate_chain,
|
|
|
|
regional_certificate_name,
|
|
|
|
regional_certificate_arn,
|
|
|
|
endpoint_configuration,
|
|
|
|
security_policy,
|
|
|
|
generate_cli_skeleton,
|
2020-04-08 03:18:42 +05:30
|
|
|
)
|
2022-02-18 22:31:33 -01:00
|
|
|
return 200, {}, json.dumps(domain_name_resp)
|
2020-04-08 03:18:42 +05:30
|
|
|
|
|
|
|
def domain_name_induvidual(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
domain_name = url_path_parts[2]
|
2020-04-08 22:04:48 +05:30
|
|
|
domain_names = {}
|
2020-04-12 17:49:22 +05:30
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
if domain_name is not None:
|
|
|
|
domain_names = self.backend.get_domain_name(domain_name)
|
|
|
|
elif self.method == "DELETE":
|
|
|
|
if domain_name is not None:
|
|
|
|
self.backend.delete_domain_name(domain_name)
|
|
|
|
elif self.method == "PATCH":
|
|
|
|
if domain_name is not None:
|
|
|
|
patch_operations = self._get_param("patchOperations")
|
|
|
|
self.backend.update_domain_name(domain_name, patch_operations)
|
|
|
|
else:
|
|
|
|
msg = 'Method "%s" for API GW domain names not implemented' % self.method
|
|
|
|
return 404, {}, json.dumps({"error": msg})
|
|
|
|
return 200, {}, json.dumps(domain_names)
|
|
|
|
|
2020-04-14 08:06:00 +01:00
|
|
|
def models(self, request, full_url, headers):
|
2020-04-12 17:49:22 +05:30
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
rest_api_id = self.path.replace("/restapis/", "", 1).split("/")[0]
|
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
models = self.backend.get_models(rest_api_id)
|
|
|
|
return 200, {}, json.dumps({"item": models})
|
2020-04-12 17:49:22 +05:30
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
elif self.method == "POST":
|
|
|
|
name = self._get_param("name")
|
|
|
|
description = self._get_param("description")
|
|
|
|
schema = self._get_param("schema")
|
|
|
|
content_type = self._get_param("contentType")
|
|
|
|
cli_input_json = self._get_param("cliInputJson")
|
|
|
|
generate_cli_skeleton = self._get_param("generateCliSkeleton")
|
|
|
|
model = self.backend.create_model(
|
|
|
|
rest_api_id,
|
|
|
|
name,
|
|
|
|
content_type,
|
|
|
|
description,
|
|
|
|
schema,
|
|
|
|
cli_input_json,
|
|
|
|
generate_cli_skeleton,
|
2020-04-12 18:10:23 +05:30
|
|
|
)
|
2020-04-12 17:49:22 +05:30
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
return 200, {}, json.dumps(model)
|
|
|
|
|
2020-04-12 17:49:22 +05:30
|
|
|
def model_induvidual(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
rest_api_id = url_path_parts[2]
|
|
|
|
model_name = url_path_parts[4]
|
|
|
|
model_info = {}
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
model_info = self.backend.get_model(rest_api_id, model_name)
|
|
|
|
return 200, {}, json.dumps(model_info)
|
2021-10-27 19:48:32 +09:00
|
|
|
|
|
|
|
def base_path_mappings(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
domain_name = url_path_parts[2]
|
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
base_path_mappings = self.backend.get_base_path_mappings(domain_name)
|
|
|
|
return 200, {}, json.dumps({"item": base_path_mappings})
|
|
|
|
elif self.method == "POST":
|
|
|
|
base_path = self._get_param("basePath")
|
|
|
|
rest_api_id = self._get_param("restApiId")
|
|
|
|
stage = self._get_param("stage")
|
|
|
|
|
|
|
|
base_path_mapping_resp = self.backend.create_base_path_mapping(
|
2022-03-10 13:39:59 -01:00
|
|
|
domain_name, rest_api_id, base_path, stage
|
2022-02-18 22:31:33 -01:00
|
|
|
)
|
|
|
|
return 201, {}, json.dumps(base_path_mapping_resp)
|
2021-11-06 19:52:27 +09:00
|
|
|
|
|
|
|
def base_path_mapping_individual(self, request, full_url, headers):
|
|
|
|
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
domain_name = url_path_parts[2]
|
|
|
|
base_path = unquote(url_path_parts[4])
|
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "GET":
|
|
|
|
base_path_mapping = self.backend.get_base_path_mapping(
|
|
|
|
domain_name, base_path
|
|
|
|
)
|
2021-12-30 19:52:57 +09:00
|
|
|
return 200, {}, json.dumps(base_path_mapping)
|
2022-02-18 22:31:33 -01:00
|
|
|
elif self.method == "DELETE":
|
|
|
|
self.backend.delete_base_path_mapping(domain_name, base_path)
|
|
|
|
return 202, {}, ""
|
|
|
|
elif self.method == "PATCH":
|
|
|
|
patch_operations = self._get_param("patchOperations")
|
|
|
|
base_path_mapping = self.backend.update_base_path_mapping(
|
|
|
|
domain_name, base_path, patch_operations
|
|
|
|
)
|
|
|
|
return 200, {}, json.dumps(base_path_mapping)
|
2022-02-08 20:12:51 -01:00
|
|
|
|
|
|
|
def vpc_link(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
url_path_parts = self.path.split("/")
|
|
|
|
vpc_link_id = url_path_parts[-1]
|
|
|
|
|
2022-02-18 22:31:33 -01:00
|
|
|
if self.method == "DELETE":
|
|
|
|
self.backend.delete_vpc_link(vpc_link_id=vpc_link_id)
|
|
|
|
return 200, {}, "{}"
|
|
|
|
if self.method == "GET":
|
|
|
|
vpc_link = self.backend.get_vpc_link(vpc_link_id=vpc_link_id)
|
|
|
|
return 200, {}, json.dumps(vpc_link)
|
2022-02-08 20:12:51 -01:00
|
|
|
|
|
|
|
def vpc_links(self, request, full_url, headers):
|
|
|
|
self.setup_class(request, full_url, headers)
|
|
|
|
|
|
|
|
if self.method == "GET":
|
|
|
|
vpc_links = self.backend.get_vpc_links()
|
|
|
|
return 200, {}, json.dumps({"item": vpc_links})
|
|
|
|
if self.method == "POST":
|
|
|
|
name = self._get_param("name")
|
|
|
|
description = self._get_param("description")
|
|
|
|
target_arns = self._get_param("targetArns")
|
|
|
|
tags = self._get_param("tags")
|
|
|
|
vpc_link = self.backend.create_vpc_link(
|
|
|
|
name=name, description=description, target_arns=target_arns, tags=tags
|
|
|
|
)
|
|
|
|
return 200, {}, json.dumps(vpc_link)
|
2022-02-18 22:31:33 -01:00
|
|
|
|
|
|
|
def put_gateway_response(self):
|
|
|
|
rest_api_id = self.path.split("/")[-3]
|
|
|
|
response_type = self.path.split("/")[-1]
|
|
|
|
params = json.loads(self.body)
|
|
|
|
status_code = params.get("statusCode")
|
|
|
|
response_parameters = params.get("responseParameters")
|
|
|
|
response_templates = params.get("responseTemplates")
|
|
|
|
response = self.backend.put_gateway_response(
|
|
|
|
rest_api_id=rest_api_id,
|
|
|
|
response_type=response_type,
|
|
|
|
status_code=status_code,
|
|
|
|
response_parameters=response_parameters,
|
|
|
|
response_templates=response_templates,
|
|
|
|
)
|
|
|
|
return 200, {}, json.dumps(response)
|
|
|
|
|
|
|
|
def get_gateway_response(self):
|
|
|
|
rest_api_id = self.path.split("/")[-3]
|
|
|
|
response_type = self.path.split("/")[-1]
|
|
|
|
response = self.backend.get_gateway_response(
|
2022-03-10 13:39:59 -01:00
|
|
|
rest_api_id=rest_api_id, response_type=response_type
|
2022-02-18 22:31:33 -01:00
|
|
|
)
|
|
|
|
return 200, {}, json.dumps(response)
|
|
|
|
|
|
|
|
def get_gateway_responses(self):
|
|
|
|
rest_api_id = self.path.split("/")[-2]
|
2022-03-10 13:39:59 -01:00
|
|
|
responses = self.backend.get_gateway_responses(rest_api_id=rest_api_id)
|
2022-02-18 22:31:33 -01:00
|
|
|
return 200, {}, json.dumps(dict(item=responses))
|
|
|
|
|
|
|
|
def delete_gateway_response(self):
|
|
|
|
rest_api_id = self.path.split("/")[-3]
|
|
|
|
response_type = self.path.split("/")[-1]
|
|
|
|
self.backend.delete_gateway_response(
|
2022-03-10 13:39:59 -01:00
|
|
|
rest_api_id=rest_api_id, response_type=response_type
|
2022-02-18 22:31:33 -01:00
|
|
|
)
|
|
|
|
return 202, {}, json.dumps(dict())
|