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 +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/jefferies_tube/invalid_request_handler.rb +35 -0
- data/lib/jefferies_tube/railtie.rb +5 -0
- data/lib/jefferies_tube/version.rb +1 -1
- metadata +4 -6
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,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)
|
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.
|
|
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:
|
|
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:
|
|
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:
|