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

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: b0e9b320a7350dc13269f72a2ff8f2c4a99040cd3a0b181dab88adc633ca503c
4
- data.tar.gz: '04654296b53a8bd31319b747b9a070f79a3245ac19d510f5a7fb858014d0f43a'
3
+ metadata.gz: 1e24f82280ef078291ee109be79150cfc9789676643ed84b87e2c32e472b6afe
4
+ data.tar.gz: d862ce1033e2a3e443ed32c9571502edc5373c1b3851936e108aeba01f47f49a
5
5
  SHA512:
6
- metadata.gz: 91c2e0697c2944367ef3fdae15283ae4341854e1e85c14a7e0454a6b39da502338e53b28b1761547150144a39a782ca2f9850f0cd3d79ed3d45a027dfd9604db
7
- data.tar.gz: 7844533169a7e2b1fb0efcb8c0f02d99233ce2187b48eaf20bbe1402c4620150fc013837e468fd789c43d7dd6f46d98b6943c1a76c6beed9235185a21a3dfda0
6
+ metadata.gz: 1f747939411789f6c8102fa5d7f7a47f6728b6e6337e61740efdb5ae69fc5bc2d210e0711f693f2afe06f66fe068446b205e9b0288765bb2b03b66ee5a9eb4d8
7
+ data.tar.gz: 692f8c2b477084a14963f8cf25920f6265aafc90bcc942a693eb435bd929b37516f42555e2832d008a813338c6ae38864424e0d4b6f138706bac691059e119e3
@@ -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.26"
6
+ spec.version = "0.1.28"
7
7
  spec.authors = ["Mykola Panin"]
8
8
  spec.email = ["mykola.panin@creatoriq.com"]
9
9
 
@@ -41,41 +41,36 @@ 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
- perform_reduction(obj, target_size)
44
+ excess_size = obj.to_json.bytesize - target_size
45
+ perform_reduction(obj, excess_size, obj.to_json.bytesize)
45
46
  attempts += 1
46
47
  end
47
48
  end
48
49
 
49
- def perform_reduction(obj, target_size)
50
- excess_size = obj.to_json.bytesize - target_size
51
-
50
+ def perform_reduction(obj, excess_size, total_size)
52
51
  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
-
59
- def reduce_hash(hash_obj, excess_size)
60
- hash_obj.each do |key, value|
61
- if value.is_a?(String)
62
- reduce_string(hash_obj, key, value, excess_size)
63
- elsif value.is_a?(Hash) || value.is_a?(Array)
64
- reduce_size(value, excess_size)
52
+ obj.each do |key, value|
53
+ apply_reduction(value, excess_size, total_size)
65
54
  end
55
+ elsif obj.is_a?(Array)
56
+ obj.each { |element| apply_reduction(element, excess_size, total_size) }
57
+ elsif obj.is_a?(String)
58
+ reduce_string(obj, excess_size, total_size)
66
59
  end
67
60
  end
68
61
 
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)
62
+ def apply_reduction(element, excess_size, total_size)
63
+ if element.is_a?(String)
64
+ reduce_string(element, excess_size, total_size)
65
+ elsif element.is_a?(Hash) || element.is_a?(Array)
66
+ reduce_size(element, element.to_json.bytesize - (excess_size * (element.to_json.bytesize.to_f / total_size)))
72
67
  end
73
68
  end
74
69
 
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]
70
+ def reduce_string(str, excess_size, total_size)
71
+ reduction_amount = (str.length.to_f / total_size) * excess_size
72
+ new_length = [str.length - reduction_amount, 0].max
73
+ str.replace(str[0...new_length])
79
74
  end
80
75
  end
81
76
  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.26
4
+ version: 0.1.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mykola Panin