13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/apirelio/metadata.rb', line 13
def sanitize(values, allowed_keys: [])
safe = {}
values.to_h.each do |raw_key, raw_value|
key = raw_key.to_s
next unless scalar?(raw_value)
next if sensitive?(key)
next unless key.start_with?("header.") || key == "exception" || allowed_keys.map(&:to_s).include?(key)
key = key[0, 120]
value = raw_value.is_a?(String) ? raw_value[0, 1000] : raw_value
candidate = safe.merge(key => value)
next if JSON.generate(candidate).bytesize > MAX_BYTES
safe[key] = value
break if safe.length >= MAX_ITEMS
end
safe
end
|