Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix usage of a single object instances for multiple concurrent requests #70

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 13 additions & 12 deletions moto/amp/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,18 @@
]


response = PrometheusServiceResponse()


url_paths = {
"{0}/workspaces$": response.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)$": response.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/alias$": response.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/logging$": response.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/rulegroupsnamespaces$": response.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/rulegroupsnamespaces/(?P<name>[^/]+)$": response.dispatch,
"{0}/tags/(?P<resource_arn>[^/]+)$": response.dispatch,
"{0}/tags/(?P<arn_prefix>[^/]+)/(?P<workspace_id>[^/]+)$": response.tags,
"{0}/tags/(?P<arn_prefix>[^/]+)/(?P<workspace_id>[^/]+)/(?P<ns_name>[^/]+)$": response.tags,
"{0}/workspaces$": PrometheusServiceResponse.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)$": PrometheusServiceResponse.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/alias$": PrometheusServiceResponse.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/logging$": PrometheusServiceResponse.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/rulegroupsnamespaces$": PrometheusServiceResponse.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/rulegroupsnamespaces/(?P<name>[^/]+)$": PrometheusServiceResponse.dispatch,
"{0}/tags/(?P<resource_arn>[^/]+)$": PrometheusServiceResponse.dispatch,
"{0}/tags/(?P<arn_prefix>[^/]+)/(?P<workspace_id>[^/]+)$": PrometheusServiceResponse.method_dispatch(
PrometheusServiceResponse.tags # type: ignore
),
"{0}/tags/(?P<arn_prefix>[^/]+)/(?P<workspace_id>[^/]+)/(?P<ns_name>[^/]+)$": PrometheusServiceResponse.method_dispatch(
PrometheusServiceResponse.tags # type: ignore
),
}
136 changes: 99 additions & 37 deletions moto/apigateway/urls.py
Original file line number Diff line number Diff line change
@@ -1,46 +1,108 @@
from .responses import APIGatewayResponse
from ..apigatewayv2.urls import url_paths as url_paths_v2

response = APIGatewayResponse()

url_bases = [r"https?://apigateway\.(.+)\.amazonaws.com"]

