class OpenTracing::Instrumentation::Mongo::QuerySanitazer
QuerySanitazer
clean private data from requests.
Constants
- DEFAULT_EXCLUDE_KEYS
- DEFAULT_SAFE_CLASSES
- OBJECT_ID_PLACEHOLDER
- PLACEHOLDER
- STRING_PLACEHOLDER
Attributes
exclude_keys[R]
max_array_size[R]
safe_classes[R]
safety_argument_checker[R]
Public Class Methods
new( safety_argument_checker: SampleSafetyArgumentChecker.new, safe_classes: DEFAULT_SAFE_CLASSES, max_array_size: 4, exclude_keys: DEFAULT_EXCLUDE_KEYS )
click to toggle source
Calls superclass method
# File lib/opentracing/instrumentation/mongo/query_sanitazer.rb, line 21 def initialize( safety_argument_checker: SampleSafetyArgumentChecker.new, safe_classes: DEFAULT_SAFE_CLASSES, max_array_size: 4, exclude_keys: DEFAULT_EXCLUDE_KEYS ) super() @safety_argument_checker = safety_argument_checker @safe_classes = safe_classes @max_array_size = max_array_size @exclude_keys = exclude_keys end
Public Instance Methods
sanitaze(command, command_name)
click to toggle source
Calls superclass method
OpenTracing::Instrumentation::Mongo::DirectSanitazer#sanitaze
# File lib/opentracing/instrumentation/mongo/query_sanitazer.rb, line 34 def sanitaze(command, command_name) command_without_command_name = super(command, command_name) exclude_keys.each do |key| command_without_command_name.delete(key) end sanitaze_value(command_without_command_name) end
Private Instance Methods
array_with_placeholder(array)
click to toggle source
# File lib/opentracing/instrumentation/mongo/query_sanitazer.rb, line 117 def array_with_placeholder(array) prefix_size = (max_array_size / 2).ceil suffix_size = max_array_size - prefix_size array[0...prefix_size] \ + [ArrayItemPlaceholder.new(array.size - max_array_size)] \ + array[-suffix_size..-1] end
sanitaze_array(array)
click to toggle source
# File lib/opentracing/instrumentation/mongo/query_sanitazer.rb, line 107 def sanitaze_array(array) if max_array_size&.positive? && array.size > max_array_size array_with_placeholder(array) else array end.map do |value| sanitaze_value(value) end end
sanitaze_hash(hash)
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/opentracing/instrumentation/mongo/query_sanitazer.rb, line 81 def sanitaze_hash(hash) hash.map do |(key, value)| # TODO: pass command name. # TODO: recursive build path to key safe_value = if safety_argument_checker.argument_safe?(nil, key, value) value else sanitaze_value(value) end [key, safe_value] end.to_h end
sanitaze_simple(value)
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/opentracing/instrumentation/mongo/query_sanitazer.rb, line 65 def sanitaze_simple(value) case value when BSON::ObjectId OBJECT_ID_PLACEHOLDER when String STRING_PLACEHOLDER when ArrayItemPlaceholder value.to_s when *safe_classes value else PLACEHOLDER end end
sanitaze_value(value)
click to toggle source
# File lib/opentracing/instrumentation/mongo/query_sanitazer.rb, line 53 def sanitaze_value(value) case value when Hash sanitaze_hash(value) when Enumerable sanitaze_array(value) else sanitaze_simple(value) end end