Sha256: ba188350eb17682f556bdc2ac5df4fe77d3931c25bd8f7aa001f0afab5c713c5

Contents?: true

Size: 1.64 KB

Versions: 4

Compression:

Stored size: 1.64 KB

Contents

module Jets::Shim
  class Handler
    include Jets::Util::Logging

    attr_reader :event, :context, :target
    def initialize(event, context = nil, target = nil)
      @event = event.deep_stringify_keys
      @context = context
      @target = target # IE: cool_event.party
    end

    def handle
      show_debug_shim_event
      adapter.handle
    end

    def adapter
      adapter_class = Adapter.const_get(adapter_name.to_s.camelize)
      log.info "jets shim adapter: #{adapter_name}" if ENV["JETS_DEBUG_SHIM"]
      adapter_class.new(event, context, target) # IE: Adapter::Apigw
    end

    protected

    def adapter_name
      Jets::Shim.config.adapter || infer_adapter
    end

    def infer_adapter
      adapters = %w[lambda apigw alb prewarm command event]
      adapters.each do |adapter_name|
        adapter_class = Adapter.const_get(adapter_name.to_s.camelize)
        return adapter_name if adapter_class.new(event, context, target).handle?
      end
      :fallback
    end

    def show_debug_shim_event
      self.class.show_debug_shim("jets shim event:", event)
    end

    class << self
      include Jets::Util::Logging

      # interface method used by Shim::Response::Base
      def show_debug_shim(message, payload)
        return unless ENV["JETS_DEBUG_SHIM"]

        log.info message
        # pretty mode is not useful on CloudWatch since it strips the surrounding spaces on each line
        # It's only useful for testing handlers locally
        if ENV["JETS_DEBUG_SHIM"] == "pretty"
          log.info JSON.pretty_generate(payload)
        else
          log.info JSON.dump(payload) # json one line
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
jets-6.0.5 lib/jets/shim/handler.rb
jets-6.0.4 lib/jets/shim/handler.rb
jets-6.0.3 lib/jets/shim/handler.rb
jets-6.0.2 lib/jets/shim/handler.rb