url_paths = {
"{0}/restapis$": response.restapis,
"{0}/restapis/(?P<function_id>[^/]+)/?$": response.restapis_individual,
"{0}/restapis/(?P<function_id>[^/]+)/resources$": response.resources,
"{0}/restapis/(?P<function_id>[^/]+)/authorizers$": response.restapis_authorizers,
"{0}/restapis/(?P<function_id>[^/]+)/authorizers/(?P<authorizer_id>[^/]+)/?$": response.authorizers,
"{0}/restapis/(?P<function_id>[^/]+)/stages$": response.restapis_stages,
"{0}/tags/arn:aws:apigateway:(?P<region_name>[^/]+)::/restapis/(?P<function_id>[^/]+)/stages/(?P<stage_name>[^/]+)/?$": response.restapis_stages_tags,
"{0}/restapis/(?P<function_id>[^/]+)/stages/(?P<stage_name>[^/]+)/?$": response.stages,
"{0}/restapis/(?P<function_id>[^/]+)/stages/(?P<stage_name>[^/]+)/exports/(?P<export_type>[^/]+)/?$": response.export,
"{0}/restapis/(?P<function_id>[^/]+)/deployments$": response.deployments,
"{0}/restapis/(?P<function_id>[^/]+)/deployments/(?P<deployment_id>[^/]+)/?$": response.individual_deployment,
"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/?$": response.resource_individual,
"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/methods/(?P<method_name>[^/]+)/?$": response.resource_methods,
r"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/methods/(?P<method_name>[^/]+)/responses/(?P<status_code>\d+)$": response.resource_method_responses,
r"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/methods/(?P<method_name>[^/]+)/integration$": response.integrations,
r"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/methods/(?P<method_name>[^/]+)/integration/responses/(?P<status_code>\d+)$": response.integration_responses,
r"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/methods/(?P<method_name>[^/]+)/integration/responses/(?P<status_code>\d+)/$": response.integration_responses,
"{0}/apikeys$": response.apikeys,
"{0}/apikeys/(?P<apikey>[^/]+)": response.apikey_individual,
"{0}/usageplans$": response.usage_plans,
"{0}/domainnames$": response.domain_names,
"{0}/restapis/(?P<function_id>[^/]+)/models$": response.models,
"{0}/restapis/(?P<function_id>[^/]+)/models/(?P<model_name>[^/]+)/?$": response.model_induvidual,
"{0}/domainnames/(?P<domain_name>[^/]+)/?$": response.domain_name_induvidual,
"{0}/domainnames/(?P<domain_name>[^/]+)/basepathmappings$": response.base_path_mappings,
"{0}/domainnames/(?P<domain_name>[^/]+)/basepathmappings/(?P<base_path_mapping>[^/]+)$": response.base_path_mapping_individual,
"{0}/usageplans/(?P<usage_plan_id>[^/]+)/?$": response.usage_plan_individual,
"{0}/usageplans/(?P<usage_plan_id>[^/]+)/keys$": response.usage_plan_keys,
"{0}/usageplans/(?P<usage_plan_id>[^/]+)/keys/(?P<api_key_id>[^/]+)/?$": response.usage_plan_key_individual,
"{0}/restapis/(?P<function_id>[^/]+)/requestvalidators$": response.request_validators,
"{0}/restapis/(?P<api_id>[^/]+)/requestvalidators/(?P<validator_id>[^/]+)/?$": response.request_validator_individual,
"{0}/restapis/(?P<api_id>[^/]+)/gatewayresponses/?$": response.gateway_responses,
"{0}/restapis/(?P<api_id>[^/]+)/gatewayresponses/(?P<response_type>[^/]+)/?$": response.gateway_response,
"{0}/vpclinks$": response.vpc_links,
"{0}/vpclinks/(?P<vpclink_id>[^/]+)": response.vpc_link,
"{0}/restapis$": APIGatewayResponse.method_dispatch(APIGatewayResponse.restapis),
"{0}/restapis/(?P<function_id>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.restapis_individual
),
"{0}/restapis/(?P<function_id>[^/]+)/resources$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.resources
),
"{0}/restapis/(?P<function_id>[^/]+)/authorizers$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.restapis_authorizers
),
"{0}/restapis/(?P<function_id>[^/]+)/authorizers/(?P<authorizer_id>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.authorizers
),
"{0}/restapis/(?P<function_id>[^/]+)/stages$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.restapis_stages
),
"{0}/tags/arn:aws:apigateway:(?P<region_name>[^/]+)::/restapis/(?P<function_id>[^/]+)/stages/(?P<stage_name>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.restapis_stages_tags
),
"{0}/restapis/(?P<function_id>[^/]+)/stages/(?P<stage_name>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.stages
),
"{0}/restapis/(?P<function_id>[^/]+)/stages/(?P<stage_name>[^/]+)/exports/(?P<export_type>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.export
),
"{0}/restapis/(?P<function_id>[^/]+)/deployments$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.deployments
),
"{0}/restapis/(?P<function_id>[^/]+)/deployments/(?P<deployment_id>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.individual_deployment
),
"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.resource_individual
),
"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/methods/(?P<method_name>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.resource_methods
),
r"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/methods/(?P<method_name>[^/]+)/responses/(?P<status_code>\d+)$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.resource_method_responses
),
r"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/methods/(?P<method_name>[^/]+)/integration$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.integrations
),
r"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/methods/(?P<method_name>[^/]+)/integration/responses/(?P<status_code>\d+)$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.integration_responses
),
r"{0}/restapis/(?P<function_id>[^/]+)/resources/(?P<resource_id>[^/]+)/methods/(?P<method_name>[^/]+)/integration/responses/(?P<status_code>\d+)/$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.integration_responses
),
"{0}/apikeys$": APIGatewayResponse.method_dispatch(APIGatewayResponse.apikeys),
"{0}/apikeys/(?P<apikey>[^/]+)": APIGatewayResponse.method_dispatch(
APIGatewayResponse.apikey_individual
),
"{0}/usageplans$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.usage_plans
),
"{0}/domainnames$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.domain_names
),
"{0}/restapis/(?P<function_id>[^/]+)/models$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.models
),
"{0}/restapis/(?P<function_id>[^/]+)/models/(?P<model_name>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.model_induvidual
),
"{0}/domainnames/(?P<domain_name>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.domain_name_induvidual
),
"{0}/domainnames/(?P<domain_name>[^/]+)/basepathmappings$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.base_path_mappings
),
"{0}/domainnames/(?P<domain_name>[^/]+)/basepathmappings/(?P<base_path_mapping>[^/]+)$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.base_path_mapping_individual
),
"{0}/usageplans/(?P<usage_plan_id>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.usage_plan_individual
),
"{0}/usageplans/(?P<usage_plan_id>[^/]+)/keys$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.usage_plan_keys
),
"{0}/usageplans/(?P<usage_plan_id>[^/]+)/keys/(?P<api_key_id>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.usage_plan_key_individual
),
"{0}/restapis/(?P<function_id>[^/]+)/requestvalidators$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.request_validators
),
"{0}/restapis/(?P<api_id>[^/]+)/requestvalidators/(?P<validator_id>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.request_validator_individual
),
"{0}/restapis/(?P<api_id>[^/]+)/gatewayresponses/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.gateway_responses
),
"{0}/restapis/(?P<api_id>[^/]+)/gatewayresponses/(?P<response_type>[^/]+)/?$": APIGatewayResponse.method_dispatch(
APIGatewayResponse.gateway_response
),
"{0}/vpclinks$": APIGatewayResponse.method_dispatch(APIGatewayResponse.vpc_links),
"{0}/vpclinks/(?P<vpclink_id>[^/]+)": APIGatewayResponse.method_dispatch(
APIGatewayResponse.vpc_link
),
}

