def add_path(path, parts, parent_id=''): child_id = create_id() path = path or '/' child = Resource( id=child_id, region_name=rest_api.region_name, api_id=rest_api.id, path_part=parts[-1] or '/', parent_id=parent_id ) for m, payload in body['paths'].get(path, {}).items(): m = m.upper() payload = payload['x-amazon-apigateway-integration'] child.add_method( m, None, None ) integration = Integration( http_method=m, uri=payload.get('uri'), integration_type=payload['type'], pass_through_behavior=payload.get('passthroughBehavior'), request_templates=payload.get('requestTemplates') or {} ) integration.create_integration_response( status_code=payload.get('responses', {}).get('default', {}).get('statusCode', 200), selection_pattern=None, response_templates=None, content_handling=None ) child.resource_methods[m]['methodIntegration'] = integration rest_api.resources[child_id] = child return child
def apigateway_models_backend_put_rest_api(self, function_id, body): rest_api = self.get_rest_api(function_id) # Remove default root rest_api.resources = {} for path in body['paths']: child_id = create_id() child = Resource( id=child_id, region_name=rest_api.region_name, api_id=rest_api.id, path_part=path, parent_id='', ) for m, payload in body['paths'][path].items(): m = m.upper() payload = payload['x-amazon-apigateway-integration'] child.add_method(m, None, None) integration = Integration( http_method=m, uri=None, integration_type=payload['type'], pass_through_behavior=payload['passthroughBehavior'], request_templates=payload['requestTemplates']) integration.create_integration_response( status_code=payload['responses']['default']['statusCode'], selection_pattern=None, response_templates=None, content_handling=None) child.resource_methods[m]['methodIntegration'] = integration rest_api.resources[child_id] = child return rest_api
def apigateway_models_backend_put_rest_api(self, function_id, body): rest_api = self.get_rest_api(function_id) # Remove default root, then add paths from API spec rest_api.resources = {} for path in body.get('paths', {}): child_id = create_id() child = Resource( id=child_id, region_name=rest_api.region_name, api_id=rest_api.id, path_part=path, parent_id='', ) for m, payload in body['paths'][path].items(): m = m.upper() payload = payload['x-amazon-apigateway-integration'] child.add_method(m, None, None) integration = Integration( http_method=m, uri=payload.get('uri'), integration_type=payload['type'], pass_through_behavior=payload.get('passthroughBehavior'), request_templates=payload.get('requestTemplates') or {}) integration.create_integration_response( status_code=payload.get('responses', {}).get('default', {}).get('statusCode', 200), selection_pattern=None, response_templates=None, content_handling=None) child.resource_methods[m]['methodIntegration'] = integration rest_api.resources[child_id] = child policy = body.get('x-amazon-apigateway-policy') if policy: policy = json.dumps(policy) if isinstance(policy, dict) else str(policy) rest_api.policy = policy return rest_api