fluent-plugin-extract_query_params 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1396de021b24f6213a916e19163285ae71c510fa
4
+ data.tar.gz: 142ad5a3809f685a61a197cdf055af0a1aa295e9
5
+ SHA512:
6
+ metadata.gz: 50f99f2bdd7ca5d0f83d197c0a8d7beb39c491f160b7dfde64a388023a51e9e971e2f2173db2b88d593b5c3e00d23f5dbeb3afd4c8156feeac110a995090d04f
7
+ data.tar.gz: f92c5e653b1311665e7ec04e39631a453cbc88bd55195f69e56bd559dcbfbfbb124b6f544a97b5af887a697649dd1c2d2e25ae408726d2fe3c5928b6ad02f770
data/README.md CHANGED
@@ -64,6 +64,22 @@ If set, the key/value whose key is included `except` will NOT be added to the re
64
64
 
65
65
  If set to `true`, the original `key` url will be discarded from the record. Defaults to `false` (preserve key).
66
66
 
67
+ ### add_url_scheme
68
+
69
+ If set to `true`, scheme (use `url_scheme` key) will be added to the record. Defaults to `false`.
70
+
71
+ ### add_url_host
72
+
73
+ If set to `true`, host (use `url_host` key) will be added to the record. Defaults to `false`.
74
+
75
+ ### add_url_port
76
+
77
+ If set to `true`, port (use `url_port` key) will be added to the record. Defaults to `false`.
78
+
79
+ ### add_url_path
80
+
81
+ If set to `true`, path (use `url_path` key) will be added to the record. Defaults to `false`.
82
+
67
83
  ## Installation
68
84
 
69
85
  Add this line to your application's Gemfile:
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = 'fluent-plugin-extract_query_params'
3
- gem.version = '0.0.7'
3
+ gem.version = '0.0.8'
4
4
  gem.authors = ['Kentaro Kuribayashi']
5
5
  gem.email = ['kentarok@gmail.com']
6
6
  gem.homepage = 'http://github.com/kentaro/fluent-plugin-extract_query_params'
@@ -13,6 +13,11 @@ module Fluent
13
13
  config_param :add_field_prefix, :string, :default => nil
14
14
  config_param :permit_blank_key, :bool, :default => false
15
15
 
16
+ config_param :add_url_scheme, :bool, :default => false
17
+ config_param :add_url_host, :bool, :default => false
18
+ config_param :add_url_port, :bool, :default => false
19
+ config_param :add_url_path, :bool, :default => false
20
+
16
21
  def initialize
17
22
  super
18
23
  require 'webrick'
@@ -58,6 +63,31 @@ module Fluent
58
63
  rescue URI::InvalidURIError => e
59
64
  URI.parse(WEBrick::HTTPUtils.escape(record[key]))
60
65
  end
66
+
67
+ if @add_url_scheme
68
+ url_scheme_key = 'url_scheme'
69
+ url_scheme_key = @add_field_prefix + url_scheme_key if @add_field_prefix
70
+ record[url_scheme_key] = url.scheme || ''
71
+ end
72
+
73
+ if @add_url_host
74
+ url_host_key = 'url_host'
75
+ url_host_key = @add_field_prefix + url_host_key if @add_field_prefix
76
+ record[url_host_key] = url.host || ''
77
+ end
78
+
79
+ if @add_url_port
80
+ url_port_key = 'url_port'
81
+ url_port_key = @add_field_prefix + url_port_key if @add_field_prefix
82
+ record[url_port_key] = url.port || ''
83
+ end
84
+
85
+ if @add_url_path
86
+ url_path_key = 'url_path'
87
+ url_path_key = @add_field_prefix + url_path_key if @add_field_prefix
88
+ record[url_path_key] = url.path || ''
89
+ end
90
+
61
91
  unless url.query.nil?
62
92
  url.query.split('&').each do |pair|
63
93
  key, value = pair.split('=').map { |i| URI.unescape(i) }
@@ -3,7 +3,8 @@
3
3
  require 'test_helper'
4
4
 
5
5
  class ExtractQueryParamsOutputTest < Test::Unit::TestCase
6
- URL = 'http://example.com/?foo=bar&baz=qux&%E3%83%A2%E3%83%AA%E3%82%B9=%E3%81%99%E3%81%9F%E3%81%98%E3%81%8A'
6
+ URL = 'http://example.com:80/?foo=bar&baz=qux&%E3%83%A2%E3%83%AA%E3%82%B9=%E3%81%99%E3%81%9F%E3%81%98%E3%81%8A'
7
+ QUERY_ONLY = '?foo=bar&baz=qux&%E3%83%A2%E3%83%AA%E3%82%B9=%E3%81%99%E3%81%9F%E3%81%98%E3%81%8A'
7
8
 
8
9
  def setup
9
10
  Fluent::Test.setup
