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