jefferies_tube 1.7.7 → 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: ec04172e8bd7b0bd7ea623083d7b48df678bec9354f7bef3f0f89560ac5eb0fe
4
- data.tar.gz: ecd036b2ac2953e3e3d38a7ff66e55d5f1e06cf84fd2a831da0b0a044f30154f
3
+ metadata.gz: 482a6104484c8b52279b4963b934c0882c3323508d89c95c050ddc4d485ca530
4
+ data.tar.gz: 25e75d97decffc3c631225b567044e926d706734c2988ecdc5e094869069b209
5
5
  SHA512:
6
- metadata.gz: a01bab997e3d86e0093233c7085015af2fb21d7e98122da05bb596f2cedcfa2f40125d7e3804810672cf2e5b4e2ac2448627f2375ff9a27c7f9cdd6ae7dfcdf6
7
- data.tar.gz: 3425a5523901811da07b46e6afae124c4bf44541d2cbd2776f558a3e5f7a33190e1feab3d8b26f1ab1dab5af7fc5ad47a3c214b76713182a33f0749f7c1c98ff
6
+ metadata.gz: c338a5dd7fe14ca23986b370f5610479b9578f690d75cd43ceef485a239447000be24f0c6d7cd1a64526df279c4ba6c37a5f02ebc70290f1e4c9bb37b57d0bfd
7
+ data.tar.gz: ebe59a2c35f75555ed4f01bac293e36feace65915fb09b6a493fcd54138ed418e33b42f8352918a8f923c8f127ed8eb107d81019b85f7c08b0ccbd9fa3d06f3f
data/CHANGELOG.md CHANGED
@@ -6,6 +6,9 @@ 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
+
9
12
  ## 1.7.7
10
13
  * Add middleware to rescue from mime type errors to avoid spamming it as an error
11
14
 
@@ -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,7 +1,7 @@
1
1
  require 'jefferies_tube'
2
2
  require 'jefferies_tube/console'
3
3
  require 'jefferies_tube/coverage'
4
- require 'jefferies_tube/invalid_mime_type_handler'
4
+ require 'jefferies_tube/invalid_request_handler'
5
5
  require 'rails'
6
6
 
7
7
  module JefferiesTube
@@ -98,7 +98,7 @@ module JefferiesTube
98
98
  end
99
99
 
100
100
  initializer 'handle invalid mime types' do |config|
101
- config.middleware.insert_before Rack::Head, JefferiesTube::InvalidMimeTypeHandler
101
+ config.middleware.insert_before Rack::Head, JefferiesTube::InvaildRequestHandler
102
102
  end
103
103
 
104
104
  rake_tasks do
@@ -1,7 +1,7 @@
1
1
  require 'open-uri'
2
2
 
3
3
  module JefferiesTube
4
- VERSION = "1.7.7"
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,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jefferies_tube
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.7
4
+ version: 1.7.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Samson
@@ -198,7 +198,7 @@ files:
198
198
  - lib/jefferies_tube/database_backup.rb
199
199
  - lib/jefferies_tube/database_backup_adapter.rb
200
200
  - lib/jefferies_tube/engine.rb
201
- - lib/jefferies_tube/invalid_mime_type_handler.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
@@ -1,13 +0,0 @@
1
- class JefferiesTube::InvalidMimeTypeHandler
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("Invalid MIME type in request: #{env['HTTP_ACCEPT']}")
10
-
11
- [406, { 'Content-Type' => 'text/plain' }, ['Invalid Accept header.']]
12
- end
13
- end