jefferies_tube 1.7.6 → 1.7.8

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: da738286eb305798c1cb9774d3bd335091eb63f258b0e74b89675c076efe6ef1
4
- data.tar.gz: 8296500372ffc7c9428f81858678f64d83f79c3d53ac78d0d00792335a21b406
3
+ metadata.gz: 482a6104484c8b52279b4963b934c0882c3323508d89c95c050ddc4d485ca530
4
+ data.tar.gz: 25e75d97decffc3c631225b567044e926d706734c2988ecdc5e094869069b209
5
5
  SHA512:
6
- metadata.gz: 5ebeb72e5cf8e9069b01fd65ace73fd324d1a673756bd716d00b819de1af39895a8e4bed4c7c95fb0b44940640f90559a85eb784721c26d3412c8e52d0fc0648
7
- data.tar.gz: c4a40a698f030d7be900cfb3eca389c5f4f2e2025a86374f510252c2bcd34a91f4f01863abe3efa559bc8fb150bc6ff879782b31b7d50a74c14c5722d9e7ea92
6
+ metadata.gz: c338a5dd7fe14ca23986b370f5610479b9578f690d75cd43ceef485a239447000be24f0c6d7cd1a64526df279c4ba6c37a5f02ebc70290f1e4c9bb37b57d0bfd
7
+ data.tar.gz: ebe59a2c35f75555ed4f01bac293e36feace65915fb09b6a493fcd54138ed418e33b42f8352918a8f923c8f127ed8eb107d81019b85f7c08b0ccbd9fa3d06f3f
data/CHANGELOG.md CHANGED
@@ -6,6 +6,12 @@ This project attempts to follow [semantic versioning](https://semver.org/)
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 1.7.8
10
+ * Update middleware to rescue from more invalid requests
11
+
12
+ ## 1.7.7
13
+ * Add middleware to rescue from mime type errors to avoid spamming it as an error
14
+
9
15
  ## 1.7.6
10
16
  * Set rails conf to eager load when running simplecov
11
17
 
@@ -0,0 +1,35 @@
1
+ class JefferiesTube::InvaildRequestHandler
2
+ def initialize(app)
3
+ @app = app
4
+ end
5
+
6
+ def call(env)
7
+ @app.call(env)
8
+ rescue ::ActionDispatch::Http::MimeNegotiation::InvalidType
9
+ Rails.logger.info("[JefferiesTube::InvaildRequestHandler] Rescued from invalid MIME type in request: #{env['HTTP_ACCEPT']}")
10
+
11
+ [406, { 'Content-Type' => 'text/plain' }, ['Invalid Accept header.']]
12
+ rescue ArgumentError => error
13
+ if error.message =~ /invalid byte sequence in UTF-8/
14
+ return rescue_from_error(error, 'Bad request: Invalid UTF-8 sequence')
15
+ elsif error.message =~ /invalid %-encoding/ # support for rails < 8
16
+ return rescue_from_error(error, 'Bad request: invalid %-encoding')
17
+ end
18
+
19
+ raise error
20
+ rescue ActionController::BadRequest => error
21
+ if error.message =~ /invalid %-encoding/
22
+ return rescue_from_error(error, 'Bad request: invalid %-encoding')
23
+ elsif error.message =~ /Invalid encoding for parameter/
24
+ return rescue_from_error(error, 'Bad request: Invalid encoding for parameter')
25
+ end
26
+
27
+ raise error
28
+ end
29
+
30
+ def rescue_from_error(error, message)
31
+ Rails.logger.info("[JefferiesTube::InvaildRequestHandler] Rescued from #{error.message.inspect}")
32
+
33
+ [400, { 'Content-Type' => 'text/plain' }, [message]]
34
+ end
35
+ end
@@ -1,6 +1,7 @@
1
1
  require 'jefferies_tube'
2
2
  require 'jefferies_tube/console'
3
3
  require 'jefferies_tube/coverage'
4
+ require 'jefferies_tube/invalid_request_handler'
4
5
  require 'rails'
5
6
 
6
7
  module JefferiesTube
@@ -96,6 +97,10 @@ module JefferiesTube
96
97
  end
97
98
  end
98
99
 
100
+ initializer 'handle invalid mime types' do |config|
101
+ config.middleware.insert_before Rack::Head, JefferiesTube::InvaildRequestHandler
102
+ end
103
+
99
104
  rake_tasks do
100
105
  task(:default).clear
101
106
  if defined?(RSpec)
@@ -1,7 +1,7 @@
1
1
  require 'open-uri'
2
2
 
3
3
  module JefferiesTube
4
- VERSION = "1.7.6"
4
+ VERSION = "1.7.8"
5
5
 
6
6
  def self.latest_rubygems_version
7
7
  JSON.parse(URI.parse("https://rubygems.org/api/v1/versions/jefferies_tube/latest.json").read)["version"]
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jefferies_tube
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.6
4
+ version: 1.7.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Samson
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-08-15 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: awesome_print
@@ -199,6 +198,7 @@ files:
199
198
  - lib/jefferies_tube/database_backup.rb
200
199
  - lib/jefferies_tube/database_backup_adapter.rb
201
200
  - lib/jefferies_tube/engine.rb
201
+ - lib/jefferies_tube/invalid_request_handler.rb
202
202
  - lib/jefferies_tube/postgresql_backup_adapter.rb
203
203
  - lib/jefferies_tube/rack/maintenance.rb
204
204
  - lib/jefferies_tube/railtie.rb
@@ -212,7 +212,6 @@ homepage: https://github.com/tenforwardconsulting/jefferies_tube/
212
212
  licenses:
213
213
  - MIT
214
214
  metadata: {}
215
- post_install_message:
216
215
  rdoc_options: []
217
216
  require_paths:
218
217
  - lib
@@ -227,8 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
227
226
  - !ruby/object:Gem::Version
228
227
  version: '0'
229
228
  requirements: []
230
- rubygems_version: 3.4.10
231
- signing_key:
229
+ rubygems_version: 4.0.4
232
230
  specification_version: 4
233
231
  summary: Ten Forward Consulting useful tools.
234
232
  test_files: