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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 482a6104484c8b52279b4963b934c0882c3323508d89c95c050ddc4d485ca530
|
|
4
|
+
data.tar.gz: 25e75d97decffc3c631225b567044e926d706734c2988ecdc5e094869069b209
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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/
|
|
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::
|
|
101
|
+
config.middleware.insert_before Rack::Head, JefferiesTube::InvaildRequestHandler
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
rake_tasks do
|
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.
|
|
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/
|
|
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
|