# Also manages the APIGatewayV2
Expand Down
109 changes: 79 additions & 30 deletions moto/apigatewayv2/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,84 @@
]


response_v2 = ApiGatewayV2Response()


url_paths = {
"{0}/v2/apis$": response_v2.apis,
"{0}/v2/apis/(?P<api_id>[^/]+)$": response_v2.api,
"{0}/v2/apis/(?P<api_id>[^/]+)/authorizers$": response_v2.authorizers,
"{0}/v2/apis/(?P<api_id>[^/]+)/authorizers/(?P<authorizer_id>[^/]+)$": response_v2.authorizer,
"{0}/v2/apis/(?P<api_id>[^/]+)/cors$": response_v2.cors,
"{0}/v2/apis/(?P<api_id>[^/]+)/integrations$": response_v2.integrations,
"{0}/v2/apis/(?P<api_id>[^/]+)/integrations/(?P<integration_id>[^/]+)$": response_v2.integration,
"{0}/v2/apis/(?P<api_id>[^/]+)/integrations/(?P<integration_id>[^/]+)/integrationresponses$": response_v2.integration_responses,
"{0}/v2/apis/(?P<api_id>[^/]+)/integrations/(?P<integration_id>[^/]+)/integrationresponses/(?P<integration_response_id>[^/]+)$": response_v2.integration_response,
"{0}/v2/apis/(?P<api_id>[^/]+)/models$": response_v2.models,
"{0}/v2/apis/(?P<api_id>[^/]+)/models/(?P<model_id>[^/]+)$": response_v2.model,
"{0}/v2/apis/(?P<api_id>[^/]+)/routes$": response_v2.routes,
"{0}/v2/apis/(?P<api_id>[^/]+)/routes/(?P<route_id>[^/]+)$": response_v2.route,
"{0}/v2/apis/(?P<api_id>[^/]+)/routes/(?P<route_id>[^/]+)/routeresponses$": response_v2.route_responses,
"{0}/v2/apis/(?P<api_id>[^/]+)/routes/(?P<route_id>[^/]+)/routeresponses/(?P<route_response_id>[^/]+)$": response_v2.route_response,
"{0}/v2/apis/(?P<api_id>[^/]+)/routes/(?P<route_id>[^/]+)/requestparameters/(?P<request_parameter>[^/]+)$": response_v2.route_request_parameter,
"{0}/v2/apis/(?P<api_id>[^/]+)/stages$": response_v2.stages,
"{0}/v2/apis/(?P<api_id>[^/]+)/stages/(?P<stage_name>[^/]+)$": response_v2.stage,
"{0}/v2/tags/(?P<resource_arn>[^/]+)$": response_v2.tags,
"{0}/v2/tags/(?P<resource_arn_pt1>[^/]+)/apis/(?P<resource_arn_pt2>[^/]+)$": response_v2.tags,
"{0}/v2/tags/(?P<resource_arn_pt1>[^/]+)/vpclinks/(?P<resource_arn_pt2>[^/]+)$": response_v2.tags,
"{0}/v2/vpclinks$": response_v2.vpc_links,
"{0}/v2/vpclinks/(?P<vpc_link_id>[^/]+)$": response_v2.vpc_link,
"{0}/v2/domainnames$": response_v2.domain_names,
"{0}/v2/domainnames/(?P<domain_name>[^/]+)$": response_v2.domain_name,
"{0}/v2/domainnames/(?P<domain_name>[^/]+)/apimappings$": response_v2.api_mappings,
"{0}/v2/domainnames/(?P<domain_name>[^/]+)/apimappings/(?P<api_mapping_id>[^/]+)$": response_v2.api_mapping,
"{0}/v2/apis$": ApiGatewayV2Response.method_dispatch(ApiGatewayV2Response.apis),
"{0}/v2/apis/(?P<api_id>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.api
),
"{0}/v2/apis/(?P<api_id>[^/]+)/authorizers$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.authorizers
),
"{0}/v2/apis/(?P<api_id>[^/]+)/authorizers/(?P<authorizer_id>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.authorizer
),
"{0}/v2/apis/(?P<api_id>[^/]+)/cors$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.cors
),
"{0}/v2/apis/(?P<api_id>[^/]+)/integrations$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.integrations
),
"{0}/v2/apis/(?P<api_id>[^/]+)/integrations/(?P<integration_id>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.integration
),
"{0}/v2/apis/(?P<api_id>[^/]+)/integrations/(?P<integration_id>[^/]+)/integrationresponses$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.integration_responses
),
"{0}/v2/apis/(?P<api_id>[^/]+)/integrations/(?P<integration_id>[^/]+)/integrationresponses/(?P<integration_response_id>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.integration_response
),
"{0}/v2/apis/(?P<api_id>[^/]+)/models$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.models
),
"{0}/v2/apis/(?P<api_id>[^/]+)/models/(?P<model_id>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.model
),
"{0}/v2/apis/(?P<api_id>[^/]+)/routes$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.routes
),
"{0}/v2/apis/(?P<api_id>[^/]+)/routes/(?P<route_id>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.route
),
"{0}/v2/apis/(?P<api_id>[^/]+)/routes/(?P<route_id>[^/]+)/routeresponses$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.route_responses
),
"{0}/v2/apis/(?P<api_id>[^/]+)/routes/(?P<route_id>[^/]+)/routeresponses/(?P<route_response_id>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.route_response
),
"{0}/v2/apis/(?P<api_id>[^/]+)/routes/(?P<route_id>[^/]+)/requestparameters/(?P<request_parameter>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.route_request_parameter
),
"{0}/v2/apis/(?P<api_id>[^/]+)/stages$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.stages
),
"{0}/v2/apis/(?P<api_id>[^/]+)/stages/(?P<stage_name>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.stage
),
"{0}/v2/tags/(?P<resource_arn>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.tags
),
"{0}/v2/tags/(?P<resource_arn_pt1>[^/]+)/apis/(?P<resource_arn_pt2>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.tags
),
"{0}/v2/tags/(?P<resource_arn_pt1>[^/]+)/vpclinks/(?P<resource_arn_pt2>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.tags
),
"{0}/v2/vpclinks$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.vpc_links
),
"{0}/v2/vpclinks/(?P<vpc_link_id>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.vpc_link
),
"{0}/v2/domainnames$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.domain_names
),
"{0}/v2/domainnames/(?P<domain_name>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.domain_name
),
"{0}/v2/domainnames/(?P<domain_name>[^/]+)/apimappings$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.api_mappings
),
"{0}/v2/domainnames/(?P<domain_name>[^/]+)/apimappings/(?P<api_mapping_id>[^/]+)$": ApiGatewayV2Response.method_dispatch(
ApiGatewayV2Response.api_mapping
),
}
25 changes: 13 additions & 12 deletions moto/appconfig/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,18 @@
]


