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

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