gtfs_engine 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 41bacc2ca460c53a0d6bfab8dad6a6accba8d24d
4
- data.tar.gz: 92aad173090d8dd6105e35e1e40d9603e197d5ea
3
+ metadata.gz: 146717ee9ac8cc7dc0455271478b5d37986f8d81
4
+ data.tar.gz: 67be5776653dad9d7d4038f30fe49606f4843199
5
5
  SHA512:
6
- metadata.gz: a7ee299a9408d4d277c9006cf08d1184d98c1e81e4a7fb16127bb5b9b639e4256bf3da6f88a2abd6f6431f068a9b711d9162443a5a6e86463b7da819a9c1a7d8
7
- data.tar.gz: 30b80c487979031d30a18af1ab036f5f2fd0cd85fcb4a447df21d9aae97a65a8fa154a6809c37287562a063f138451d63741b3430de6a97cd0478e82814b2d81
6
+ metadata.gz: 9cb0dd5b1904e1c456fc83635c9ae94c9d8483956967dbb603f0822a3317921151853360d016e95e961c70170d2f7cb2a9f2d46f393d8871fbc06c25e5ddff0a
7
+ data.tar.gz: c965696b02274443d77454c6c75aceff13d6d478fed0f0afe8e28900f5872bc992b91c410b3d45a1d7614ada5e6419229700b0e41436dcb2cd89303c559214a0
@@ -15,6 +15,7 @@
15
15
 
16
16
  # The following line is required for jsend_wrapper/rails to be available when
17
17
  # mounted in another rails application.
18
+ require 'gtfs_engine/middleware/json_parse_errors'
18
19
  require 'jsend_wrapper/rails'
19
20
 
20
21
  module GtfsEngine
@@ -29,5 +30,10 @@ module GtfsEngine
29
30
  javascripts false
30
31
  fixture_replacement :factory_girl, dir: 'spec/factories'
31
32
  end
33
+
34
+ initializer 'gtfs_engine.middleware' do |app|
35
+ app.config.middleware.insert_before ActionDispatch::ParamsParser,
36
+ GtfsEngine::Middleware::JsonParseErrors
37
+ end
32
38
  end
33
39
  end
@@ -0,0 +1,43 @@
1
+ # This file is part of the KNOWtime server.
2
+ #
3
+ # The KNOWtime server is free software: you can redistribute it and/or modify it
4
+ # under the terms of the GNU General Public License as published by the Free
5
+ # Software Foundation, either version 3 of the License, or (at your option) any
6
+ # later version.
7
+ #
8
+ # The KNOWtime server is distributed in the hope that it will be useful, but
9
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
11
+ # details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with the KNOWtime server. If not, see <http://www.gnu.org/licenses/>.
15
+
16
+ # The following line is required for jsend_wrapper/rails to be available when
17
+ # mounted in another rails application.
18
+ module GtfsEngine
19
+ module Middleware
20
+ class Base
21
+ attr_reader :app
22
+
23
+ HEADERS = { 'Content-Type' => 'application/json' }
24
+
25
+ def initialize(app)
26
+ @app = app
27
+ end
28
+
29
+ protected
30
+
31
+ def accepts_json?(env)
32
+ request = ActionDispatch::Request.new env
33
+ !!collector.negotiate_format(request)
34
+ end
35
+
36
+ private
37
+
38
+ def collector
39
+ @collector ||= ActionController::MimeResponds::Collector.new ['json']
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,51 @@
1
+ # This file is part of the KNOWtime server.
2
+ #
3
+ # The KNOWtime server is free software: you can redistribute it and/or modify it
4
+ # under the terms of the GNU General Public License as published by the Free
5
+ # Software Foundation, either version 3 of the License, or (at your option) any
6
+ # later version.
7
+ #
8
+ # The KNOWtime server is distributed in the hope that it will be useful, but
9
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
11
+ # details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with the KNOWtime server. If not, see <http://www.gnu.org/licenses/>.
15
+
16
+ # The following line is required for jsend_wrapper/rails to be available when
17
+ # mounted in another rails application.
18
+ require 'gtfs_engine/middleware/base'
19
+ require 'jsend_wrapper/renderers/error_renderer'
20
+
21
+ module GtfsEngine
22
+ module Middleware
23
+ # Normally one handles exceptions with `rescue_from`; however, the body of
24
+ # the request is parsed before your controller gets involved, so we need to
25
+ # handle parse errors at the middleware-level.
26
+ #
27
+ # Rails has a built-in JSON response when such an error occurs, but this
28
+ # middleware will return an error message in JSend format.
29
+ class JsonParseErrors < Base
30
+ ERROR_CODE = 1001
31
+ MESSAGE = 'The body of your request is not valid JSON'
32
+
33
+ def call(env)
34
+ app.call env
35
+
36
+ rescue ActionDispatch::ParamsParser::ParseError => error
37
+ raise error unless accepts_json? env
38
+
39
+ [ 400, HEADERS, [create_json(error)] ]
40
+ end
41
+
42
+ private
43
+
44
+ def create_json(cause)
45
+ JsendWrapper::ErrorRenderer.new(
46
+ MESSAGE, code: ERROR_CODE, data: cause.to_s
47
+ ).to_s
48
+ end
49
+ end
50
+ end
51
+ end
@@ -16,7 +16,7 @@ module GtfsEngine
16
16
  module Version
17
17
  # The following four lines are generated, so don't mess with them.
18
18
  MAJOR = 1
19
- MINOR = 3
19
+ MINOR = 4
20
20
  PATCH = 0
21
21
  BUILD = nil
22
22
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtfs_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Sangster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-22 00:00:00.000000000 Z
11
+ date: 2014-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -228,6 +228,8 @@ files:
228
228
  - lib/gtfs_engine/engine.rb
229
229
  - lib/gtfs_engine/exceptions.rb
230
230
  - lib/gtfs_engine/json_responder.rb
231
+ - lib/gtfs_engine/middleware/base.rb
232
+ - lib/gtfs_engine/middleware/json_parse_errors.rb
231
233
  - lib/gtfs_engine/sources.rb
232
234
  - lib/gtfs_engine/version.rb
233
235
  - lib/tasks/gtfs_engine_tasks.rake