Class: Fluent::ParseMultipleValueQueryOutput

Inherits:
Output
  • Object
show all
Defined in:
lib/fluent/plugin/out_parse_multiple_value_query.rb

Instance Method Summary collapse

Constructor Details

#initializeParseMultipleValueQueryOutput

Returns a new instance of ParseMultipleValueQueryOutput.



12
13
14
15
# File 'lib/fluent/plugin/out_parse_multiple_value_query.rb', line 12

def initialize
  super
  require 'rack'
end

Instance Method Details

#configure(conf) ⇒ Object



20
21
22
# File 'lib/fluent/plugin/out_parse_multiple_value_query.rb', line 20

def configure(conf)
  super
end

#emit(tag, es, chain) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/fluent/plugin/out_parse_multiple_value_query.rb', line 32

def emit(tag, es, chain)
  es.each do |time, record|
    t = tag.dup
    new_record = parse_uri(record)

    t = @tag_prefix + t unless @tag_prefix.nil?

    Engine.emit(t, time, new_record)
  end
  chain.next
rescue StandardError => e
  log.warn("out_parse_multiple_value_uri_query: error_class:#{e.class} error_message:#{e.message} tag:#{tag} es:#{es} bactrace:#{e.backtrace.first}")
end

#parse_query_string(record, query_string) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/fluent/plugin/out_parse_multiple_value_query.rb', line 58

def parse_query_string(record, query_string)
  begin
    target = sub_key ? (record[sub_key] ||= {}) : record

    parsed_query = Rack::Utils.parse_nested_query(query_string)
    parsed_query.each do |key, value|
      if value == ''
        target[key] = ''
      else
        if value.class == Array && remove_empty_array
          if value.empty? || value == [''] || value == [nil]
            target.delete(key)
          else
            target[key] = value
          end
        else
          target[key] = value
        end
      end
    end
  rescue StandardError => e
    log.warn("out_parse_multiple_value_uri_query: error_class:#{e.class} error_message:#{e.message} record:#{record} bactrace:#{e.backtrace.first}")
  end
  record
end

#parse_uri(record) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/fluent/plugin/out_parse_multiple_value_query.rb', line 46

def parse_uri(record)
  return unless record[key]
  if only_query_string
    parse_query_string(record, record[key])
  else
    url = without_host ? "http://example.com#{record[key]}" : record[key]

    query = URI.parse(url).query
    parse_query_string(record, query)
  end
end

#shutdownObject



28
29
30
# File 'lib/fluent/plugin/out_parse_multiple_value_query.rb', line 28

def shutdown
  super
end

#startObject



24
25
26
# File 'lib/fluent/plugin/out_parse_multiple_value_query.rb', line 24

def start
  super
end