Sha256: ab15c8309dca8913d84a0ef88a49d792b4b070b687f2a1c2e14549c4bd5b580d

Contents?: true

Size: 959 Bytes

Versions: 28

Compression:

Stored size: 959 Bytes

Contents

module Honeybadger
  module Util
    class SQL
      EscapedQuotes = /(\\"|\\')/.freeze
      SQuotedData = /'(?:[^']|'')*'/.freeze
      DQuotedData = /"(?:[^"]|"")*"/.freeze
      NumericData = /\b\d+\b/.freeze
      Newline = /\n/.freeze
      Replacement = "?".freeze
      EmptyReplacement = "".freeze
      DoubleQuoters = /(postgres|sqlite|postgis)/.freeze

      def self.obfuscate(sql, adapter)
        force_utf_8(sql.dup).tap do |s|
          s.gsub!(EscapedQuotes, EmptyReplacement)
          s.gsub!(SQuotedData, Replacement)
          s.gsub!(DQuotedData, Replacement) if adapter =~ DoubleQuoters
          s.gsub!(NumericData, Replacement)
          s.gsub!(Newline, EmptyReplacement)
          s.squeeze!(' ')
        end
      end

      def self.force_utf_8(string)
        string.encode(
          Encoding.find('UTF-8'),
          invalid: :replace, 
          undef: :replace, 
          replace: ''
        )
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
honeybadger-5.13.0 lib/honeybadger/util/sql.rb
honeybadger-5.12.0 lib/honeybadger/util/sql.rb
honeybadger-5.11.2 lib/honeybadger/util/sql.rb
honeybadger-5.11.1 lib/honeybadger/util/sql.rb
honeybadger-5.11.0 lib/honeybadger/util/sql.rb
honeybadger-5.8.0 lib/honeybadger/util/sql.rb
honeybadger-5.7.0 lib/honeybadger/util/sql.rb
honeybadger-5.6.0 lib/honeybadger/util/sql.rb
honeybadger-5.5.1 lib/honeybadger/util/sql.rb
honeybadger-5.5.0 lib/honeybadger/util/sql.rb
honeybadger-5.4.1 lib/honeybadger/util/sql.rb
honeybadger-5.4.0 lib/honeybadger/util/sql.rb
honeybadger-5.3.0 lib/honeybadger/util/sql.rb
honeybadger-5.2.1 lib/honeybadger/util/sql.rb
honeybadger-5.0.2 lib/honeybadger/util/sql.rb
honeybadger-5.0.1 lib/honeybadger/util/sql.rb
honeybadger-5.0.0 lib/honeybadger/util/sql.rb
honeybadger-5.0.0.beta1 lib/honeybadger/util/sql.rb
honeybadger-4.12.2 lib/honeybadger/util/sql.rb
honeybadger-4.12.1 lib/honeybadger/util/sql.rb