1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
module Fog
module AWS
module Parsers
module Lambda
class Base
def process(body)
body.inject({}) { |h, (k, v)| h[k] = rules(k, v); h }
end
private
def rules(key, value)
case value
when Hash
process(value)
when Array
value.map { |i| process(i) }
else
case key
when 'LastModified'
Time.parse(value)
when 'Policy', 'Statement'
begin
Fog::JSON.decode(value)
rescue Fog::JSON::DecodeError => e
Fog::Logger.warning("Error parsing response json - #{e}")
{}
end
else
value
end
end
end
end
end
end
end
end
|