rack-banken 0.8.0 → 0.8.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.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rack/banken.rb +4 -2
  3. data/lib/rack/banken/exception_handler.rb +2 -2
  4. data/lib/rack/banken/exceptions/bad_request.rb +14 -0
  5. data/lib/rack/banken/exceptions/conflict.rb +14 -0
  6. data/lib/rack/banken/exceptions/expectation_failed.rb +14 -0
  7. data/lib/rack/banken/exceptions/failed_dependency.rb +14 -0
  8. data/lib/rack/banken/exceptions/forbidden.rb +14 -0
  9. data/lib/rack/banken/exceptions/gone.rb +14 -0
  10. data/lib/rack/banken/exceptions/length_required.rb +14 -0
  11. data/lib/rack/banken/exceptions/locked.rb +14 -0
  12. data/lib/rack/banken/exceptions/method_not_allowed.rb +14 -0
  13. data/lib/rack/banken/exceptions/not_acceptable.rb +14 -0
  14. data/lib/rack/banken/exceptions/not_found.rb +14 -0
  15. data/lib/rack/banken/exceptions/payment_required.rb +14 -0
  16. data/lib/rack/banken/exceptions/precondition_failed.rb +14 -0
  17. data/lib/rack/banken/exceptions/proxy_authentication_required.rb +14 -0
  18. data/lib/rack/banken/exceptions/request_entity_too_large.rb +14 -0
  19. data/lib/rack/banken/exceptions/request_timeout.rb +14 -0
  20. data/lib/rack/banken/exceptions/request_uri_too_long.rb +14 -0
  21. data/lib/rack/banken/exceptions/requested_range_not_satisfiable.rb +14 -0
  22. data/lib/rack/banken/exceptions/unauthorized.rb +14 -0
  23. data/lib/rack/banken/exceptions/unprocessable_entity.rb +14 -0
  24. data/lib/rack/banken/exceptions/unsupported_media_type.rb +14 -0
  25. data/lib/rack/banken/exceptions/upgrade_required.rb +14 -0
  26. data/lib/rack/banken/version.rb +1 -1
  27. data/rack-banken.gemspec +1 -0
  28. data/spec/rack_banken_spec.rb +27 -18
  29. data/spec/spec_helper.rb +23 -6
  30. metadata +37 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cbb3070e870bd764c7e6c5193f51de203ab35b1f
4
- data.tar.gz: c0fd7feb798a59e1c357ed72b78404097a79130f
3
+ metadata.gz: 577eb2d3124ead092614bae984ebdb18083b322b
4
+ data.tar.gz: f82d16b93b8bad0678f024e1499cd5020016b17d
5
5
  SHA512:
6
- metadata.gz: bea8002aa7be9574d2be307c590bf768e837e01ff3de1a940d727f2f00b928b9194b496f0a92dea2554761d5afc15eb7c0e69050315ad307bebd672dfe36d36f
7
- data.tar.gz: 6b21681e50ebb643e9b8d5dd0ba183f33c0b2a4a7a02e8a6d9bdcbea0337cbc7c34d4588390afa417a547c823d95f6bbb4d91b041011213e8af18daeace1ccf3
6
+ metadata.gz: 5a6cf433b79c3994884237564588b4d9edeb75f10d8b77e8940e4344931d269636ec4a57c80c4cb16b1a3025dd5f241b9c3ba5de54a00dbe2dc371b704db210d
7
+ data.tar.gz: a38c0a29bb0ce79d1850b71f3758841854322583102096ccb403b955a5732bf2b3020807899f81ac525dae6760ca17ec4df03af9e0f37ecfc071df6262f40429
data/lib/rack/banken.rb CHANGED
@@ -8,7 +8,9 @@ module Rack
8
8
  require "rack/banken/exception_handler"
9
9
 
10
10
  require "rack/banken/exceptions/base"
11
- require "rack/banken/exceptions/internal_server_error"
12
- require "rack/banken/exceptions/validation_failed"
11
+
12
+ Dir[::File.expand_path('../banken/exceptions', __FILE__) << '/*.rb'].each do |file|
13
+ require file
14
+ end
13
15
  end
