Sha256: 25a4424b06cf474b7a5b1e16df59372e532b7c60c0b3553c2d424ba6c0bf2669
Contents?: true
Size: 1.84 KB
Versions: 3
Compression:
Stored size: 1.84 KB
Contents
module Lamby class Rack include SamHelpers LAMBDA_EVENT = 'lambda.event'.freeze LAMBDA_CONTEXT = 'lambda.context'.freeze HTTP_X_REQUESTID = 'HTTP_X_REQUEST_ID'.freeze HTTP_COOKIE = 'HTTP_COOKIE'.freeze attr_reader :event, :context def initialize(event, context) @event = event @context = context end def env @env ||= env_base.merge!(env_headers) end def response(_handler) {} end def multi_value? false end private def env_base raise NotImplementedError end def env_headers headers.transform_keys do |key| "HTTP_#{key.to_s.upcase.tr '-', '_'}" end.tap do |hdrs| hdrs[HTTP_X_REQUESTID] = request_id end end def content_type headers.delete('Content-Type') || headers.delete('content-type') || headers.delete('CONTENT_TYPE') end def content_length bytesize = body.bytesize.to_s if body headers.delete('Content-Length') || headers.delete('content-length') || headers.delete('CONTENT_LENGTH') || bytesize end def body @body ||= if event['body'] && base64_encoded? Base64.decode64 event['body'] else event['body'] end end def headers @headers ||= event['headers'] || {} end def query_string @query_string ||= if event.key?('rawQueryString') event['rawQueryString'] elsif event.key?('multiValueQueryStringParameters') query = event['multiValueQueryStringParameters'] || {} query.map do |key, value| value.map{ |v| "#{key}=#{v}" }.join('&') end.flatten.join('&') else event['queryStringParameters'].try(:to_query) end end def base64_encoded? event['isBase64Encoded'] end def request_id context.aws_request_id end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
lamby-2.1.0 | lib/lamby/rack.rb |
lamby-2.0.1 | lib/lamby/rack.rb |
lamby-2.0.0 | lib/lamby/rack.rb |