docbrown/app/labor/function_caller.rb

22 lines
589 B
Ruby

class FunctionCaller
def initialize(function_name, payload, aws_lambda_client = AWS_LAMBDA)
@function_name = function_name
@payload = payload
@aws_lambda_client = aws_lambda_client
end
def self.call(*args)
new(*args).call
end
def call
response = aws_lambda_client.invoke(function_name: function_name, payload: payload)
payload_json = response.payload.as_json[0]
body = payload_json ? JSON.parse(payload_json)["body"] : nil
body ? JSON.parse(body)["message"] : nil
end
private
attr_reader :function_name, :payload, :aws_lambda_client
end