Sha256: bfc96f5a975a94f517bd4c0178357cc55997393ce6ebbafa311ed6ea2e08c259

Contents?: true

Size: 1.67 KB

Versions: 29

Compression:

Stored size: 1.67 KB

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

module NewRelic
  module CollectionHelper
  DEFAULT_TRUNCATION_SIZE=16 * 1024
  DEFAULT_ARRAY_TRUNCATION_SIZE=128
  # Transform parameter hash into a hash whose values are strictly
  # strings
  def normalize_params(params)
    case params
      when Hash
        # optimize for empty hash since that is often what this is called with.
        return params if params.empty?
        new_params = {}
        params.each do | key, value |
          new_params[truncate(normalize_params(key),64)] = normalize_params(value)
        end
        new_params
      when Symbol, FalseClass, TrueClass, nil
        params
      when Numeric
        truncate(params.to_s)
      when String
        truncate(params)
      when Array
        params.first(DEFAULT_ARRAY_TRUNCATION_SIZE).map{|item| normalize_params(item)}
    else
      truncate(flatten(params))
    end
  end

  private

  # Convert any kind of object to a short string.
  def flatten(object)
    case object
      when nil then ''
      when object.instance_of?(String) then object
      when String then String.new(object)  # convert string subclasses to strings
      else "#<#{object.class.to_s}>"
    end
  end
  def truncate(string, len=DEFAULT_TRUNCATION_SIZE)
    case string
    when Symbol then string
    when nil then ""
    when String
      real_string = flatten(string)
      if real_string.size > len
        real_string = real_string.slice(0...len)
        real_string << "..."
      end
      real_string
    else
      truncate(flatten(string), len)
    end
  end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
newrelic_rpm-6.11.0.365 lib/new_relic/collection_helper.rb
newrelic_rpm-6.10.0.364 lib/new_relic/collection_helper.rb
newrelic_rpm-6.9.0.363 lib/new_relic/collection_helper.rb
newrelic_rpm-6.8.0.360 lib/new_relic/collection_helper.rb
newrelic_rpm-6.7.0.359 lib/new_relic/collection_helper.rb
newrelic_rpm-6.6.0.358 lib/new_relic/collection_helper.rb
newrelic_rpm-6.5.0.357 lib/new_relic/collection_helper.rb
newrelic_rpm-6.4.0.356 lib/new_relic/collection_helper.rb
newrelic_rpm-6.3.0.355 lib/new_relic/collection_helper.rb
newrelic_rpm-6.2.0.354 lib/new_relic/collection_helper.rb
newrelic_rpm-6.1.0.352 lib/new_relic/collection_helper.rb
newrelic_rpm-6.0.0.351 lib/new_relic/collection_helper.rb
newrelic_rpm-5.7.0.350 lib/new_relic/collection_helper.rb
newrelic_rpm-5.6.0.349 lib/new_relic/collection_helper.rb
newrelic_rpm-5.5.0.348 lib/new_relic/collection_helper.rb
newrelic_rpm-5.4.0.347 lib/new_relic/collection_helper.rb
newrelic_rpm-5.3.0.346 lib/new_relic/collection_helper.rb
newrelic_rpm-5.2.0.345 lib/new_relic/collection_helper.rb
newrelic_rpm-5.1.0.344 lib/new_relic/collection_helper.rb
newrelic_rpm-5.0.0.342 lib/new_relic/collection_helper.rb