14
16
  end
@@ -10,8 +10,8 @@ module Rack
10
10
  begin
11
11
  @app.call(env)
12
12
 
13
- rescue Exceptions::ValidationFailed => e
14
- raise Exceptions::ValidationFailed, e.message
13
+ rescue Exceptions::Base => e
14
+ raise e.class, e.message
15
15
 
16
16
  rescue => e
17
17
  raise Exceptions::InternalServerError, e.message
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class BadRequest < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 400
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class Conflict < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 409
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class ExpectationFailed < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 417
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class FailedDependency < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 424
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class Forbidden < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 403
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class Gone < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 410
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class LengthRequired < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 411
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class Locked < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 423
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class MethodNotAllowed < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 405
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class NotAcceptable < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 406
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class NotFound < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 404
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class PaymentRequired < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 401
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class PreconditionFailed < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 412
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class ProxyAuthenticationRequired < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 407
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class RequestEntityTooLarge < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 413
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class RequestTimeout < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 408
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class RequestUriTooLong < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 414
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class RequestedRangeNotSatisfiable < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 416
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class Unauthorized < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 401
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class UnprocessableEntity < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 422
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class UnsupportedMediaType < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 415
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class UpgradeRequired < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 426
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  module Banken
3
- VERSION = "0.8.0"
3
+ VERSION = "0.8.1"
4
4
  end
5
5
  end
data/rack-banken.gemspec CHANGED
@@ -24,4 +24,5 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
25
  spec.add_development_dependency "rack-test"
26
26
  spec.add_development_dependency "rspec", "~> 3.0.0"
27
+ spec.add_development_dependency "activesupport", "~> 4.2.0"
27
28
  end
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require 'spec_helper'
2
3
  RSpec.describe "Rack::Banken" do
3
4
  include SpecHelper
@@ -13,38 +14,46 @@ RSpec.describe "Rack::Banken" do
13
14
  expect(last_response.body).to eq("test body")
14
15
  end
15
16
 
16
- describe "if Exception occured" do
17
- let(:path){ '/runtime_error' }
18
17
 
19
- it "response staus is 500" do
20
- get path
21
- expect(last_response.status).to eq(500)
22
- end
18
+ ######################################################
19
+ # 例外に合わせたレスポンスが返ってくるかのテストを生成する
20
+ ######################################################
23
21
 
24
- it "response body is formated by Rack::Banken::Exceptions::Base.body" do
25
- get path
26
- json = JSON.parse(last_response.body)
27
-
28
- expect(json['result']).to eq(false)
29
- expect(json['error']).to be_kind_of(String)
30
- end
22
+ exceptions = []
23
+ Dir.glob('lib/rack/banken/exceptions/*.rb').each do |f|
24
+ exceptions << File.basename(f).split('.').first
31
25
  end
32
26
 
33
- describe "if Exception Rack::Banken::Exceptions::ValidationFailed occured" do
34
- let(:path) { '/validation_failed' }
27
+ exceptions.each do |exception|
28
+
29
+ class_s = "Rack::Banken::Exceptions::#{exception.camelize}"
30
+ class_con = class_s.constantize
31
+ status_code = class_con.new.to_rack_response.first
32
+
33
+ eval <<-EOS
34
+
35
+ describe_msg = "if " + class_s + " occured"
36
+ it_msg = "response body is formated by " + class_s
37
+ it_staus_code_msg = "response status is " + status_code.to_s
35
38
 
36
- it "response status is 400" do
39
+ describe describe_msg do
40
+ let(:path) { '/' + exception }
41
+
42
+ it it_staus_code_msg do
37
43
  get path
38
- expect(last_response.status).to eq(400)
44
+ expect(last_response.status).to eq(status_code)
39
45
  end
40
46
 
41
- it "response body is formated by Rack::Banken::Exceptions::ValidationFailed" do
47
+ it it_msg do
42
48
  get path
43
49
  json = JSON.parse(last_response.body)
44
50
 
45
51
  expect(json['result']).to eq(false)
