lib/aws_lambda_ric/aws_lambda_marshaller.rb (23 lines of code) (raw):
# frozen_string_literal: true
require 'stringio'
module AwsLambda
class Marshaller
class << self
# By default, JSON-parses the raw request body. This can be overwritten
# by users who know what they are doing.
def marshall_request(raw_request)
content_type = raw_request['Content-Type']
if content_type == 'application/json'
JSON.parse(raw_request.body)
else
raw_request.body # return it unaltered
end
end
# By default, just runs #to_json on the method's response value.
# This can be overwritten by users who know what they are doing.
# The response is an array of response, content-type.
# If returned without a content-type, it is assumed to be application/json
# Finally, StringIO/IO is used to signal a response that shouldn't be
# formatted as JSON, and should get a different content-type header.
def marshall_response(method_response)
case method_response
when StringIO, IO
[method_response, 'application/unknown']
else
method_response.to_json # application/json is assumed
end
end
end
end
end