fluent-plugin-ua-parser 0.1.0 → 0.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0bfaad885e169c908b5b18e1728c562d4a79e52e
4
- data.tar.gz: 8fe29abe85417832006f06e754d0c32cc38f0816
3
+ metadata.gz: bd7243e11aeb13ee3450f17e66c69dee21b52c64
4
+ data.tar.gz: 39fee6ce9cadd51ef84cd397b8ef6f7312d15b13
5
5
  SHA512:
6
- metadata.gz: 29830d7fcff2f8a16571197ec9a611800ccc628ad400b9bb17a75be5a9f0137c3ba099a56990e844a236ce806e61e6699f9bf6c9065c19b2f5cd8a2f8f564df9
7
- data.tar.gz: c4b72e1c42ab599f1431054d5b0a5379aa823eb9ec60ea6b4ceffff24605b0900e3d947d355498512019ca43af6648259968ba5e7e0a7d933f212352933f97db
6
+ metadata.gz: 7cebd1b5f2161188e90e20f034bea87e23cabbea0fa164f59d49ba67202d03a209789880587efb301b69442d5ea197e3c7cfd3f7b7a19038ddd9622862102587
7
+ data.tar.gz: 9cbe5d70ab0205b7bca84bea16e2fe8b54f178b5fc4479808733964cb8672bec2ca7b3c90e32d7ed14c8cf90853fd5034436e4efac50a41ee3e007a0f355a9e7
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Fluent-plugin-ua-parser
1
+ # fluent-plugin-ua-parser
2
2
 
