Module: Latitude::API::Util
- Defined in:
- lib/latitude/api/util.rb
Class Method Summary collapse
- .blank?(value) ⇒ Boolean
- .deep_merge(a, b) ⇒ Object
- .present?(value) ⇒ Boolean
- .redact(hash, sensitive_fields) ⇒ Object
- .stringify_keys(obj) ⇒ Object
- .symbolize_keys(obj) ⇒ Object
Class Method Details
.blank?(value) ⇒ Boolean
44 45 46 |
# File 'lib/latitude/api/util.rb', line 44 def blank?(value) value.nil? || (value.respond_to?(:empty?) && value.empty?) end |
.deep_merge(a, b) ⇒ Object
30 31 32 33 34 35 36 37 38 |
# File 'lib/latitude/api/util.rb', line 30 def deep_merge(a, b) a.merge(b) do |_key, av, bv| if av.is_a?(Hash) && bv.is_a?(Hash) deep_merge(av, bv) else bv end end end |
.present?(value) ⇒ Boolean
40 41 42 |
# File 'lib/latitude/api/util.rb', line 40 def present?(value) !blank?(value) end |
.redact(hash, sensitive_fields) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/latitude/api/util.rb', line 48 def redact(hash, sensitive_fields) return hash unless hash.is_a?(Hash) keys = sensitive_fields.map { |k| k.to_s.downcase } hash.each_with_object({}) do |(k, v), out| out[k] = if keys.include?(k.to_s.downcase) "[FILTERED]" elsif v.is_a?(Hash) redact(v, sensitive_fields) else v end end end |
.stringify_keys(obj) ⇒ Object
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/latitude/api/util.rb', line 19 def stringify_keys(obj) case obj when Hash obj.each_with_object({}) { |(k, v), h| h[k.to_s] = stringify_keys(v) } when Array obj.map { |v| stringify_keys(v) } else obj end end |
.symbolize_keys(obj) ⇒ Object
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/latitude/api/util.rb', line 8 def symbolize_keys(obj) case obj when Hash obj.each_with_object({}) { |(k, v), h| h[k.to_sym] = symbolize_keys(v) } when Array obj.map { |v| symbolize_keys(v) } else obj end end |