Sha256: 2c94546fe85b5f8398ddef963b7a0d413888ad6fbdebaee7c9dd0e44b1abfa99

Contents?: true

Size: 1.42 KB

Versions: 29

Compression:

Stored size: 1.42 KB

Contents

module Lamby
  class RackRest < Lamby::Rack
    
    class << self

      def handle?(event)
        event.key?('httpMethod')
      end

    end

    def response(handler)
      if handler.base64_encodeable?
        { isBase64Encoded: true, body: handler.body64 }
      else
        super
      end.tap do |r|
        if cookies = handler.set_cookies
          r[:multiValueHeaders] ||= {}
          r[:multiValueHeaders]['Set-Cookie'] = cookies
        end
      end
    end

    private

    def env_base
      { ::Rack::REQUEST_METHOD => event['httpMethod'],
        ::Rack::SCRIPT_NAME => '',
        ::Rack::PATH_INFO => event['path'] || '',
        ::Rack::QUERY_STRING => query_string,
        ::Rack::SERVER_NAME => headers['Host'],
        ::Rack::SERVER_PORT => headers['X-Forwarded-Port'],
        ::Rack::SERVER_PROTOCOL => event.dig('requestContext', 'protocol') || 'HTTP/1.1',
        ::Rack::RACK_VERSION => ::Rack::VERSION,
        ::Rack::RACK_URL_SCHEME => 'https',
        ::Rack::RACK_INPUT => StringIO.new(body || ''),
        ::Rack::RACK_ERRORS => $stderr,
        ::Rack::RACK_MULTITHREAD => false,
        ::Rack::RACK_MULTIPROCESS => false,
        ::Rack::RACK_RUNONCE => false,
        LAMBDA_EVENT => event,
        LAMBDA_CONTEXT => context
      }.tap do |env|
        ct = content_type
        cl = content_length
        env['CONTENT_TYPE'] = ct if ct
        env['CONTENT_LENGTH'] = cl if cl
      end
    end

  end
end

Version data entries

29 entries across 29 versions & 2 rubygems

Version Path
lamby_updated-5.2.4 lib/lamby/rack_rest.rb
lamby_updated-5.2.1 lib/lamby/rack_rest.rb
lamby-5.2.0 lib/lamby/rack_rest.rb
lamby-5.1.0 lib/lamby/rack_rest.rb
lamby-5.0.0 lib/lamby/rack_rest.rb
lamby-4.3.3 lib/lamby/rack_rest.rb
lamby-4.3.0 lib/lamby/rack_rest.rb
lamby-4.2.1 lib/lamby/rack_rest.rb
lamby-4.2.0 lib/lamby/rack_rest.rb
lamby-4.1.1 lib/lamby/rack_rest.rb
lamby-4.1.0 lib/lamby/rack_rest.rb
lamby-4.0.2 lib/lamby/rack_rest.rb
lamby-4.0.1 lib/lamby/rack_rest.rb
lamby-4.0.0 lib/lamby/rack_rest.rb
lamby-4.0.0.pre1 lib/lamby/rack_rest.rb
lamby-4.0.0.beta6 lib/lamby/rack_rest.rb
lamby-4.0.0.beta5 lib/lamby/rack_rest.rb
lamby-4.0.0.beta4 lib/lamby/rack_rest.rb
lamby-4.0.0.beta3 lib/lamby/rack_rest.rb
lamby-4.0.0.beta2 lib/lamby/rack_rest.rb