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

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: b0e9b320a7350dc13269f72a2ff8f2c4a99040cd3a0b181dab88adc633ca503c
4
+ data.tar.gz: '04654296b53a8bd31319b747b9a070f79a3245ac19d510f5a7fb858014d0f43a'
5
5
  SHA512:
6
- metadata.gz: '0795d0a432657db02bc710c6a6df44c92ed03048a4fc7b84511b3bc78a9b3871f9fdfaa49faa0a99fd2dd2a846a84a0cd7e717a4abbf443ce0265dd69a38510b'
7
- data.tar.gz: dcf06ae947ded1e2b08250b4d4c81187e68a8dc6bd218ac76904b798d0dcf54ffec692b3ea6a974a8131e283b3abbc02baf2b4fd6af7b88a1835367ab6a8c869
6
+ metadata.gz: 91c2e0697c2944367ef3fdae15283ae4341854e1e85c14a7e0454a6b39da502338e53b28b1761547150144a39a782ca2f9850f0cd3d79ed3d45a027dfd9604db
7
+ data.tar.gz: 7844533169a7e2b1fb0efcb8c0f02d99233ce2187b48eaf20bbe1402c4620150fc013837e468fd789c43d7dd6f46d98b6943c1a76c6beed9235185a21a3dfda0
@@ -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.26"
7
7
  spec.authors = ["Mykola Panin"]
8
8
  spec.email = ["mykola.panin@creatoriq.com"]
9
9
 
@@ -41,29 +41,42 @@ module Fluent
41
41
  def reduce_size(obj, target_size)
42
42
  attempts = 0
43
43
  while obj.to_json.bytesize > target_size && attempts < 100
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
44
+ perform_reduction(obj, target_size)
50
45
  attempts += 1
51
46
  end
52
47
  end
53
48
 
49
+ def perform_reduction(obj, target_size)
50
+ excess_size = obj.to_json.bytesize - target_size
51
+
52
+ if obj.is_a?(Hash)
53
+ reduce_hash(obj, excess_size)
54
+ elsif obj.is_a?(Array)
55
+ reduce_array(obj, target_size)
56
+ end
57
+ end
58
+
54
59
  def reduce_hash(hash_obj, excess_size)
55
60
  hash_obj.each do |key, value|
56
- break if hash_obj.to_json.bytesize <= target_size
57
-
58
61
  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
+ reduce_string(hash_obj, key, value, excess_size)
62
63
  elsif value.is_a?(Hash) || value.is_a?(Array)
63
- reduce_size(value, target_size)
64
+ reduce_size(value, excess_size)
64
65
  end
65
66
  end
66
67
  end
68
+
69
+ def reduce_array(array_obj, target_size)
70
+ array_obj.each do |element|
71
+ reduce_size(element, target_size) if element.is_a?(Hash) || element.is_a?(Array)
72
+ end
73
+ end
74
+
75
+ def reduce_string(hash_obj, key, value, excess_size)
76
+ reduction_amount = (value.length.to_f / hash_obj.to_json.bytesize) * excess_size
77
+ new_length = [value.length - reduction_amount, 0].max
78
+ hash_obj[key] = value[0...new_length]
79
+ end
67
80
  end
68
81
  end
69
82
  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.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mykola Panin