class ChefEc2NodeRm::SqsMessage
Attributes
instance_id[R]
state[R]
Public Class Methods
new(msg)
click to toggle source
# File lib/chef_ec2_node_rm/sqs_message.rb, line 5 def initialize(msg) msg_parsed = JSON.parse(msg) raise SqsMessageNotHash, "Expected a Hash but got a #{msg_parsed.class}" unless msg_parsed.is_a?(Hash) attr_map = { instance_id: ['detail', 'instance-id'], state: %w[detail state] } attr_map.each do |name, path| value = msg_parsed.dig(*path) raise ChefEc2NodeRm::SqsMessageMissingAttribute, "Missing value for #{name} (msg='#{msg}', path='#{path.join('.')}')" if value.nil? instance_variable_set("@#{name}", value) end rescue JSON::ParserError => e raise ChefEc2NodeRm::SqsMessageMalformedJson, "Malformed JSON: #{e}" end