Class: OneApm::Support::RenameRulesEngine::ExternalRenameRule

Inherits:
Object
  • Object
show all
Defined in:
lib/one_apm/support/rename_rules_engine/external_rename_rule.rb

Constant Summary collapse

OA_RENAME_SEPARATOR =
'/'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash = {}) ⇒ ExternalRenameRule

Returns a new instance of ExternalRenameRule.



13
14
15
16
17
18
19
20
21
# 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

Instance Attribute Details

#hash_valueObject

Returns the value of attribute hash_value.



11
12
13
# File 'lib/one_apm/support/rename_rules_engine/external_rename_rule.rb', line 11

def hash_value
  @hash_value
end

#rulesObject

Returns the value of attribute rules.



11
12
13
# File 'lib/one_apm/support/rename_rules_engine/external_rename_rule.rb', line 11

def rules
  @rules
end

Instance Method Details

#default_rename(request) ⇒ Object



35
36
37
38
39
40
41
42
43
# 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) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
# 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) ⇒ Object



45
46
47
48
# 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