rack_middleware_json_error_msg 0.1
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 +7 -0
- data/CHANGELOG +1 -0
- data/Manifest +7 -0
- data/README.md +9 -0
- data/Rakefile +9 -0
- data/lib/rack/middleware/json-error-msg.rb +32 -0
- data/lib/rack/middleware/json-error-msg/railtie.rb +11 -0
- data/rack_middleware_json_error_msg.gemspec +33 -0
- data/test/test.rb +41 -0
- metadata +74 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 210da2859cf948a81c9fc82d06c1701d2a3fc13c
|
4
|
+
data.tar.gz: 69370aca70c7a2d6f94b19a01d4c66c66794f997
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d8166d66c8bd39168803f7932986678800f111dc8621e908a542eb572d1a461146a179d4e1b3351fcc5a18655945d82ef5ad653ad88d8b859643c16f332b8ed3
|
7
|
+
data.tar.gz: 19d879c6308c774d7e8af455e8201839197b82981bda4a45147d08f80b088a86c3c28d1048cac4724aa9259bfe2b6d04db20d3ccce274c073a58ba3c7644ebe9
|
data/CHANGELOG
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
v0.1. initial version
|
data/Manifest
ADDED
data/README.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
### Rails rack middleware to catch JSON parse errors
|
2
|
+
|
3
|
+
Put this in your rails app's Gemfile:
|
4
|
+
|
5
|
+
gem 'rack_middleware_json_error_msg'
|
6
|
+
|
7
|
+
If ActionDispatch::ParamsParser::ParseError gets thrown, it will send back a
|
8
|
+
HTTP 400 response with a JSON-format error message.
|
9
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'echoe'
|
2
|
+
|
3
|
+
Echoe.new("rack_middleware_json_error_msg") do |p|
|
4
|
+
p.author = "Andrew Snow"
|
5
|
+
p.email = 'andrew@modulus.org'
|
6
|
+
p.summary = "Rails middleware to catch JSON parse errors and return error in JSON format"
|
7
|
+
p.url = "https://github.com/andys/rack_middleware_json_error_msg"
|
8
|
+
p.runtime_dependencies = ['railties']
|
9
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'json-error-msg/railtie' if defined?(Rails)
|
2
|
+
|
3
|
+
module Rack
|
4
|
+
module Middleware
|
5
|
+
class JsonErrorMsg
|
6
|
+
class Error < StandardError; end
|
7
|
+
|
8
|
+
attr_reader :app
|
9
|
+
|
10
|
+
def initialize(app)
|
11
|
+
@app = app
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(env)
|
15
|
+
begin
|
16
|
+
@app.call(env)
|
17
|
+
rescue ActionDispatch::ParamsParser::ParseError => error
|
18
|
+
if env['HTTP_ACCEPT'] =~ /json/
|
19
|
+
error_output = "There was a problem in the request you submitted: #{error}"
|
20
|
+
return [
|
21
|
+
400, { 'Content-Type' => 'application/json' },
|
22
|
+
[ { request_id: env['action_dispatch.request_id'], error: error_output }.to_json ]
|
23
|
+
]
|
24
|
+
else
|
25
|
+
raise error
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Rack
|
2
|
+
module Middleware
|
3
|
+
module JsonErrorMsg
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
initializer "json-error-msg.configure_rails_initialization" do |app|
|
6
|
+
app.middleware.insert_before ActionDispatch::ParamsParser, "Rack::Middleware::JsonErrorMsg::JsonErrorMsg"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# stub: rack_middleware_json_error_msg 0.1 ruby lib
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "rack_middleware_json_error_msg"
|
6
|
+
s.version = "0.1"
|
7
|
+
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
9
|
+
s.authors = ["Andrew Snow"]
|
10
|
+
s.date = "2014-02-05"
|
11
|
+
s.description = "Rails middleware to catch JSON parse errors and return error in JSON format"
|
12
|
+
s.email = "andrew@modulus.org"
|
13
|
+
s.extra_rdoc_files = ["CHANGELOG", "README.md", "lib/rack/middleware/json-error-msg.rb", "lib/rack/middleware/json-error-msg/railtie.rb"]
|
14
|
+
s.files = ["CHANGELOG", "Manifest", "README.md", "Rakefile", "lib/rack/middleware/json-error-msg.rb", "lib/rack/middleware/json-error-msg/railtie.rb", "test/test.rb", "rack_middleware_json_error_msg.gemspec"]
|
15
|
+
s.homepage = "https://github.com/andys/rack_middleware_json_error_msg"
|
16
|
+
s.rdoc_options = ["--line-numbers", "--title", "Rack_middleware_json_error_msg", "--main", "README.md"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubyforge_project = "rack_middleware_json_error_msg"
|
19
|
+
s.rubygems_version = "2.1.11"
|
20
|
+
s.summary = "Rails middleware to catch JSON parse errors and return error in JSON format"
|
21
|
+
|
22
|
+
if s.respond_to? :specification_version then
|
23
|
+
s.specification_version = 4
|
24
|
+
|
25
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
|
+
s.add_runtime_dependency(%q<railties>, [">= 0"])
|
27
|
+
else
|
28
|
+
s.add_dependency(%q<railties>, [">= 0"])
|
29
|
+
end
|
30
|
+
else
|
31
|
+
s.add_dependency(%q<railties>, [">= 0"])
|
32
|
+
end
|
33
|
+
end
|
data/test/test.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'minitest/unit'
|
2
|
+
require 'json'
|
3
|
+
require 'minitest/autorun'
|
4
|
+
require "rack/test"
|
5
|
+
require "#{File.dirname(__FILE__)}/../lib//rack/middleware/json-error-msg"
|
6
|
+
|
7
|
+
module ActionDispatch
|
8
|
+
module ParamsParser
|
9
|
+
class ParseError < Exception
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class TestJsonErrorMsg < MiniTest::Unit::TestCase
|
15
|
+
include Rack::Test::Methods
|
16
|
+
|
17
|
+
def test_error
|
18
|
+
app = proc { raise ActionDispatch::ParamsParser::ParseError.new("parse error") }
|
19
|
+
request = Rack::MockRequest.new(Rack::Middleware::JsonErrorMsg.new(app))
|
20
|
+
response = request.get('/', {'HTTP_ACCEPT' => 'application/json'})
|
21
|
+
assert_equal 400, response.status
|
22
|
+
assert_match /parse error/, response.body
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_no_error
|
26
|
+
app = proc { [200, {}, ['']] }
|
27
|
+
request = Rack::MockRequest.new(Rack::Middleware::JsonErrorMsg.new(app))
|
28
|
+
response = request.get('/', {'HTTP_ACCEPT' => 'application/json'})
|
29
|
+
assert_equal 200, response.status
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_non_json
|
33
|
+
app = proc { raise ActionDispatch::ParamsParser::ParseError.new("parse error") }
|
34
|
+
request = Rack::MockRequest.new(Rack::Middleware::JsonErrorMsg.new(app))
|
35
|
+
assert_raises(ActionDispatch::ParamsParser::ParseError) do
|
36
|
+
request.get('/')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rack_middleware_json_error_msg
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Andrew Snow
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: railties
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: Rails middleware to catch JSON parse errors and return error in JSON
|
28
|
+
format
|
29
|
+
email: andrew@modulus.org
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files:
|
33
|
+
- CHANGELOG
|
34
|
+
- README.md
|
35
|
+
- lib/rack/middleware/json-error-msg.rb
|
36
|
+
- lib/rack/middleware/json-error-msg/railtie.rb
|
37
|
+
files:
|
38
|
+
- CHANGELOG
|
39
|
+
- Manifest
|
40
|
+
- README.md
|
41
|
+
- Rakefile
|
42
|
+
- lib/rack/middleware/json-error-msg.rb
|
43
|
+
- lib/rack/middleware/json-error-msg/railtie.rb
|
44
|
+
- test/test.rb
|
45
|
+
- rack_middleware_json_error_msg.gemspec
|
46
|
+
homepage: https://github.com/andys/rack_middleware_json_error_msg
|
47
|
+
licenses: []
|
48
|
+
metadata: {}
|
49
|
+
post_install_message:
|
50
|
+
rdoc_options:
|
51
|
+
- --line-numbers
|
52
|
+
- --title
|
53
|
+
- Rack_middleware_json_error_msg
|
54
|
+
- --main
|
55
|
+
- README.md
|
56
|
+
require_paths:
|
57
|
+
- lib
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '1.2'
|
68
|
+
requirements: []
|
69
|
+
rubyforge_project: rack_middleware_json_error_msg
|
70
|
+
rubygems_version: 2.1.11
|
71
|
+
signing_key:
|
72
|
+
specification_version: 4
|
73
|
+
summary: Rails middleware to catch JSON parse errors and return error in JSON format
|
74
|
+
test_files: []
|