fluent-plugin-filter_empty_keys 0.0.2 → 0.0.3

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: 3d0399e8d3016a5935a1a367c460cfb93955239e
4
- data.tar.gz: 7e5da4cc2d21f1266718ae1254f21870b15f1811
3
+ metadata.gz: 8f90d886f79fd03b913bba8151528489e376380c
4
+ data.tar.gz: b9e146a6345f7d985ef0003edf71a758cf396d05
5
5
  SHA512:
6
- metadata.gz: d4ab6e7b4c9da64befecb73f00d23316dbe6cdc649504fd8a859d4278847727f7c59dfb7ab23cca8bd5083d803ab11621fddc62fd0eb360ab05700d6ba50d113
7
- data.tar.gz: defd246fb276b6853046dbfa7afbbf976fd93d57fbc15c0e2de888492dc21e94268433785e2b1b92b6458932cf3ecfa61d1b0a232fb6c271fd7874086053020d
6
+ metadata.gz: d1979232f4de1292104871165ca37889d5b3f6778c2a16da501da6615c5f1015f3fe614414be61aff48045ed2993acaa61bef5b889166700a5c901c1e4468f5e
7
+ data.tar.gz: f693eb2bba9f3faa8d6418dd6470ff8a749eb83f4f7cd809c752ee82bf615893ec4819ca543c2367c5b372271b51d808741df0ece6d10d42d1aad1d31f116072
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 0.0.3
2
+ Enhancements:
3
+
4
+ * Support custome keys empty values.
5
+
1
6
  # 0.0.1
2
7
 
3
8
  Enhancements:
data/README.md CHANGED
@@ -14,6 +14,50 @@ Use RubyGems:
14
14
  gem install fluent-plugin-filter_empty_keys
15
15
  ```
16
16
 
17
+ ## Configuration Examples
18
+
19
+ ```
20
+ <source>
21
+ type dummy
22
+ tag dummy
23
+ dummy {"field1":"","field2":"2","field3":"2013-02-12 22:04:14 UTC","field4":"","field5":"a,b,c"}
24
+ </source>
25
+
26
+ <filter **>
27
+ type empty_keys
28
+ </filter>
29
+
30
+ <match **>
31
+ type stdout
32
+ </match>
33
+ ```
34
+
35
+ You should see casted records:
36
+ ```
37
+ dummy {"field2":"2","field3":"2013-02-12 22:04:14 UTC","field5":"a,b,c"}
38
+ ```
39
+
40
+ ```
41
+ <source>
42
+ type dummy
43
+ tag dummy
44
+ dummy {"field0":0,"field1":"","field2":"Undefined","field3":"2013-02-12 22:04:14 UTC","field4":"","field5":"a,b,c"}
45
+ </source>
46
+
47
+ <filter **>
48
+ type empty_keys
49
+ empty_keys field0:0,field2:Undefined
50
+ </filter>
51
+
52
+ <match **>
53
+ type stdout
54
+ </match>
55
+ ```
56
+
57
+ You should see casted records:
58
+ ```
59
+ dummy {"field3":"2013-02-12 22:04:14 UTC","field5":"a,b,c"}
60
+ ```
17
61
 
18
62
  ## ChangeLog
19
63
 
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "fluent-plugin-filter_empty_keys"
6
- s.version = "0.0.2"
6
+ s.version = "0.0.3"
7
7
  s.authors = ["Al-waleed Shihadeh"]
8
8
  s.email = ["wshihadh@gmail.com"]
9
9
  s.homepage = "https://github.com/wshihadeh/fluent-plugin-filter_empty_keys.git"
@@ -5,8 +5,33 @@ module Fluent
5
5
  class EmptyKeysFilter < Filter
6
6
  Fluent::Plugin.register_filter('empty_keys', self)
7
7
 
8
+ config_param :empty_keys, :string, default: nil
9
+ config_param :keys_delimiter, :string, default: ','
10
+ config_param :values_delimiter, :string, default: ':'
11
+
12
+ def configure(conf)
13
+ super
14
+
15
+ @keys_empty_values = nil
16
+ @keys_empty_values = parse_empty_values_parameter unless @empty_keys.nil?
17
+ end
18
+
8
19
  def filter(tag, time, record)
9
- record.reject{ |k,v| (v.nil? || v.to_s.empty?) }
20
+ record.reject{ |k,v| (v.nil? || v.to_s.empty? || (!@keys_empty_values.nil? && v.to_s.eql?(@keys_empty_values[k]))) }
21
+ end
22
+
23
+ private
24
+
25
+ def parse_empty_values_parameter
26
+ keys_empty_values = {}
27
+
28
+ @empty_keys.split(@keys_delimiter).each do |pattern_name|
29
+ key, empty_value, format = pattern_name.split(@values_delimiter, 3)
30
+ raise ConfigError, "EmptyValue is needed" if empty_value.nil?
31
+ keys_empty_values[key] = empty_value
32
+ end
33
+
34
+ keys_empty_values
10
35
  end
11
36
  end
12
37
  end
@@ -23,14 +23,18 @@ class TypecastFilterTest < Test::Unit::TestCase
23
23
  end
24
24
 
25
25
  test 'test_empty_keys' do
26
- d = create_driver
26
+ d = create_driver(%[
27
+ empty_keys Undefined:Undefined,Remove:1
28
+ ])
27
29
  msg = {
28
- 'integer' => 1,
29
- 'nil' => nil,
30
- 'time' => '2013-02-12 22:01:15 UTC',
31
- 'bool' => 'true',
32
- 'array' => 'a,b,c',
33
- 'empty' => '',
30
+ 'integer' => 1,
31
+ 'nil' => nil,
32
+ 'time' => '2013-02-12 22:01:15 UTC',
33
+ 'bool' => 'true',
34
+ 'array' => 'a,b,c',
35
+ 'empty' => '',
36
+ 'Undefined' => 'Undefined',
37
+ 'Remove' => 1,
34
38
  }
35
39
  filtered = filter(d, [msg]).first[2]
36
40
  assert_equal 4, filtered.count
@@ -40,6 +44,7 @@ class TypecastFilterTest < Test::Unit::TestCase
40
44
  assert_equal true, filtered.key?("bool")
41
45
  assert_equal true, filtered.key?("array")
42
46
  assert_equal false, filtered.key?("empty")
43
-
47
+ assert_equal false, filtered.key?("Undefined")
48
+ assert_equal false, filtered.key?("Remove")
44
49
  end
45
50
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-filter_empty_keys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Al-waleed Shihadeh