lib/lamby/handler.rb in lamby-5.2.2 vs lib/lamby/handler.rb in lamby-6.0.0

- old
+ new

@@ -29,18 +29,19 @@ @headers end def set_cookies return @set_cookies if defined?(@set_cookies) - @set_cookies = if @headers && @headers['Set-Cookie'] - @headers.delete('Set-Cookie').split("\n") + set_cookie = @headers.delete("Set-Cookie") || @headers.delete("set-cookie") + @set_cookies = if @headers && set_cookie + Array(set_cookie).flat_map { |cookie| cookie.split("\n").map(&:strip) } end end def body @rbody ||= ''.tap do |rbody| - @body.each { |part| rbody << part if part } + @body.each { |part| rbody << part.to_s if part } @body.close if @body.respond_to? :close end end def call @@ -48,10 +49,11 @@ self end def base64_encodeable?(hdrs = @headers) hdrs && ( + hdrs['content-transfer-encoding'] == 'binary' || hdrs['Content-Transfer-Encoding'] == 'binary' || content_encoding_compressed?(hdrs) || hdrs['X-Lamby-Base64'] == '1' ) end @@ -76,14 +78,22 @@ @options[:rack] end def rack_response { statusCode: status, - headers: headers, + headers: stringify_values!(headers), + cookies: @set_cookies, body: body }.merge(rack.response(self)) end + def stringify_values!(headers) + headers.each do |k, v| + headers[k] = v.to_s + end + headers + end + def call_app if Debug.on?(@event) Debug.call @event, @context, rack.env elsif rack? @status, @headers, @body = @app.call rack.env @@ -101,10 +111,10 @@ [404, {}, StringIO.new('')] end end def content_encoding_compressed?(hdrs) - content_encoding_header = hdrs['Content-Encoding'] || '' + content_encoding_header = hdrs['Content-Encoding'] || hdrs['content-encoding'] || '' content_encoding_header.split(', ').any? { |h| ['br', 'gzip'].include?(h) } end def rack? rack