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

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
  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