Class: Appsignal::Utils::Data
Class Method Summary collapse
Class Method Details
.generate(body) ⇒ Object
12 13 14 15 16 17 18 19 20 |
# File 'lib/appsignal/utils.rb', line 12 def generate(body) if body.is_a?(Hash) map_hash(body) elsif body.is_a?(Array) map_array(body) else raise TypeError.new("Body of type #{body.class} should be a Hash or Array") end end |
.map_array(array_value) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/appsignal/utils.rb', line 48 def map_array(array_value) array = Appsignal::Extension.data_array_new array_value.each do |value| case value when String array.append_string(value) when Fixnum array.append_fixnum(value) when Float array.append_float(value) when TrueClass, FalseClass array.append_boolean(value) when NilClass array.append_nil when Hash array.append_data(map_hash(value)) when Array array.append_data(map_array(value)) else array.append_string(value.to_s) end end array end |
.map_hash(hash_value) ⇒ Object
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 |
# File 'lib/appsignal/utils.rb', line 22 def map_hash(hash_value) map = Appsignal::Extension.data_map_new hash_value.each do |key, value| key = key.to_s case value when String map.set_string(key, value) when Fixnum map.set_fixnum(key, value) when Float map.set_float(key, value) when TrueClass, FalseClass map.set_boolean(key, value) when NilClass map.set_nil(key) when Hash map.set_data(key, map_hash(value)) when Array map.set_data(key, map_array(value)) else map.set_string(key, value.to_s) end end map end |