Class: Fluent::Plugin::ParseRequestBodyExtractor
- Inherits:
-
Object
- Object
- Fluent::Plugin::ParseRequestBodyExtractor
- Defined in:
- lib/fluent/plugin/parse_request_body_extractor.rb
Instance Attribute Summary collapse
-
#log ⇒ Object
readonly
Returns the value of attribute log.
Instance Method Summary collapse
- #add_query_params_field(record) ⇒ Object
- #add_record_field(record) ⇒ Object
-
#initialize(plugin, conf) ⇒ ParseRequestBodyExtractor
constructor
A new instance of ParseRequestBodyExtractor.
Constructor Details
#initialize(plugin, conf) ⇒ ParseRequestBodyExtractor
Returns a new instance of ParseRequestBodyExtractor.
10 11 12 13 14 15 16 17 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/parse_request_body_extractor.rb', line 10 def initialize(plugin, conf) @log = plugin.log if plugin.is_a?(Fluent::Plugin::Output) unless have_tag_option?(plugin) raise Fluent::ConfigError, "out_parse_request_body: At least one of remove_tag_prefix/remove_tag_suffix/add_tag_prefix/add_tag_suffix is required to be set." end end @key = plugin.key @only = plugin.only @except = plugin.except @discard_key = plugin.discard_key @add_field_prefix = plugin.add_field_prefix @permit_blank_key = plugin.permit_blank_key if @only @include_keys = @only.split(/\s*,\s*/).inject({}) do |hash, i| hash[i] = true hash end end if @except @exclude_keys = @except.split(/\s*,\s*/).inject({}) do |hash, i| hash[i] = true hash end end @map = {} # <record></record> directive conf.elements.select { |element| element.name == 'record' }.each { |element| element.each_pair { |k, v| element.has_key?(k) # to suppress unread configuration warning v = v[1..v.size-2] if quoted_value?(v) @map[k] = v validate_json = Proc.new { begin dummy_text = Yajl::Encoder.encode('dummy_text') Yajl::Parser.parse(v.gsub(REGEXP_PLACEHOLDER_SCAN, dummy_text)) rescue Yajl::ParseError => e = "parse_body: failed to parse '#{v}' as json." log.error , error: e raise Fluent::ConfigError, end } validate_json.call if json?(v.tr('\'"\\', '')) } } end |
Instance Attribute Details
#log ⇒ Object (readonly)
Returns the value of attribute log.
8 9 10 |
# File 'lib/fluent/plugin/parse_request_body_extractor.rb', line 8 def log @log end |
Instance Method Details
#add_query_params_field(record) ⇒ Object
70 71 72 73 74 75 |
# File 'lib/fluent/plugin/parse_request_body_extractor.rb', line 70 def add_query_params_field(record) return record unless record[@key] add_query_params(record[@key], record) record.delete(@key) if @discard_key record end |
#add_record_field(record) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/fluent/plugin/parse_request_body_extractor.rb', line 62 def add_record_field(record) return record if @map.values.first.nil? @map.each do |record_key, value| record[record_key] = value end record end |