fluent-plugin-ua-parser 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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