fluent-plugin-fluent-plugin-json-size-limit 0.1.24 → 0.1.27

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
  SHA256:
3
- metadata.gz: 20e10aae10321603fa97bf64f44a8c5aaece831e988ed7f14be0799b328f13cb
4
- data.tar.gz: a29af8031f826c2b4873ba3b976569b2f66fb62d9b2471dc7619f7198ff3204d
3
+ metadata.gz: fc2d0b868e3e3879068c4c4adb44caf832379ad4d927f09e72f02223cc9efe9b
4
+ data.tar.gz: cfa85d22a6b21b41ff7541f6040ca22c4ed5fbf20b13f818392928e1f5d5624a
5
5
  SHA512:
6
- metadata.gz: '0795d0a432657db02bc710c6a6df44c92ed03048a4fc7b84511b3bc78a9b3871f9fdfaa49faa0a99fd2dd2a846a84a0cd7e717a4abbf443ce0265dd69a38510b'
7
- data.tar.gz: dcf06ae947ded1e2b08250b4d4c81187e68a8dc6bd218ac76904b798d0dcf54ffec692b3ea6a974a8131e283b3abbc02baf2b4fd6af7b88a1835367ab6a8c869
6
+ metadata.gz: 18f99e8b8e7841be35f024b481676e7cb0da6b9f045d4ff67479c6cb6325a8ca74452f469f8d3631878c3bf2dbaa179af6dd4ab76392e912656cd44a70c9fc23
7
+ data.tar.gz: b3eae5c689ed71874327ba01d30803321b19f5848f8977f8e2b57862650adf1504deb263181ad13232ee97dcc6fa1a5c396c5014cb30a0257ddd8865d9b759bc
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "fluent-plugin-fluent-plugin-json-size-limit"
6
- spec.version = "0.1.24"
6
+ spec.version = "0.1.27"
7
7
  spec.authors = ["Mykola Panin"]
8
8
  spec.email = ["mykola.panin@creatoriq.com"]
9
9
 
@@ -42,28 +42,36 @@ module Fluent
42
42
  attempts = 0
43
43
  while obj.to_json.bytesize > target_size && attempts < 100
44
44
  excess_size = obj.to_json.bytesize - target_size
45
- if obj.is_a?(Hash)
46
- reduce_hash(obj, excess_size)
47
- elsif obj.is_a?(Array)
48
- obj.each { |element| reduce_size(element, target_size) }
49
- end
45
+ perform_reduction(obj, excess_size)
50
46
  attempts += 1
51
47
  end
52
48
  end
53
49
 
54
- def reduce_hash(hash_obj, excess_size)
55
- hash_obj.each do |key, value|
56
- break if hash_obj.to_json.bytesize <= target_size
57
-
58
- if value.is_a?(String)
59
- reduction_amount = (value.length.to_f / hash_obj.to_json.bytesize) * excess_size
60
- new_length = [value.length - reduction_amount, 0].max
61
- hash_obj[key] = value[0...new_length]
62
- elsif value.is_a?(Hash) || value.is_a?(Array)
63
- reduce_size(value, target_size)
50
+ def perform_reduction(obj, excess_size)
51
+ if obj.is_a?(Hash)
52
+ obj.each do |key, value|
53
+ apply_reduction(value, excess_size)
64
54
  end
55
+ elsif obj.is_a?(Array)
56
+ obj.each { |element| apply_reduction(element, excess_size) }
57
+ elsif obj.is_a?(String)
58
+ reduce_string(obj, excess_size)
65
59
  end
66
60
  end
61
+
62
+ def apply_reduction(element, excess_size)
63
+ if element.is_a?(String)
64
+ reduce_string(element, excess_size)
65
+ elsif element.is_a?(Hash) || element.is_a?(Array)
66
+ reduce_size(element, element.to_json.bytesize - excess_size)
67
+ end
68
+ end
69
+
70
+ def reduce_string(str, excess_size)
71
+ reduction_amount = (str.length.to_f / str.to_json.bytesize) * excess_size
72
+ new_length = [str.length - reduction_amount, 0].max
73
+ str.replace(str[0...new_length])
74
+ end
67
75
  end
68
76
  end
69
77
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-fluent-plugin-json-size-limit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.24
4
+ version: 0.1.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mykola Panin