sinatra-errorcodes 0.1.2 → 0.2.1

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: 955dff502f8318ac98c598638126e203d488f644
4
- data.tar.gz: be2d2ca28b7a20e970849601518a05d334e8dc54
3
+ metadata.gz: 890a05336d2bddbd8d7d3853e026a208b0ba2945
4
+ data.tar.gz: f36c90ad4904d41dd79995f6a165ebc140a291e4
5
5
  SHA512:
6
- metadata.gz: 3f983f48c729fb9ee14c48be464ae7f0d1922777b99228f29538e90b652f5eefdebbfe87e12e9bc014c11f184c84b4e38a635e700eb47b73cb9f37fb41060786
7
- data.tar.gz: 1d1ebf1d01f8dbfbfda412650fb351129920c6bf85124682cdcc6a3310a15c9755f063a688da89fe957cc701c6b93c065f7e4272f2bff4e52b414d1b21fa3e61
6
+ metadata.gz: 283b8983a22483d30ce378c144f69ee4aca0187b9cd5305192fd9d8889b9e5e0dd5cd3d987b2193dd857802c2dadf87423694e81f8eefec829374723b897e543
7
+ data.tar.gz: 2d986cb131b7c770a374f13b738b7c0df41acb470d9e895416a4681987d5918bbc53a35ac5a63cc6d946ec2df3c935b2505c1ee2f36750b4e2ce5a7865b7f334
data/.gitignore CHANGED
@@ -2,6 +2,7 @@
2
2
  Gemfile.lock
3
3
 
4
4
  .byebug_history
5
+ .ruby-version
5
6
 
6
7
  /.bundle/
7
8
  /.yardoc
