class OneApm::Support::RenameRulesEngine::ExternalRenameRule

Constants

OA_RENAME_SEPARATOR

Attributes

hash_value[RW]
rules[RW]

Public Class Methods

new(hash={}) click to toggle source
# File lib/one_apm/support/rename_rules_engine/external_rename_rule.rb, line 13
def initialize(hash={})
  @hash_value = hash['hash_value']
  rules  = hash['rules'] || []
  rules  = rules.select { |r| r['type'] == "remote" }
  rules  = rules.sort_by { |r| r['priority'] }
  rules  = rules.map { |r| Rule.new(r) }
  rules  = rules.reverse
  @rules = rules
end

Public Instance Methods

default_rename(request) click to toggle source
# File lib/one_apm/support/rename_rules_engine/external_rename_rule.rb, line 35
def default_rename(request)
  path = request.uri.path.split(OA_RENAME_SEPARATOR)
  path.delete('')
  if path.size <= 1
    "#{path.first}/"
  else
    "#{path[0..1].join(OA_RENAME_SEPARATOR)}"
  end
end
rename(request) click to toggle source
# File lib/one_apm/support/rename_rules_engine/external_rename_rule.rb, line 23
def rename(request)
  selected_rule = select_rule(request)
  OneApm::Manager.logger.debug "request", request.inspect
  OneApm::Manager.logger.debug "selected_rule", selected_rule.inspect
  res = if selected_rule.nil?
          default_rename(request)
        else
          selected_rule.apply(request)
        end
  "External/HTTP/#{request.host}:#{request.port}/#{res}"
end
select_rule(request) click to toggle source
# File lib/one_apm/support/rename_rules_engine/external_rename_rule.rb, line 45
def select_rule(request)
  OneApm::Manager.logger.debug "@rules", @rules.inspect
  @rules.select { |r| r.enable?&&r.should_rename?(request) }.first
end