@@ -325,4 +326,87 @@ class ExtractQueryParamsOutputTest < Test::Unit::TestCase
325
326
  assert_equal 2, r.size
326
327
  assert_equal 'b', r['a']
327
328
  end
329
+
330
+ def test_filter_record_with_url_scheme_host_port_path
331
+ d = create_driver(%[
332
+ key url
333
+ add_tag_prefix extracted.
334
+
335
+ add_url_scheme true
336
+ add_url_host true
337
+ add_url_port true
338
+ add_url_path true
339
+ ])
340
+ tag = 'test'
341
+ record = {
342
+ 'url' => URL,
343
+ }
344
+ d.instance.filter_record('test', Time.now, record)
345
+
346
+ assert_equal URL, record['url']
347
+ assert_equal 'bar', record['foo']
348
+ assert_equal 'qux', record['baz']
349
+ assert_equal 'すたじお', record['モリス']
350
+ assert_equal 'http', record['url_scheme']
351
+ assert_equal 'example.com', record['url_host']
352
+ assert_equal 80, record['url_port']
353
+ assert_equal '/', record['url_path']
354
+ end
355
+
356
+ def test_filter_record_with_field_prefix_and_url_scheme_host_port_path
357
+ d = create_driver(%[
358
+ key url
359
+ add_field_prefix query_
360
+ add_tag_prefix extracted.
361
+
362
+ add_url_scheme true
363
+ add_url_host true
364
+ add_url_port true
365
+ add_url_path true
366
+ ])
367
+
368
+ tag = 'test'
369
+ record = {
370
+ 'url' => URL,
371
+ }
372
+ d.instance.filter_record('test', Time.now, record)
373
+
374
+ assert_equal URL, record['url']
375
+ assert_nil record['foo']
376
+ assert_nil record['baz']
377
+ assert_nil record['モリス']
378
+ assert_equal 'bar', record['query_foo']
379
+ assert_equal 'qux', record['query_baz']
380
+ assert_equal 'すたじお', record['query_モリス']
381
+ assert_equal 'http', record['query_url_scheme']
382
+ assert_equal 'example.com', record['query_url_host']
383
+ assert_equal 80, record['query_url_port']
384
+ assert_equal '/', record['query_url_path']
385
+ end
386
+
387
+ def test_filter_record_from_query_only_url_with_url_scheme_host_port_path
388
+ d = create_driver(%[
389
+ key url
390
+ add_tag_prefix extracted.
391
+
392
+ add_url_scheme true
393
+ add_url_host true
394
+ add_url_port true
395
+ add_url_path true
396
+ ])
397
+ tag = 'test'
398
+ record = {
399
+ 'url' => QUERY_ONLY,
400
+ }
401
+ d.instance.filter_record('test', Time.now, record)
402
+
403
+ assert_equal QUERY_ONLY, record['url']
404
+ assert_equal 'bar', record['foo']
405
+ assert_equal 'qux', record['baz']
406
+ assert_equal 'すたじお', record['モリス']
407
+ assert_equal '', record['url_scheme']
408
+ assert_equal '', record['url_host']
409
+ assert_equal '', record['url_port']
410
+ assert_equal '', record['url_path']
411
+ end
328
412
  end
metadata CHANGED
@@ -1,46 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-extract_query_params
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
5
- prerelease:
4
+ version: 0.0.8
6
5
  platform: ruby
7
6
  authors:
8
7
  - Kentaro Kuribayashi
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-09-30 00:00:00.000000000 Z
11
+ date: 2013-12-20 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: fluentd
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  description: Fluentd plugin to extract key/values from URL query parameters.
@@ -62,27 +57,26 @@ files:
62
57
  homepage: http://github.com/kentaro/fluent-plugin-extract_query_params
63
58
  licenses:
64
59
  - MIT
60
+ metadata: {}
65
61
  post_install_message:
66
62
  rdoc_options: []
67
63
  require_paths:
68
64
  - lib
69
65
  required_ruby_version: !ruby/object:Gem::Requirement
70
- none: false
71
66
  requirements:
72
- - - ! '>='
67
+ - - '>='
73
68
  - !ruby/object:Gem::Version
74
69
  version: '0'
75
70
  required_rubygems_version: !ruby/object:Gem::Requirement
76
- none: false
77
71
  requirements:
78
- - - ! '>='
72
+ - - '>='
79
73
  - !ruby/object:Gem::Version
80
74
  version: '0'
81
75
  requirements: []
82
76
  rubyforge_project:
83
- rubygems_version: 1.8.23
77
+ rubygems_version: 2.0.14
84
78
  signing_key:
85
- specification_version: 3
79
+ specification_version: 4
86
80
  summary: Fluentd plugin to extract key/values from URL query parameters
87
81
  test_files:
88
82
  - test/plugin/test_out_extract_query_params.rb