fleck 2.2.3 → 2.2.4

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: 12549351b1fbd3d7cc3aac011b2949ed7c75d45cc00627ebce98ba87e5ffc3fd
4
- data.tar.gz: d1c254ae75c7510c6d0436a4b10610e0002478d4405c5a80034583f5b04a8b4f
3
+ metadata.gz: 815c6aedba7e3ab97a3c057f1d35b689f4e33a5015f147975095053feeca49fb
4
+ data.tar.gz: 655f4eb33edd3926c23694d407a1ffbecfaf40437a9273c08a26048a4ac73ffd
5
5
  SHA512:
6
- metadata.gz: 3b94e6339c1aa8151c94d473eac81c918d67e2da6c805d20725a62f044bccc41c6456dd34c3e0fa16c6559c66d208196f9ae7423ed527ad891f953edccd1f6cf
7
- data.tar.gz: 531c4ef36f289ab36dc796f24ec26a81de57bab049a9d4349372226416bcdb45b5e856d85ac528abbdf1e422351d1bbcddee24359065d61e72379fbf2975a122
6
+ metadata.gz: d0696f5d4131e441a32b73fdce0939ed1aa002562f8aa931f58407957890b53a769b59e9537ef6c366b6de2e2a6ec249eb5226cd388d0f0426033e32e31330e3
7
+ data.tar.gz: 7fa7d2da95225e18d4a826f62eed4ec23b57621656e8b1d9ad0e8ff21184c9a00da1babdbdb95c076b69e74cb170bcfd2652a0965f0a13f1856341439ff465ab
data/CHANGELOG.md CHANGED
@@ -6,6 +6,11 @@
6
6
 
7
7
  Below you can see the CHANGELOG of **Fleck** gem by version number.
8
8
 
9
+ #### v2.2.4 (17 September 2026) #####
10
+
11
+ - **FIX** Return a bad-request response for malformed consumer request JSON with native Oj and
12
+ `Oj.mimic_JSON` parser errors.
13
+
9
14
  #### v2.2.0 (22 Dicember 2022) #####
10
15
 
11
16
  - **NEW** Implemented the feature which allows to add a modifier `lambda` to `param` decorator,
@@ -74,7 +74,16 @@ module Fleck
74
74
  protected
75
75
 
76
76
  def parse_request!
77
- @data = Oj.load(@payload, mode: :compat).to_hash_with_indifferent_access.filtered!
77
+ begin
78
+ @data = Oj.load(@payload, mode: :compat)
79
+ rescue StandardError => e
80
+ raise unless json_parse_error?(e)
81
+
82
+ fail_request!(400, 'Bad Request', e)
83
+ return
84
+ end
85
+
86
+ @data = @data.to_hash_with_indifferent_access.filtered!
78
87
  @headers.merge!(@data['headers'] || {}).filtered!
79
88
 
80
89
  logger.debug "Request (exchange: #{@exchange.inspect}, queue: #{@queue.inspect}, " \
@@ -85,13 +94,18 @@ module Fleck
85
94
  @version = @headers['version']
86
95
  @ip = @headers['ip']
87
96
  @params = @data['params'] || {}
88
- rescue Oj::ParseError => e
89
- log_error(e)
90
- response.render_error(400, 'Bad request', e.inspect)
91
- @failed = true
92
97
  rescue StandardError => e
93
- log_error(e)
94
- response.render_error(500, 'Internal Server Error', e.inspect)
98
+ fail_request!(500, 'Internal Server Error', e)
99
+ end
100
+
101
+ def json_parse_error?(error)
102
+ error.is_a?(Oj::ParseError) || error.is_a?(EncodingError) ||
103
+ (defined?(JSON::ParserError) && error.is_a?(JSON::ParserError))
104
+ end
105
+
106
+ def fail_request!(status, message, error)
107
+ log_error(error)
108
+ response.render_error(status, [message, error.inspect])
95
109
  @failed = true
96
110
  end
97
111
  end
data/lib/fleck/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Open `Fleck` module to set `VERSION` constant.
4
4
  module Fleck
5
- VERSION = '2.2.3'
5
+ VERSION = '2.2.4'
6
6
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fleck
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.3
4
+ version: 2.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Groza Sergiu
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2023-11-17 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
@@ -178,7 +177,6 @@ homepage: https://github.com/serioja90/fleck
178
177
  licenses:
179
178
  - MIT
180
179
  metadata: {}
181
- post_install_message:
182
180
  rdoc_options: []
183
181
  require_paths:
184
182
  - lib
@@ -193,8 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
191
  - !ruby/object:Gem::Version
194
192
  version: '0'
195
193
  requirements: []
196
- rubygems_version: 3.4.10
197
- signing_key:
194
+ rubygems_version: 4.0.16
198
195
  specification_version: 4
199
196
  summary: A Ruby gem for syncronous and asyncronous communication via Message Queue
200
197
  services.