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

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