data/README.md CHANGED
@@ -4,13 +4,13 @@
4
4
  [![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
5
5
  > Gem of HTTP error status code class pack
6
6
 
7
- =======
8
7
  ## Table of Contents
9
- - [Installation](#Installation)
10
- - [Example](#Example)
11
- - [Test](#Test)
12
- - [Contribute](#Contribute)
13
- - [License](#License)
8
+ - [Installation](README.md#Installation)
9
+ - [Usage](README.md#Usage)
10
+ - [Example](README.md#Example)
11
+ - [Test](README.md#Test)
12
+ - [Contribute](README.md#Contribute)
13
+ - [License](README.md#License)
14
14
 
15
15
  ## Installation
16
16
  Add this line to your application's Gemfile:
@@ -24,6 +24,38 @@ Or install it yourself as:
24
24
  $ gem install sinatra-errorcodes
25
25
  ```
26
26
 
27
+ ## Usage
28
+ To use this gem, at first, you need to register `Sinatra::Errorcodes` in your configure block and call `handle_errorstatus` which wraps Sinatra's error handling block.
29
+ ```ruby
30
+ class AppController < Sinatra::Base
31
+ configure do
32
+ register Sinatra::Errorcodes
33
+
34
+ handle_errorstatus # Need to add this.
35
+ end
36
+ end
37
+ ```
38
+
39
+ Now you can use a set of `HTTPError` class in order to halt manually with a specific HTTP status code and its message like below. The all process of these exception raising is done by `handle_errorstatus` you have just added above.
40
+ ```ruby
41
+ ...
42
+
43
+ get '/badrequest'
44
+ raise HTTPError::BadRequest
45
+ end
46
+
47
+ get '/error'
48
+ raise HTTPError::InternalServerError
49
+ end
50
+
51
+ # You can also raise an exception with your own custom message.
52
+ get '/custom'
53
+ raise HTTPError::InternalServerError, 'Custom error message'
54
+ end
55
+
56
+ ...
57
+ ```
58
+
27
59
  ## Example
28
60
  Install gems
29
61
  ```bash
@@ -37,14 +69,12 @@ $ bundle exec rackup -p 3000
37
69
  ```
38
70
 
39
71
  ## Test
40
- Default task in Rakefile is test
41
72
  ```bash
42
- $ bundle exec rake
73
+ $ bundle exec rake spec
43
74
  ```
44
75
 
45
76
  ## Contribute
46
- Bug reports and pull requests are welcome on GitHub at https://github.com/IzumiSy/sinatra-errorcodes. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
47
-
77
+ PRs accepted.
48
78
 
49
79
  ## License
50
80
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -1,12 +1,10 @@
1
1
  class BaseController < Sinatra::Base
2
2
  configure do
3
- helpers Sinatra::Errorcodes
3
+ register Sinatra::Errorcodes
4
+
5
+ handle_errorstatus
4
6
 
5
7
  set :raise_errors, false
6
8
  set :show_exceptions, false
7
9
  end
8
-
9
- error do |e|
10
- handle_errorcode(e)
11
- end
12
10
  end
@@ -1,108 +1,140 @@
1
1
  require_relative "./error_base"
2
2
 
3
3
  module HTTPError
4
+
5
+ # 400 Bad Request
4
6
  class BadRequest < ErrorBase
5
- CODE = 400
6
- MESSAGE = "Bad Request"
7
+ CODE = Rack::Utils.status_code(:bad_request)
7
8
  end
8
9
 
10
+ # 401 Unauthorized
9
11
  class Unauthorized < ErrorBase
10
- CODE = 401
11
- MESSAGE = "Unauthorized"
12
+ CODE = Rack::Utils.status_code(:unauthorized)
12
13
  end
13
14
 
15
+ # 402 Payment Required
14
16
  class PaymentRequired < ErrorBase
15
- CODE = 402
16
- MESSAGE = "Payment Required"
17
+ CODE = Rack::Utils.status_code(:payment_required)
17
18
  end
18
19
 
20
+ # 403 Forbidden
19
21
  class Forbidden < ErrorBase
20
- CODE = 403
21
- MESSAGE = "Forbidden"
22
+ CODE = Rack::Utils.status_code(:forbidden)
22
23
  end
23
24
 
25
+ # 404 Not Found
24
26
  class NotFound < ErrorBase
25
- CODE = 404
26
- MESSAGE = "Not Found"
27
+ CODE = Rack::Utils.status_code(:not_found)
27
28
  end
28
29
 
29
- class MethodNotAllows < ErrorBase
30
- CODE = 405
31
- MESSAGE = "Method Not Allowed"
30
+ # 405 Method Not Allowed
31
+ class MethodNotAllowed < ErrorBase
32
+ CODE = Rack::Utils.status_code(:method_not_allowed)
32
33
  end
33
34
 
35
+ # 406 Not Acceptable
34
36
  class NotAccpetable < ErrorBase
35
- CODE = 406
36
- MESSAGE = "Not Acceptable"
37
+ CODE = Rack::Utils.status_code(:not_acceptable)
37
38
  end
38
39
 
40
+ # 407 Proxy Authentication Required
39
41
  class ProxyAuthenticationRequired < ErrorBase
40
- CODE = 407
41
- MESSAGE = "Proxy Authentication Required"
42
+ CODE = Rack::Utils.status_code(:proxy_authentication_required)
42
43
  end
43
44
 
45
+ # 408 Request Timeout
44
46
  class RequestTimeout < ErrorBase
45
- CODE = 408
46
- MESSAGE = "Request Timeout"
47
+ CODE = Rack::Utils.status_code(:request_timeout)
47
48
  end
48
49
 
50
+ # 409 Conflict
49
51
  class Conflict < ErrorBase
50
- CODE = 409
51
- MESSAGE = "Conflict"
52
+ CODE = Rack::Utils.status_code(:conflict)
52
53
  end
53
54
 
55
+ # 410 Gone
54
56
  class Gone < ErrorBase
55
- CODE = 410
56
- MESSAGE = "Gone"
57
+ CODE = Rack::Utils.status_code(:gone)
57
58
  end
58
59
 
60
+ # 411 Length Required
59
61
  class LengthRequired < ErrorBase
60
- CODE = 411
61
- MESSAGE = "Length Required"
62
+ CODE = Rack::Utils.status_code(:length_required)
62
63
  end
63
64
 
65
+ # 412 Precondition Failed
64
66
  class PreconditionFailed < ErrorBase
65
- CODE = 412
66
- MESSAGE = "Precondition Failed"
67
+ CODE = Rack::Utils.status_code(:precondition_failed)
67
68
  end
68
69
 
70
+ # 413 Payload Too Large
69
71
  class PayloadTooLarge < ErrorBase
70
- CODE = 413
71
- MESSAGE = "Payload Too Large"
72
+ CODE = Rack::Utils.status_code(:payload_too_large)
72
73
  end
73
74
 
75
+ # 414 URI Too Long
74
76
  class UriTooLong < ErrorBase
75
- CODE = 414
76
- MESSAGE = "URI Too Long"
77
+ CODE = Rack::Utils.status_code(:uri_too_long)
77
78
  end
78
79
 
80
+ # 415 Unsupported Media Type
79
81
  class UnsupportedMediaType < ErrorBase
80
- CODE = 415
81
- MESSAGE = "Unsupported Media Type"
82
+ CODE = Rack::Utils.status_code(:unsupported_media_type)
82
83
  end
83
84
 
85
+ # 416 Range Not Satisfiable
84
86
  class RangeNotSatisfiable < ErrorBase
85
- CODE = 416
86
- MESSAGE = "Range Not Satisfiable"
87
+ CODE = Rack::Utils.status_code(:range_not_satisfiable)
87
88
  end
88
89
 
90
+ # 417 Expectation Failed
89
91
  class ExpectationFailed < ErrorBase
90
- CODE = 417
91
- MESSAGE = "Expectation Failed"
92
+ CODE = Rack::Utils.status_code(:expectation_failed)
92
93
  end
93
94
 
95
+ # 421 Misdirected Request
94
96
  class MisdirectedRequest < ErrorBase
95
- CODE = 421
96
- MESSAGE = "Misdirected Request"
97
+ CODE = Rack::Utils.status_code(:misdirected_failed)
98
+ end
99
+
100
+ # 422 Unprocessable Entity
101
+ class UnprocessableEntity < ErrorBase
102
+ CODE = Rack::Utils.status_code(:unprocessable_entity)
103
+ end
104
+
105
+ # 423 Locked
106
+ class Locked < ErrorBase
107
+ CODE = Rack::Utils.status_code(:locked)
108
+ end
109
+
110
+ # 424 Failed Dependency
111
+ class FailedDependency < ErrorBase
112
+ CODE = Rack::Utils.status_code(:failed_dependency)
97
113
  end
98
114
 
115
+ # 426 Upgrade Required
99
116
  class UpgradeRequired < ErrorBase
100
- CODE = 426
101
- MESSAGE = "Upgrade Required"
117
+ CODE = Rack::Utils.status_code(:upgrade_required)
102
118
  end
103
119
 
120
+ # 428 Precondition Required
121
+ class PreconditionRequired < ErrorBase
122
+ CODE = Rack::Utils.status_code(:precondition_required)
123
+ end
124
+
125
+ # 429 Too Many Requests
126
+ class TooManyRequests < ErrorBase
127
+ CODE = Rack::Utils.status_code(:too_many_requests)
128
+ end
129
+
130
+ # 431 Request Header Fields Too Large
131
+ class RequestHeaderFieldsTooLarge < ErrorBase
132
+ CODE = Rack::Utils.status_code(:request_header_fields_too_large)
133
+ end
134
+
135
+ # 451 Unavailable For Legal Reasons
104
136
  class UnavailableForLegalReasons < ErrorBase
105
- CODE = 451
106
- MESSAGE = "Unavailable For Legal Reasons"
137
+ CODE = Rack::Utils.status_code(:unavailable_for_legal_reasons)
107
138
  end
139
+
108
140
  end
@@ -1,33 +1,60 @@
1
1
  require_relative "./error_base"
2
2
 
3
3
  module HTTPError
4
+
5
+ # 500 Internal Server Error
4
6
  class InternalServerError < ErrorBase
5
- CODE = 500
6
- MESSAGE = "Internal Server Error"
7
+ CODE = Rack::Utils.status_code(:internal_server_error)
7
8
  end
8
9
 
10
+ # 501 Not Implemented
9
11
  class NotImplemented < ErrorBase
10
- CODE = 501
11
- MESSAGE = "Not Impemented"
12
+ CODE = Rack::Utils.status_code(:not_implemented)
12
13
  end
13
14
 
15
+ # 502 Bad Gateway
14
16
  class BadGateway < ErrorBase
15
- CODE = 502
16
- MESSAGE = "Bad Gateway"
17
+ CODE = Rack::Utils.status_code(:bad_gateway)
17
18
  end
18
19
 
20
+ # 503 Service Unavailable
19
21
  class ServiceUnavailable < ErrorBase
20
- CODE = 503
21
- MESSAGE = "Service Unavailable"
22
+ CODE = Rack::Utils.status_code(:service_unavailable)
22
23
  end
23
24
 
25
+ # 504 Gateway Timeout
24
26
  class GatewayTimeout < ErrorBase
25
- CODE = 504
26
- MESSAGE = "Gateway Timeout"
27
+ CODE = Rack::Utils.status_code(:gateway_timeout)
27
28
  end
28
29
 
30
+ # 505 HTTP Version Not Supported
29
31
  class HTTPVersionNotSupported < ErrorBase
30
- CODE = 505
31
- MESSAGE = "HTTP Version Not Supported"
32
+ CODE = Rack::Utils.status_code(:http_version_not_supported)
33
+ end
34
+
35
+ # 506 Variant Also Negotiates
36
+ class VariantAlsoNegotiates < ErrorBase
37
+ CODE = Rack::Utils.status_code(:variant_also_negotiates)
38
+ end
39
+
40
+ # 507 Insufficient Storage
41
+ class InsufficientStorage < ErrorBase
42
+ CODE = Rack::Utils.status_code(:insufficient_storage)
43
+ end
44
+
45
+ # 508 Loop Detected
46
+ class LoopDetected < ErrorBase
47
+ CODE = Rack::Utils.status_code(:loop_detected)
48
+ end
49
+
50
+ # 510 Not Extended
51
+ class NotExtended < ErrorBase
52
+ CODE = Rack::Utils.status_code(:not_extended)
32
53
  end
54
+
55
+ # 511 Network Authentication Required
56
+ class NetworkAuthenticationRequired < ErrorBase
57
+ CODE = Rack::Utils.status_code(:network_authentication_required)
58
+ end
59
+
33
60
  end
@@ -1,15 +1,16 @@
1
1
  class ErrorBase < StandardError
2
2
  def initialize( *message )
3
- _v = message.join(' ')
4
- @_msg = !_v.empty? ? _v : self.class::MESSAGE
3
+ _message = message.join(' ')
5
4
  @_code = self.class::CODE
5
+ @_msg = _message.empty? ?
6
+ Rack::Utils::HTTP_STATUS_CODES[@_code] : _message
6
7
  end
7
8
 
8
9
  def code
9
10
  @_code
10
11
  end
11
12
 
12
- def message
13
+ def msg
13
14
  @_msg
14
15
  end
15
16
  end
@@ -9,12 +9,14 @@ module Sinatra
9
9
  include HTTPError
10
10
 
11
11
  module Errorcodes
12
- def handle_errorcode(e)
13
- if e.is_a? ErrorBase
14
- halt e.code, e.message
12
+ def handle_errorstatus
13
+ error do |e|
14
+ if e.is_a? ErrorBase
15
+ halt e.code, e.msg
16
+ end
15
17
  end
16
18
  end
17
19
  end
18
20
 
19
- helpers Errorcodes
21
+ register Errorcodes
20
22
  end
@@ -1,5 +1,5 @@
1
1
  module Sinatra
2
2
  module Errorcodes
3
- VERSION = "0.1.2"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -7,12 +7,10 @@ describe Sinatra::Errorcodes do
7
7
 
8
8
  it 'provides status 500' do
9
9
  expect(HTTPError::InternalServerError::CODE).to be 500
10
- expect(HTTPError::InternalServerError::MESSAGE).to eq 'Internal Server Error'
11
10
  end
12
11
 
13
12
  it 'provides status 400' do
14
13
  expect(HTTPError::BadRequest::CODE).to be 400
15
- expect(HTTPError::BadRequest::MESSAGE).to eq 'Bad Request'
16
14
  end
17
15
 
18
16
  it 'returns status 500 ' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-errorcodes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - IzumiSy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-18 00:00:00.000000000 Z
11
+ date: 2017-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra