fluent-plugin-parse_multiple_value_query 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 341fa9246d8f6b4de99a2a370cc5a7e2ae10be62
4
+ data.tar.gz: cda8149b1812403982420aa7de9d7f3c31e2e707
5
+ SHA512:
6
+ metadata.gz: 10463412bb040bf940b4de8cd54899991073d60e85bd740e1b5643e4364c4b8183390810daaba6a221df2a31c3ae97fa9a0f7cbc3ae717fe04ee9a813615f95b
7
+ data.tar.gz: 657550dd8d2afd93710198ee6a06831c5e58c8782cb3f53308594cfda7960c7e704211b6c0c6563ee74a8afc59d89939101614af3d9dad6917a78781ea55829a
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/CHANGELOG.md ADDED
@@ -0,0 +1,2 @@
1
+ ## 0.0.1 (2015/02/07)
2
+ First release
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in fluent-plugin-parse_query_for_rails.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 畑 宏和
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,157 @@
1
+ # Fluent::Plugin::ParseMultipleValueQuery
2
+
3
+ Fluentd plugin to parse URL query parameters with Rack::Utils
4
+ I think most of the type of query can be parsed by [fluent-plugin-extract_query_params](https://github.com/kentaro/fluent-plugin-extract_query_params).
5
+
6
+ I wanted to be able to parse multiple value query string like this.
7
+ ```
8
+ input
9
+ "test" {
10
+ "url": "http://example.com?key1[]=value1&key1[]=value2&key1[]=value3&key2[]=value4&key2[]=value5"
11
+ }
12
+
13
+ output
14
+ "test" {
15
+ "url": "http://example.com?key1[]=value1&key1[]=value2&key1[]=value3&key2[]=value4&key2[]=value5",
16
+ "key1": ["value1", "value2", "value3"],
17
+ "key2": ["value4", "value5"],
18
+ "key3": [""]
19
+ }
20
+ ```
21
+
22
+ ## Installation
23
+
24
+ Add this line to your application's Gemfile:
25
+
26
+ ```ruby
27
+ gem 'fluent-plugin-parse_multiple_value_query'
28
+ ```
29
+
30
+ And then execute:
31
+
32
+ $ bundle
33
+
34
+ Or install it yourself as:
35
+
36
+ $ gem install fluent-parse_multiple_value_query
37
+
38
+ ## Usage
39
+
40
+ default usage
41
+ ```
42
+ <match foo.**>
43
+ type parse_multiple_value_query
44
+ key url
45
+ </match>
46
+
47
+ input
48
+ "test" {
49
+ "url": "http://example.com?key1[]=value1&key1[]=value2&key1[]=value3&key2[]=value4&key2[]=value5&key3[]="
50
+ }
51
+
52
+ output
53
+ "parsed.test" {
54
+ "url": "http://example.com?key1[]=value1&key1[]=value2&key1[]=value3&key2[]=value4&key2[]=value5&key3[]=",
55
+ "key1": ["value1", "value2", "value3"],
56
+ "key2": ["value4", "value5"],
57
+ "key3": [""]
58
+ }
59
+ ```
60
+
61
+ change tag prefix (default tag prefix is "parsed.")
62
+ ```
63
+ <match foo.**>
64
+ type parse_multiple_value_query
65
+ key url
66
+ tag_prefix changed.
67
+
68
+ </match>
69
+
70
+ input
71
+ "test" {
72
+ "url": "http://example.com?key1[]=value1&key1[]=value2&key1[]=value3&key2[]=value4&key2[]=value5&key3[]="
73
+ }
74
+
75
+ output
76
+ "changed.test" {
77
+ "url": "http://example.com?key1[]=value1&key1[]=value2&key1[]=value3&key2[]=value4&key2[]=value5&key3[]=",
78
+ "key1": ["value1", "value2", "value3"],
79
+ "key2": ["value4", "value5"],
80
+ "key3": [""]
81
+ }
82
+ ```
83
+
84
+ If target value is only query string without uri.
85
+ ```
86
+ <match foo.**>
87
+ type parse_multiple_value_query
88
+ only_query_string true
89
+ key query_string
90
+ </match>
91
+
92
+ input
93
+ "test" {
94
+ "query_string": "key1[]=value1&key1[]=value2&key1[]=value3&key2[]=value4&key2[]=value5&key3[]="
95
+ }
96
+
97
+ output
98
+ "parsed.test" {
99
+ "query_string": "key1[]=value1&key1[]=value2&key1[]=value3&key2[]=value4&key2[]=value5&key3[]=",
100
+ "key1": ["value1", "value2", "value3"],
101
+ "key2": ["value4", "value5"],
102
+ "key3": [""]
103
+ }
104
+ ```
105
+
106
+ If you want remove value that is like [] or [""] from record.
107
+ ```
108
+ <match foo.**>
109
+ type parse_multiple_value_query
110
+ key url
111
+ remove_empty_array true
112
+ </match>
113
+
114
+ input
115
+ "test" {
116
+ "url": "http://example.com?key1[]=value1&key1[]=value2&key1[]=value3&key2[]=value4&key2[]=value5&key3[]="
117
+ }
118
+
119
+ output
120
+ "parsed.test" {
121
+ "url": "http://example.com?key1[]=value1&key1[]=value2&key1[]=value3&key2[]=value4&key2[]=value5&key3[]=",
122
+ "key1": ["value1", "value2", "value3"],
123
+ "key2": ["value4", "value5"]
124
+ }
125
+ ```
126
+ ## Option Parameters
127
+
128
+ ### key :String
129
+ key is used to point a key thad value contains URL string or query string.
130
+
131
+ ### tag_prefix :String
132
+ Added tag prefix.
133
+ Default value is "parsed."
134
+
135
+ ### only_query_string :Bool
136
+ Parsed target isn't URL but only query string.
137
+ You must be this option setting true.
138
+ Default value is false.
139
+
140
+ ### remove_empty_array :Bool
141
+ You want to remove parsed value that has [] or [""] or [nil].
142
+ You must be this option setting true.
143
+ Default value is false.
144
+
145
+ ## Relative
146
+ - [fluent-plugin-extract_query_params](https://github.com/kentaro/fluent-plugin-extract_query_params)
147
+
148
+ ## Change log
149
+ See [CHANGELOG.md](https://github.com/h-michael-z/fluent-plugin-parse_multiple_value_query/blob/master/CHANGELOG.md) for details.
150
+
151
+ ## Contributing
152
+
153
+ 1. Fork it ( https://github.com/[my-github-username]/fluent-plugin-parse_multiple_value_query/fork )
154
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
155
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
156
+ 4. Push to the branch (`git push origin my-new-feature`)
157
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+ Rake::TestTask.new(:test) do |test|
5
+ test.libs << 'lib' << 'test'
6
+ test.pattern = 'test/**/test_*.rb'
7
+ test.verbose = true
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,29 @@
1
+ $:.push File.expand_path('../lib', __FILE__)
2
+ require 'fluent/plugin/parse_multiple_value_query/version'
3
+
4
+ Gem::Specification.new do |spec|
5
+ spec.name = "fluent-plugin-parse_multiple_value_query"
6
+ spec.version = Fluent::ParseMultipleValueQuery::VERSION
7
+ spec.authors = ["Hirokazu Hata"]
8
+ spec.email = ["h.hata.ai.t@gmail.com"]
9
+ spec.summary = %q{Fluentd plugin to parse query string with rails format}
10
+ spec.description = %q{Fluentd plugin to parse query string with rails format}
11
+ spec.homepage = ""
12
+ spec.license = "MIT"
13
+
14
+ spec.files = `git ls-files -z`.split("\x0")
15
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
+ spec.require_paths = ["lib"]
18
+
19
+ spec.add_dependency "fluentd"
20
+ spec.add_dependency "rack", "~> 1.3.1"
21
+ spec.add_development_dependency "bundler"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "pry"
24
+ spec.add_development_dependency "pry-byebug"
25
+ spec.add_development_dependency "pry-nav"
26
+ spec.add_development_dependency "test-unit"
27
+ spec.add_development_dependency "rr"
28
+ spec.add_development_dependency "timecop"
29
+ end
@@ -0,0 +1,83 @@
1
+ module Fluent
2
+ class ParseMultipleValueQueryOutput < Output
3
+ Fluent::Plugin.register_output('parse_multipe_value_query', self)
4
+
5
+ config_param :key, :string
6
+ config_param :tag_prefix, :string, :default => 'parsed.'
7
+ config_param :only_query_string, :bool, :default => false
8
+ config_param :remove_empty_array, :bool, :default => false
9
+
10
+ def initialize
11
+ super
12
+ require 'rack'
13
+ end
14
+
15
+ # Define `log` method for v0.10.42 or earlier
16
+ unless method_defined?(:log)
17
+ define_method("log") { $log }
18
+ end
19
+
20
+ def configure(conf)
21
+ super
22
+ end
23
+
24
+ def start
25
+ super
26
+ end
27
+
28
+ def shutdown
29
+ super
30
+ end
31
+
32
+ def emit(tag, es, chain)
33
+ es.each {|time, record|
34
+ t = tag.dup
35
+ new_record = parse_uri(record)
36
+
37
+ t = @tag_prefix + t unless @tag_prefix.nil?
38
+
39
+ Engine.emit(t, time, new_record)
40
+ }
41
+ chain.next
42
+ rescue => e
43
+ log.warn("out_parse_multiple_value_uri_query: error_class:#{e.class} error_message:#{e.message} tag:#{tag} es:#{es} bactrace:#{e.backtrace.first}")
44
+ end
45
+
46
+ def parse_uri(record)
47
+ if record[key]
48
+ if only_query_string
49
+ record = parse_query_string(record,record[key])
50
+ return record
51
+ else
52
+ query = URI.parse(record[key]).query
53
+ record = parse_query_string(record, query)
54
+ return record
55
+ end
56
+ end
57
+ end
58
+
59
+ def parse_query_string(record, query_string)
60
+ begin
61
+ parsed_query = Rack::Utils.parse_nested_query(query_string)
62
+ parsed_query.each do |key, value|
63
+ if value == ""
64
+ record[key] = ""
65
+ else
66
+ if value.class == Array && remove_empty_array
67
+ if value.empty? || value == [""] || value == [nil]
68
+ record.delete(key)
69
+ else
70
+ record[key] = value
71
+ end
72
+ else
73
+ record[key] = value
74
+ end
75
+ end
76
+ end
77
+ rescue => e
78
+ log.warn("out_parse_multiple_value_uri_query: error_class:#{e.class} error_message:#{e.message} record:#{record} bactrace:#{e.backtrace.first}")
79
+ end
80
+ return record
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,5 @@
1
+ module Fluent
2
+ module ParseMultipleValueQuery
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
data/test/helper.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+
12
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
13
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
14
+ require 'fluent/test'
15
+ unless ENV.has_key?('VERBOSE')
16
+ nulllogger = Object.new
17
+ nulllogger.instance_eval {|obj|
18
+ def method_missing(method, *args)
19
+ # pass
20
+ end
21
+ }
22
+ $log = nulllogger
23
+ end
24
+
25
+ require 'fluent/plugin/out_parse_multiple_value_query'
26
+
27
+ class Test::Unit::TestCase
28
+ end
@@ -0,0 +1,152 @@
1
+ require 'helper'
2
+ require 'rr'
3
+ require 'timecop'
4
+ require 'fluent/plugin/out_parse_multiple_value_query'
5
+
6
+ class ParseMultipleValueQueryOutTest < Test::Unit::TestCase
7
+
8
+ URL = 'http://example.com:80/?foo=bar&baz=qux&multiple[]=1&multiple[]=2&multiple[]=3&multiple2[]='
9
+ URL_INCLUDE_JP = 'http://example.com:80/?foo=bar&baz=qux&%E3%81%BE%E3%81%84%E3%81%91%E3%82%8B%5B%5D=%E3%82%AD%E3%82%B9%E3%82%AF&%E3%81%BE%E3%81%84%E3%81%91%E3%82%8B%5B%5D=%E3%82%B7%E3%82%A7%E3%83%B3%E3%82%AB%E3%83%BC&%E3%81%BE%E3%81%84%E3%81%91%E3%82%8B%5B%5D=%E3%82%B8%E3%83%A3%E3%82%AF%E3%82%BD%E3%83%B3'
10
+ ONLY_QUERY_STRING_TEST = 'foo=bar&baz=qux&multiple[]=1&multiple[]=2&multiple[]=3&%E3%81%BE%E3%81%84%E3%81%91%E3%82%8B%5B%5D=%E3%82%AD%E3%82%B9%E3%82%AF&%E3%81%BE%E3%81%84%E3%81%91%E3%82%8B%5B%5D=%E3%82%B7%E3%82%A7%E3%83%B3%E3%82%AB%E3%83%BC&%E3%81%BE%E3%81%84%E3%81%91%E3%82%8B%5B%5D=%E3%82%B8%E3%83%A3%E3%82%AF%E3%82%BD%E3%83%B3'
11
+ REMOVE_EMPTY_KEY = 'http://example.com:80/?foo=bar&baz=qux&multiple[]=&%E3%81%BE%E3%81%84%E3%81%91%E3%82%8B%5B%5D=%E3%82%AD%E3%82%B9%E3%82%AF&%E3%81%BE%E3%81%84%E3%81%91%E3%82%8B%5B%5D=%E3%82%B7%E3%82%A7%E3%83%B3%E3%82%AB%E3%83%BC&%E3%81%BE%E3%81%84%E3%81%91%E3%82%8B%5B%5D=%E3%82%B8%E3%83%A3%E3%82%AF%E3%82%BD%E3%83%B3&multiple2[]'
12
+
13
+ def setup
14
+ Fluent::Test.setup
15
+ Timecop.freeze(@time)
16
+ end
17
+
18
+ teardown do
19
+ Timecop.return
20
+ end
21
+
22
+ def create_driver(conf, tag)
23
+ Fluent::Test::OutputTestDriver.new(
24
+ Fluent::ParseMultipleValueQueryOutput, tag
25
+ ).configure(conf)
26
+ end
27
+
28
+ def emit(conf, record, tag='test')
29
+ d = create_driver(conf, tag)
30
+ d.run {d.emit(record)}
31
+ emits = d.emits
32
+ end
33
+
34
+ def test_configure
35
+ d = create_driver(%[
36
+ key url
37
+ only_query_string true
38
+ ], "test")
39
+
40
+ assert_equal 'url', d.instance.key
41
+ assert_equal true, d.instance.only_query_string
42
+ end
43
+
44
+ def test_filter_record
45
+ conf = %[
46
+ key url
47
+ ]
48
+
49
+ record = {
50
+ 'url' => URL,
51
+ }
52
+
53
+ emits = emit(conf, record)
54
+ # binding.pry
55
+ emits.each_with_index do |(tag, time, record), i|
56
+ assert_equal 'parsed.test', tag
57
+ assert_equal URL, record['url']
58
+ assert_equal 'bar', record['foo']
59
+ assert_equal 'qux', record['baz']
60
+ assert_equal ["1", "2", "3"], record['multiple']
61
+ assert_equal [""], record['multiple2']
62
+ end
63
+
64
+ end
65
+
66
+ def test_jp_filter_record
67
+ conf = %[
68
+ key url
69
+ ]
70
+
71
+ record = {
72
+ 'url' => URL_INCLUDE_JP,
73
+ }
74
+
75
+ emits = emit(conf, record)
76
+
77
+ emits.each_with_index do |(tag, time, record), i|
78
+ assert_equal 'parsed.test', tag
79
+ assert_equal URL_INCLUDE_JP, record['url']
80
+ assert_equal 'bar', record['foo']
81
+ assert_equal 'qux', record['baz']
82
+ assert_equal ["キスク", "シェンカー", "ジャクソン"], record['まいける']
83
+ end
84
+
85
+ end
86
+
87
+ def test_only_query_string_filter_record
88
+ conf = %[
89
+ key query_string
90
+ only_query_string true
91
+ ]
92
+
93
+ record = {
94
+ 'query_string' => ONLY_QUERY_STRING_TEST,
95
+ }
96
+
97
+ emits = emit(conf, record)
98
+
99
+ emits.each_with_index do |(tag, time, record), i|
100
+ assert_equal 'parsed.test', tag
101
+ assert_equal ONLY_QUERY_STRING_TEST, record['query_string']
102
+ assert_equal 'bar', record['foo']
103
+ assert_equal 'qux', record['baz']
104
+ assert_equal ["1", "2", "3"], record['multiple']
105
+ assert_equal ["キスク", "シェンカー", "ジャクソン"], record['まいける']
106
+ end
107
+ end
108
+
109
+ def test_remove_empty_array
110
+ conf = %[
111
+ key url
112
+ remove_empty_array true
113
+ ]
114
+
115
+ record = {
116
+ 'url' => REMOVE_EMPTY_KEY,
117
+ }
118
+
119
+ emits = emit(conf, record)
120
+
121
+ emits.each_with_index do |(tag, time, record), i|
122
+ assert_equal 'parsed.test', tag
123
+ assert_equal REMOVE_EMPTY_KEY, record['url']
124
+ assert_equal 'bar', record['foo']
125
+ assert_equal 'qux', record['baz']
126
+ assert_equal nil, record['multiple']
127
+ assert_equal nil, record['multiple2']
128
+ end
129
+ end
130
+
131
+ def test_tag_prefix
132
+ conf = %[
133
+ key url
134
+ tag_prefix prefix.
135
+ ]
136
+
137
+ record = {
138
+ 'url' => URL,
139
+ }
140
+
141
+ emits = emit(conf, record)
142
+
143
+ emits.each_with_index do |(tag, time, record), i|
144
+ assert_equal 'prefix.test', tag
145
+ assert_equal URL, record['url']
146
+ assert_equal 'bar', record['foo']
147
+ assert_equal 'qux', record['baz']
148
+ assert_equal ["1", "2", "3"], record['multiple']
149
+ end
150
+ end
151
+
152
+ end
metadata ADDED
@@ -0,0 +1,197 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-parse_multiple_value_query
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Hirokazu Hata
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fluentd
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rack
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.3.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.3.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-byebug
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry-nav
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: test-unit
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rr
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: timecop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description: Fluentd plugin to parse query string with rails format
154
+ email:
155
+ - h.hata.ai.t@gmail.com
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - ".gitignore"
161
+ - CHANGELOG.md
162
+ - Gemfile
163
+ - LICENSE.txt
164
+ - README.md
165
+ - Rakefile
166
+ - fluent-plugin-parse_multiple_value_query.gemspec
167
+ - lib/fluent/plugin/out_parse_multiple_value_query.rb
168
+ - lib/fluent/plugin/parse_multiple_value_query/version.rb
169
+ - test/helper.rb
170
+ - test/plugin/test_out_parse_multiple_value_query.rb
171
+ homepage: ''
172
+ licenses:
173
+ - MIT
174
+ metadata: {}
175
+ post_install_message:
176
+ rdoc_options: []
177
+ require_paths:
178
+ - lib
179
+ required_ruby_version: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ required_rubygems_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ requirements: []
190
+ rubyforge_project:
191
+ rubygems_version: 2.2.2
192
+ signing_key:
193
+ specification_version: 4
194
+ summary: Fluentd plugin to parse query string with rails format
195
+ test_files:
196
+ - test/helper.rb
197
+ - test/plugin/test_out_parse_multiple_value_query.rb