Sha256: 8b17e61cc28d8b2351f88c57fddd0ec53f815c86917be17612994a7e48783775

Contents?: true

Size: 1.95 KB

Versions: 13

Compression:

Stored size: 1.95 KB

Contents

# Implements:
#
#   compose
#   template_path
#
module Jets::Cfn::Builders
  class AuthorizerBuilder < BaseChildBuilder
    include Interface
    include Jets::AwsServices

    def initialize(path)
      @path = path # IE: app/authorizers/main_authorizer.rb
      @app_class = Jets::Klass.from_path(path)
      @template = ActiveSupport::HashWithIndifferentAccess.new(Resources: {})
    end

    def compose
      add_common_parameters
      add_api_gateway_parameters
      add_functions
      add_resources
      add_outputs
      # These dont have lambda functions associated with them
      add_cognito_authorizers
      add_cognito_outputs
    end

    def add_cognito_authorizers
      @app_class.cognito_authorizers.each do |authorizer|
        resource = Jets::Resource.new(authorizer[:definition], authorizer[:replacements])
        add_resource(resource)
      end
    end

    def add_outputs
      # IE: @app_class = MainAuthorizer
      # The associated resource is the Jets::Resource::ApiGateway::Authorizer definition built during evaluation
      # of the user defined Authorizer class. We'll use it to compute the logical id.
      @app_class.tasks.each do |task|
        authorizer = task.associated_resources.first
        next unless authorizer

        resource = Jets::Resource.new(authorizer.definition, task.replacements)
        logical_id = resource.logical_id
        add_output(logical_id, value: "!Ref #{logical_id}")
      end
    end

    def add_cognito_outputs
      @app_class.cognito_authorizers.each do |authorizer|
        resource = Jets::Resource.new(authorizer[:definition], authorizer[:replacements])
        logical_id = resource.logical_id
        add_output(logical_id, value: "!Ref #{logical_id}")
      end
    end

    def add_api_gateway_parameters
      return if Jets::Router.routes.empty?

      add_parameter("RestApi", Description: "RestApi")
    end

    def template_path
      Jets::Names.authorizer_template_path(@path)
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
jets-4.0.12 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.11 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.10 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.9 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.8 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.7 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.6 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.5 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.4 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.3 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.2 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.1 lib/jets/cfn/builders/authorizer_builder.rb
jets-4.0.0 lib/jets/cfn/builders/authorizer_builder.rb