18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/fluent/plugin/filter_query_string_parser.rb', line 18
def filter(tag, time, record)
raw_value = record[@key_name]
if raw_value.nil?
if @emit_invalid_record_to_error
router.emit_error_event(tag, time, record, ArgumentError.new("#{@key_name} does not exist"))
end
return @ignore_key_not_exist ? nil : record
end
begin
params = Addressable::URI.form_unencode(raw_value)
params = params.reject {|k, _| k.nil? || k.empty? }
unless params.empty?
if @multi_value_params
values = Hash.new {|h,k| h[k] = [] }
params.each{|pair| values[pair[0]].push(pair[1])}
elsif @multi_value_param_names
values = {}
params.each do |k, v|
if @multi_value_param_names.include?(k)
(values[k] ||= []) << v
else
values[k] = v
end
end
else
values = Hash[params]
end
if @inject_key_prefix
values = Hash[values.map{|k,v| [ @inject_key_prefix + k, v ]}]
end
r = @hash_value_field ? { @hash_value_field => values } : values
record = record.merge(r)
end
rescue => e
log.warn "parse failed #{e.message}" unless @suppress_parse_error_log
end
return record
end
|