46
52
  expect(json['error']).to be_kind_of(String)
47
53
  end
54
+ end
55
+
56
+ EOS
48
57
 
49
58
  end
50
59
 
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,15 @@
1
+ # -*- coding: utf-8 -*-
1
2
  $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
3
  $:.unshift(File.dirname(__FILE__))
3
-
4
- %w(rubygems rack rack/test rack/banken rspec).each do |f|
4
+
5
+ %w(rubygems
6
+ rack
7
+ rack/test
8
+ rack/banken
9
+ rspec
10
+ active_support/core_ext/string/inflections
11
+ active_support/inflector).each do |f|
12
+
5
13
  require f
6
14
  end
7
15
 
@@ -12,14 +20,23 @@ module SpecHelper
12
20
  def call(env)
13
21
  request = Rack::Request.new(env)
14
22
 
15
- if request.path_info == '/runtime_error'
16
- raise StandardError, 'runtime error is occured'
23
+ exceptions = []
24
+ Dir.glob('lib/rack/banken/exceptions/*.rb').each do
25
+ |f| exceptions << File.basename(f).split('.').first
17
26
  end
18
27
 
19
- if request.path_info == '/validation_failed'
20
- raise ::Rack::Banken::Exceptions::ValidationFailed, 'params is not valid.'
28
+ #################################################
29
+ # 例外名のパス(例: /bad_request)のリクエストを受けたら
30
+ # その名前の例外を発生されるように定義する。
31
+ #################################################
32
+ exceptions.each do |ex|
33
+ if request.path_info == "/#{ex}"
34
+ klass = "Rack::Banken::Exceptions::#{ex.camelize}"
35
+ raise klass.constantize
36
+ end
21
37
  end
22
38
 
39
+
23
40
  code = 200
24
41
  body = ["test body"]
25
42
  header = {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-banken
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arakaki Yuji
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 3.0.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: activesupport
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 4.2.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 4.2.0
97
111
  description:
98
112
  email:
99
113
  - arakaki@ryukyu-i.co.jp
@@ -108,8 +122,30 @@ files:
108
122
  - Rakefile
109
123
  - lib/rack/banken.rb
110
124
  - lib/rack/banken/exception_handler.rb
125
+ - lib/rack/banken/exceptions/bad_request.rb
111
126
  - lib/rack/banken/exceptions/base.rb
127
+ - lib/rack/banken/exceptions/conflict.rb
128
+ - lib/rack/banken/exceptions/expectation_failed.rb
129
+ - lib/rack/banken/exceptions/failed_dependency.rb
130
+ - lib/rack/banken/exceptions/forbidden.rb
131
+ - lib/rack/banken/exceptions/gone.rb
112
132
  - lib/rack/banken/exceptions/internal_server_error.rb
133
+ - lib/rack/banken/exceptions/length_required.rb
134
+ - lib/rack/banken/exceptions/locked.rb
135
+ - lib/rack/banken/exceptions/method_not_allowed.rb
136
+ - lib/rack/banken/exceptions/not_acceptable.rb
137
+ - lib/rack/banken/exceptions/not_found.rb
138
+ - lib/rack/banken/exceptions/payment_required.rb
139
+ - lib/rack/banken/exceptions/precondition_failed.rb
140
+ - lib/rack/banken/exceptions/proxy_authentication_required.rb
141
+ - lib/rack/banken/exceptions/request_entity_too_large.rb
142
+ - lib/rack/banken/exceptions/request_timeout.rb
143
+ - lib/rack/banken/exceptions/request_uri_too_long.rb
144
+ - lib/rack/banken/exceptions/requested_range_not_satisfiable.rb
145
+ - lib/rack/banken/exceptions/unauthorized.rb
146
+ - lib/rack/banken/exceptions/unprocessable_entity.rb
147
+ - lib/rack/banken/exceptions/unsupported_media_type.rb
148
+ - lib/rack/banken/exceptions/upgrade_required.rb
113
149
  - lib/rack/banken/exceptions/validation_failed.rb
114
150
  - lib/rack/banken/version.rb
115
151
  - rack-banken.gemspec