class ZabbixApi class Basic # Log messages to stdout when debugging # # @param message [String] def log(message) puts message.to_s if @client.options[:debug] end # Compare two hashes for equality # # @param first_hash [Hash] # @param second_hash [Hash] # @return [Boolean] def hash_equals?(first_hash, second_hash) normalized_first_hash = normalize_hash(first_hash) normalized_second_hash = normalize_hash(second_hash) hash1 = normalized_first_hash.merge(normalized_second_hash) hash2 = normalized_second_hash.merge(normalized_first_hash) hash1 == hash2 end # Convert all hash/array keys to symbols # # @param object [Array, Hash] # @return [Array, Hash] def symbolize_keys(object) if object.is_a?(Array) object.each_with_index do |val, index| object[index] = symbolize_keys(val) end elsif object.is_a?(Hash) object.keys.each do |key| object[key.to_sym] = symbolize_keys(object.delete(key)) end end object end # Normalize all hash values to strings # # @param hash [Hash] # @return [Hash] def normalize_hash(hash) result = hash.dup result.delete(:hostid) # TODO: remove to logig. TemplateID and HostID has different id result.each do |key, value| result[key] = value.is_a?(Array) ? normalize_array(value) : value.to_s end result end # Normalize all array values to strings # # @param array [Array] # @return [Array] def normalize_array(array) result = [] array.each do |e| if e.is_a?(Array) result.push(normalize_array(e)) elsif e.is_a?(Hash) result.push(normalize_hash(e)) else result.push(e.to_s) end end result end # Parse a data hash for id key or boolean to return # # @param data [Hash] # @return [Integer] The object id if a single object hash is provided with key # @return [Boolean] True/False if multiple class object hash is provided def parse_keys(data) case data when Hash data.empty? ? nil : data[keys][0].to_i when TrueClass true when FalseClass false end end # Merge two hashes into a single new hash # # @param first_hash [Hash] # @param second_hash [Hash] # @return [Hash] def merge_params(first_hash, second_hash) new = first_hash.dup new.merge(second_hash) end end end