class ApiGatewayDeploymentParser

Public Instance Methods

parse(cfn_model:, resource:) click to toggle source
# File lib/cfn-model/parser/api_gateway_deployment_parser.rb, line 9
def parse(cfn_model:, resource:)
  deployment = resource

  attach_usage_plan_to_api_deployment(cfn_model: cfn_model, deployment: deployment)
  deployment
end

Private Instance Methods

attach_usage_plan_to_api_deployment(cfn_model:, deployment:) click to toggle source
# File lib/cfn-model/parser/api_gateway_deployment_parser.rb, line 66
def attach_usage_plan_to_api_deployment(cfn_model:, deployment:)
  if deployment_creates_stage?(deployment)
    attach_usage_plans_for_deployment_that_creates_stage(cfn_model, deployment)
  else
    attach_usage_plans_for_deployment_without_stage_name(cfn_model, deployment)
  end
end
attach_usage_plans_for_deployment_that_creates_stage(cfn_model, deployment) click to toggle source
# File lib/cfn-model/parser/api_gateway_deployment_parser.rb, line 52
def attach_usage_plans_for_deployment_that_creates_stage(cfn_model, deployment)
  usage_plans_for_stage_by_stage_name(cfn_model, deployment.stageName).each do |usage_plan|
    deployment.usage_plan_ids << usage_plan.logical_resource_id
  end
end
attach_usage_plans_for_deployment_without_stage_name(cfn_model, deployment) click to toggle source
# File lib/cfn-model/parser/api_gateway_deployment_parser.rb, line 58
def attach_usage_plans_for_deployment_without_stage_name(cfn_model, deployment)
  stages_for_deployment(cfn_model, deployment).each do |stage|
    usage_plans_for_stage_by_resource_id(cfn_model, stage.logical_resource_id).each do |usage_plan|
      deployment.usage_plan_ids << usage_plan.logical_resource_id
    end
  end
end
attached_usage_plans(cfn_model) click to toggle source
# File lib/cfn-model/parser/api_gateway_deployment_parser.rb, line 18
def attached_usage_plans(cfn_model)
  usage_plans = cfn_model.resources_by_type 'AWS::ApiGateway::UsagePlan'
  usage_plans.select { |usage_plan| !usage_plan.apiStages.nil? }
end
deployment_creates_stage?(deployment) click to toggle source
# File lib/cfn-model/parser/api_gateway_deployment_parser.rb, line 28
def deployment_creates_stage?(deployment)
  !deployment.stageName.nil?
end
stages_for_deployment(cfn_model, deployment) click to toggle source
# File lib/cfn-model/parser/api_gateway_deployment_parser.rb, line 23
def stages_for_deployment(cfn_model, deployment)
  stages = cfn_model.resources_by_type 'AWS::ApiGateway::Stage'
  stages.select { |stage| stage.deploymentId ? References.resolve_resource_id(stage.deploymentId) == deployment.logical_resource_id : false }
end
usage_plans_for_stage_by_resource_id(cfn_model, logical_resource_id) click to toggle source
# File lib/cfn-model/parser/api_gateway_deployment_parser.rb, line 32
def usage_plans_for_stage_by_resource_id(cfn_model, logical_resource_id)
  usage_plans = attached_usage_plans(cfn_model)
  usage_plans.select do |usage_plan|
    stages = usage_plan.apiStages.select do |up_api_stage|
      References.resolve_resource_id(up_api_stage['Stage']) == logical_resource_id
    end
    !stages.empty?
  end
end
usage_plans_for_stage_by_stage_name(cfn_model, stage_name) click to toggle source
# File lib/cfn-model/parser/api_gateway_deployment_parser.rb, line 42
def usage_plans_for_stage_by_stage_name(cfn_model, stage_name)
  usage_plans = attached_usage_plans(cfn_model)
  usage_plans.select do |usage_plan|
    stages = usage_plan.apiStages.select do |up_api_stage|
      up_api_stage['Stage'] == stage_name
    end
    !stages.empty?
  end
end