Class: Appsignal::EventFormatter::MongoRubyDriver::QueryFormatter Private
- Defined in:
- lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Constant Summary collapse
- ALLOWED =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
{ "find" => { "find" => :allow, "filter" => :sanitize_document }, "count" => { "count" => :allow, "query" => :sanitize_document }, "distinct" => { "distinct" => :allow, "key" => :allow, "query" => :sanitize_document }, "insert" => { "insert" => :allow, "documents" => :deny_array, "ordered" => :allow }, "update" => { "update" => :allow, "updates" => :sanitize_bulk, "ordered" => :allow }, "findandmodify" => { "findandmodify" => :allow, "query" => :sanitize_document, "update" => :deny_array, "new" => :allow }, "delete" => { "delete" => :allow, "deletes" => :sanitize_bulk, "ordered" => :allow }, "bulk" => { "q" => :sanitize_document, "u" => :deny_array, "limit" => :allow, "multi" => :allow, "upsert" => :allow } }.freeze
Class Method Summary collapse
-
.apply_strategy(strategy, val) ⇒ Object
private
Applies strategy on hash values based on keys.
-
.format(strategy, command) ⇒ Object
private
Format command based on given strategy.
Class Method Details
.apply_strategy(strategy, val) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Applies strategy on hash values based on keys
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb', line 69 def self.apply_strategy(strategy, val) case strategy when :allow then val when :deny then "?" when :deny_array then "[?]" when :sanitize_document Appsignal::Utils::QueryParamsSanitizer.sanitize(val, true, :mongodb) when :sanitize_bulk if val.length > 1 [ format(:bulk, val.first), "[...]" ] else val.map { |v| format(:bulk, v) } end else "?" end end |
.format(strategy, command) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Format command based on given strategy
53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb', line 53 def self.format(strategy, command) # Stop processing if command is not a hash return {} unless command.is_a?(Hash) # Get the strategy and stop if it's not present strategies = ALLOWED[strategy.to_s] return {} unless strategies {}.tap do |hsh| command.each do |key, val| hsh[key] = apply_strategy(strategies[key], val) end end end |