response = AppConfigResponse()


url_paths = {
"{0}/applications$": response.dispatch,
"{0}/applications/(?P<app_id>[^/]+)$": response.dispatch,
"{0}/applications/(?P<app_id>[^/]+)/configurationprofiles$": response.dispatch,
"{0}/applications/(?P<app_id>[^/]+)/configurationprofiles/(?P<config_profile_id>[^/]+)$": response.dispatch,
"{0}/applications/(?P<app_id>[^/]+)/configurationprofiles/(?P<config_profile_id>[^/]+)/hostedconfigurationversions$": response.dispatch,
"{0}/applications/(?P<app_id>[^/]+)/configurationprofiles/(?P<config_profile_id>[^/]+)/hostedconfigurationversions/(?P<version>[^/]+)$": response.dispatch,
"{0}/tags/(?P<app_id>.+)$": response.dispatch,
"{0}/tags/(?P<arn_part_1>[^/]+)/(?P<app_id>[^/]+)$": response.tags,
"{0}/tags/(?P<arn_part_1>[^/]+)/(?P<app_id>[^/]+)/configurationprofile/(?P<cp_id>[^/]+)$": response.tags,
"{0}/applications$": AppConfigResponse.dispatch,
"{0}/applications/(?P<app_id>[^/]+)$": AppConfigResponse.dispatch,
"{0}/applications/(?P<app_id>[^/]+)/configurationprofiles$": AppConfigResponse.dispatch,
"{0}/applications/(?P<app_id>[^/]+)/configurationprofiles/(?P<config_profile_id>[^/]+)$": AppConfigResponse.dispatch,
"{0}/applications/(?P<app_id>[^/]+)/configurationprofiles/(?P<config_profile_id>[^/]+)/hostedconfigurationversions$": AppConfigResponse.dispatch,
"{0}/applications/(?P<app_id>[^/]+)/configurationprofiles/(?P<config_profile_id>[^/]+)/hostedconfigurationversions/(?P<version>[^/]+)$": AppConfigResponse.dispatch,
"{0}/tags/(?P<app_id>.+)$": AppConfigResponse.dispatch,
"{0}/tags/(?P<arn_part_1>[^/]+)/(?P<app_id>[^/]+)$": AppConfigResponse.method_dispatch(
AppConfigResponse.tags # type: ignore
),
"{0}/tags/(?P<arn_part_1>[^/]+)/(?P<app_id>[^/]+)/configurationprofile/(?P<cp_id>[^/]+)$": AppConfigResponse.method_dispatch(
AppConfigResponse.tags # type: ignore
),
}
Loading
Loading