3
3
  [Fluentd](http://fluentd.org) filter plugin to parse user-agent.
4
4
 
@@ -26,23 +26,24 @@ $ sudo td-agent-gem install fluent-plugin-ua-parser
26
26
 
27
27
  Assuming following inputs are coming:
28
28
 
29
- ```
29
+ ```json
30
30
  access.nginx: {
31
31
  "remote_addr":"10.20.30.40",
32
32
  "scheme":"http", "method":"GET", "host":"example.com",
33
33
  "path":"/", "query":"-", "req_bytes":200, "referer":"-",
34
- "user_agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36",
35
- "status":200, "res_bytes":800, "res_body_bytes":600, "taken_time":0.001
34
+ "status":200, "res_bytes":800, "res_body_bytes":600, "taken_time":0.001,
35
+ "user_agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36"
36
36
  }
37
37
  ```
38
38
 
39
39
  then output bocomes as belows:
40
40
 
41
- ```
41
+ ```json
42
42
  access.nginx: {
43
43
  "remote_addr":"10.20.30.40",
44
44
  "scheme":"http", "method":"GET", "host":"example.com",
45
45
  "path":"/", "query":"-", "req_bytes":200, "referer":"-",
46
+ "status":200, "res_bytes":800, "res_body_bytes":600, "taken_time":0.001,
46
47
  "user_agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36",
47
48
  "ua":{
48
49
  "browser":{
@@ -55,8 +56,7 @@ access.nginx: {
55
56
  "version":""
56
57
  },
57
58
  "device":"Other"
58
- },
59
- "status":200, "res_bytes":800, "res_body_bytes":600, "taken_time":0.001
59
+ }
60
60
  }
61
61
  ```
62
62
 
@@ -67,30 +67,31 @@ access.nginx: {
67
67
  @type ua_parser
68
68
  key_name ua_string
69
69
  delete_key yes
70
- out_prefix ua
70
+ out_key ua
71
71
  patterns_path /etc/td-agent/data/regexes.yaml
72
72
  </filter>
73
73
  ```
74
74
 
75
75
  Assuming following inputs are coming:
76
76
 
77
- ```
77
+ ```json
78
78
  access.apache: {
79
79
  "remote_addr":"10.20.30.40",
80
80
  "scheme":"http", "method":"GET", "host":"example.com",
81
81
  "path":"/", "query":"-", "req_bytes":200, "referer":"-",
82
- "ua_string":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/601.2.7 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.7",
83
- "status":200, "res_bytes":800, "res_body_bytes":600, "taken_time":0.001
82
+ "status":200, "res_bytes":800, "res_body_bytes":600, "taken_time":0.001,
83
+ "ua_string":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/601.2.7 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.7"
84
84
  }
85
85
  ```
86
86
 
87
87
  then output bocomes as belows:
88
88
 
89
- ```
89
+ ```json
90
90
  access.apache: {
91
91
  "remote_addr":"10.20.30.40",
92
92
  "scheme":"http", "method":"GET", "host":"example.com",
93
93
  "path":"/", "query":"-", "req_bytes":200, "referer":"-",
94
+ "status":200, "res_bytes":800, "res_body_bytes":600, "taken_time":0.001,
94
95
  "ua":{
95
96
  "browser":{
96
97
  "family":"Safari",
@@ -103,8 +104,7 @@ access.apache: {
103
104
  "major_version":10
104
105
  },
105
106
  "device":"Other"
106
- },
107
- "status":200, "res_bytes":800, "res_body_bytes":600, "taken_time":0.001
107
+ }
108
108
  }
109
109
  ```
110
110
 
@@ -119,7 +119,7 @@ access.apache: {
119
119
 
120
120
  Delete input key. default false.
121
121
 
122
- - out_prefix *string*
122
+ - out_key *string*
123
123
 
124
124
  Output prefix key name. default ua.
125
125
 
@@ -131,7 +131,7 @@ access.apache: {
131
131
 
132
132
  ## TODO
133
133
 
134
- * patches welcome!
134
+ * flatten option (join hashed data by '_')
135
135
 
136
136
 
137
137
  ## Contributing
data/Rakefile CHANGED
@@ -1,2 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+ Rake::TestTask.new(:test) do |test|
4
+ test.libs << 'lib' << 'test'
5
+ test.pattern = 'test/**/test_*.rb'
6
+ test.verbose = true
7
+ end
2
8
 
9
+ task :default => :test
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fluent-plugin-ua-parser"
7
- spec.version = "0.1.0"
7
+ spec.version = "0.2.0"
8
8
  spec.authors = ["Yuri Umezaki"]
9
9
  spec.email = ["bungoume@gmail.com"]
10
10
  spec.homepage = "https://github.com/bungoume/fluent-plugin-ua-parser"
@@ -20,5 +20,9 @@ Gem::Specification.new do |spec|
20
20
  spec.add_runtime_dependency "fluentd", ">= 0.12"
21
21
  spec.add_runtime_dependency "user_agent_parser", ">= 2.2.0"
22
22
  spec.add_runtime_dependency "lru_redux", ">= 1.0.0"
23
+ spec.add_development_dependency "bundler"
23
24
  spec.add_development_dependency "rake"
25
+ if defined?(RUBY_VERSION) && RUBY_VERSION > '2.2'
26
+ spec.add_development_dependency "test-unit", '~> 3'
27
+ end
24
28
  end
@@ -12,7 +12,7 @@ module Fluent
12
12
 
13
13
  config_param :key_name, :string, :default => 'user_agent'
14
14
  config_param :delete_key, :bool, :default => false
15
- config_param :out_prefix, :string, :default => 'ua'
15
+ config_param :out_key, :string, :default => 'ua'
16
16
  # config_param :flatten, :bool :default => false
17
17
  config_param :patterns_path, :string, :default => nil
18
18
 
@@ -52,5 +52,5 @@ module Fluent
52
52
  data['device'] = ua.device.to_s
53
53
  data
54
54
  end
55
- end
55
+ end if defined?(Filter) # Support only >= v0.12
56
56
  end
@@ -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/filter_ua_parser'
26
+
27
+ class Test::Unit::TestCase
28
+ end
@@ -0,0 +1,46 @@
1
+ require 'helper'
2
+
3
+ class UaParserFilterTest < Test::Unit::TestCase
4
+ def setup
5
+ Fluent::Test.setup
6
+ end
7
+
8
+ CONFIG = %[
9
+ type ua_parser
10
+ key_name user_agent
11
+ delete_key no
12
+ out_key ua
13
+ ]
14
+
15
+ def create_driver(conf=CONFIG,tag='test')
16
+ Fluent::Test::FilterTestDriver.new(Fluent::UaParserFilter, tag).configure(conf)
17
+ end
18
+
19
+ def test_configure
20
+ d = create_driver(CONFIG)
21
+ assert_equal 'user_agent', d.instance.config['key_name']
22
+ assert_equal 'ua', d.instance.config['out_key']
23
+ end
24
+
25
+ def test_emit
26
+ d1 = create_driver(CONFIG)
27
+ ua = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36'
28
+ emit_message = 'error has occoured.'
29
+ emit_extra = {'foo' => {'array' => [1,2,3]}, 'hash' => {'nest' => 'data'}}
30
+
31
+ d1.run do
32
+ d1.emit({'user_agent' => ua})
33
+ end
34
+ emits = d1.emits
35
+ assert_equal 1, emits.length
36
+ assert_equal 'test', emits[0][0] # tag
37
+ ua_object = emits[0][2]['ua']
38
+ assert_equal 'Chrome', ua_object['browser']['family']
39
+ assert_equal 46, ua_object['browser']['major_version']
40
+ assert_equal '46.0.2490', ua_object['browser']['version']
41
+ assert_equal 'Windows 7', ua_object['os']['family']
42
+ assert_equal '', ua_object['os']['version']
43
+ assert_equal 'Other', ua_object['device']
44
+ end
45
+
46
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-ua-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuri Umezaki
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
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'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,20 @@ dependencies:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: test-unit
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3'
69
97
  description: Fluentd filter plugin to parse user-agent
70
98
  email:
71
99
  - bungoume@gmail.com
@@ -80,6 +108,8 @@ files:
80
108
  - Rakefile
81
109
  - fluent-plugin-ua-parser.gemspec
82
110
  - lib/fluent/plugin/filter_ua_parser.rb
111
+ - test/helper.rb
112
+ - test/plugin/test_filter_ua_parser.rb
83
113
  homepage: https://github.com/bungoume/fluent-plugin-ua-parser
84
114
  licenses:
85
115
  - APLv2
@@ -104,4 +134,6 @@ rubygems_version: 2.4.5.1
104
134
  signing_key:
105
135
  specification_version: 4
106
136
  summary: Fluentd filter plugin to parse user-agent
107
- test_files: []
137
+ test_files:
138
+ - test/helper.rb
139
+ - test/plugin/test_filter_ua_parser.rb