Module: Latitude::API::Util

Defined in:
lib/latitude/api/util.rb

Class Method Summary collapse

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