20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/ruboty/handlers/lambda.rb', line 20
def invoke(message)
fn = message[:fname]
json = message[:fjson]
resp = aws_lambda.invoke({
function_name: fn,
invocation_type: "RequestResponse",
log_type: "Tail",
payload: json,
qualifier: "$LATEST",
})
result = Base64.decode64(resp.log_result)
logs = []
fields = []
result.each_line do |line|
case true
when line.start_with?('START', 'END')
next
when line.start_with?('REPORT')
line[7..-1].strip.split("\t").map {|f| f.split(':', 2).map(&:strip) }.each do |f|
fields << {
title: f[0],
value: f[1],
short: true
}
end
else
field = line.strip.split("\t")
logs << "#{field[0]} #{field[2]}"
end
end
payload = resp.payload.read
fields << {
title: "Payload",
value: payload
}
success = resp.status_code >= 200 && resp.status_code <= 299
message.reply(logs.join("\n"), code: true, attachments: [{
color: success ? 'good' : 'danger',
fields: fields
}])
end
|