response_code 0.1.0 → 1.0.0
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/README.md +59 -2
- data/bin/response_code +4 -0
- data/features/response_code.feature +112 -0
- data/features/step_definitions/response_code_steps.rb +17 -0
- data/features/step_definitions/unofficial_response_codes_steps.rb +28 -0
- data/lib/response_code.rb +9 -0
- data/lib/response_code/aborted.rb +12 -0
- data/lib/response_code/apache_web_server.rb +11 -0
- data/lib/response_code/base_imp.rb +21 -0
- data/lib/response_code/cloudflare.rb +19 -0
- data/lib/response_code/esri.rb +12 -0
- data/lib/response_code/iis.rb +13 -0
- data/lib/response_code/microsoft.rb +11 -0
- data/lib/response_code/nginx.rb +16 -0
- data/lib/response_code/pantheon.rb +11 -0
- data/lib/response_code/signal.rb +11 -0
- data/lib/response_code/spring_framework.rb +11 -0
- data/lib/response_code/twitter.rb +11 -0
- data/lib/response_code/version.rb +1 -1
- metadata +22 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e11cb7c1bee1dee1e2b7c291422bcb11dbc6224e7d5a3f71839ce78885c0ee86
|
4
|
+
data.tar.gz: c85eecdf80cbfc6c9f5a8ccf8f9c1a16e8bd4ed560ac05a790789888353a6487
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47a97ea8beb5f06ff53189e479a0c2bbfe92f5a770b312315eba744005bf3c9f065e6b1bb40815393240e9b7d049bfacac33eb8892076b73d0379a6a3e4afa1e
|
7
|
+
data.tar.gz: 9857019a6488047faf7bfe08e38c49245010d0e9dc53b82948364447445b0f37e2dd38091d4c823fab1ac34c676ca8254e929ca6e70b2dc73dd885370bf0e62a
|
data/README.md
CHANGED
@@ -1,2 +1,59 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# ResponseCode
|
2
|
+
|
3
|
+
[](https://travis-ci.org/torokmark/response_code)
|
4
|
+
[](https://badge.fury.io/rb/response_code)
|
5
|
+
|
6
|
+
Who knows which response code represents the partial content? Or what code belongs to the error that says the request uri too long? Do you know the status code of the teapot?
|
7
|
+
|
8
|
+
ResponseCode is a tiny tool intended to give a handy way of handling response status codes with text instead of numbers.
|
9
|
+
|
10
|
+
### Install
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem install response_code
|
14
|
+
```
|
15
|
+
|
16
|
+
or
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
gem 'response_code'
|
20
|
+
```
|
21
|
+
|
22
|
+
### Usage
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
require 'response_code'
|
26
|
+
|
27
|
+
puts ResponseCode.ok
|
28
|
+
# => 200
|
29
|
+
```
|
30
|
+
|
31
|
+
Using sinatra
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
#!/usr/bin/env ruby
|
35
|
+
|
36
|
+
require 'sinatra'
|
37
|
+
require 'response_code'
|
38
|
+
|
39
|
+
get('/') {
|
40
|
+
status ResponseCode.im_a_teapot
|
41
|
+
'I\'m a teapot!'
|
42
|
+
}
|
43
|
+
```
|
44
|
+
|
45
|
+
Executing `curl -i localhost:4567`
|
46
|
+
|
47
|
+
```
|
48
|
+
HTTP/1.1 418
|
49
|
+
Content-Type: text/html;charset=utf-8
|
50
|
+
Content-Length: 13
|
51
|
+
X-Xss-Protection: 1; mode=block
|
52
|
+
X-Content-Type-Options: nosniff
|
53
|
+
X-Frame-Options: SAMEORIGIN
|
54
|
+
Server: WEBrick/1.4.2 (Ruby/2.5.0/2017-12-25)
|
55
|
+
Date: Thu, 03 May 2018 18:24:12 GMT
|
56
|
+
Connection: Keep-Alive
|
57
|
+
|
58
|
+
I'm a teapot!
|
59
|
+
```
|
data/bin/response_code
CHANGED
@@ -0,0 +1,112 @@
|
|
1
|
+
Feature: ResponseCode
|
2
|
+
In order to use readable response codes
|
3
|
+
As a developer
|
4
|
+
I want to use ResponseCode for that
|
5
|
+
|
6
|
+
Scenario Outline: Codes
|
7
|
+
When I call a method with <name>
|
8
|
+
Then it should give me <code>
|
9
|
+
|
10
|
+
When I call lookup with <code>
|
11
|
+
Then it should return me <name>
|
12
|
+
|
13
|
+
Examples:
|
14
|
+
| name | code |
|
15
|
+
| continue| 100|
|
16
|
+
| switching_protocols| 101|
|
17
|
+
| processing| 102|
|
18
|
+
| ok| 200|
|
19
|
+
| created| 201|
|
20
|
+
| accepted| 202|
|
21
|
+
| non_authoritive_information| 203|
|
22
|
+
| no_content| 204|
|
23
|
+
| reset_content| 205|
|
24
|
+
| partial_content| 206|
|
25
|
+
| multi_status| 207|
|
26
|
+
| already_reported| 208|
|
27
|
+
| im_used| 226|
|
28
|
+
| multiple_choices| 300|
|
29
|
+
| moved_permanentaly| 301|
|
30
|
+
| found| 302|
|
31
|
+
| see_other| 303|
|
32
|
+
| not_modified| 304|
|
33
|
+
| use_proxy| 305|
|
34
|
+
| temporary_redirect| 307|
|
35
|
+
| permanent_redirect| 308|
|
36
|
+
| bad_request| 400|
|
37
|
+
| unauthorized| 401|
|
38
|
+
| payment_required| 402|
|
39
|
+
| forbidden| 403|
|
40
|
+
| not_found| 404|
|
41
|
+
| method_not_allowed| 405|
|
42
|
+
| not_acceptable| 406|
|
43
|
+
| proxy_authentication_required| 407|
|
44
|
+
| request_timeout| 408|
|
45
|
+
| conflict| 409|
|
46
|
+
| gone| 410|
|
47
|
+
| length_required| 411|
|
48
|
+
| precondition_failed| 412|
|
49
|
+
| payload_too_large| 413|
|
50
|
+
| request_uri_too_long| 414|
|
51
|
+
| unsupported_media_type| 415|
|
52
|
+
| requested_range_not_satisfiable| 416|
|
53
|
+
| expectation_failed| 417|
|
54
|
+
| im_a_teapot| 418|
|
55
|
+
| misdirected_request| 421|
|
56
|
+
| unprocessable_entity| 422|
|
57
|
+
| locked| 423|
|
58
|
+
| failed_dependency| 424|
|
59
|
+
| upgrade_required| 426|
|
60
|
+
| precondition_required| 428|
|
61
|
+
| internal_server_error| 500|
|
62
|
+
| not_implemented| 501|
|
63
|
+
| bad_gateway| 502|
|
64
|
+
| service_unavailable| 503|
|
65
|
+
| gateway_timeout| 504|
|
66
|
+
| http_version_not_supported| 505|
|
67
|
+
| variant_also_negotiates| 506|
|
68
|
+
| insufficiant_storage| 507|
|
69
|
+
| loop_detected| 508|
|
70
|
+
| not_extended| 510|
|
71
|
+
| network_authentication_required| 511|
|
72
|
+
| network_connect_timeout_error| 599|
|
73
|
+
|
74
|
+
Scenario Outline: Unofficial response codes
|
75
|
+
When I call a method in <module> with <name>
|
76
|
+
Then it should give me <code> from <module>
|
77
|
+
|
78
|
+
When I call <module> lookup with <code>
|
79
|
+
Then it should return me <name> from <module>
|
80
|
+
|
81
|
+
Examples:
|
82
|
+
| module | name | code |
|
83
|
+
| Aborted | checkpoint | 103 |
|
84
|
+
| SpringFramework | method_failure | 420 |
|
85
|
+
| Twitter | enhance_your_calm | 420 |
|
86
|
+
| Microsoft | blocked_by_windows_parental_controls | 450 |
|
87
|
+
| Esri | invalid_token | 498 |
|
88
|
+
| Esri | token_required | 499 |
|
89
|
+
| ApacheWebServer | bandwith_limit_exceeded | 509 |
|
90
|
+
| Pantheon | site_is_frozen | 530 |
|
91
|
+
| Signal | network_read_timeout_error | 598 |
|
92
|
+
| IIS | login_time_out | 440 |
|
93
|
+
| IIS | retry_with | 449 |
|
94
|
+
| IIS | redirect | 451 |
|
95
|
+
| Nginx | no_response | 444 |
|
96
|
+
| Nginx | request_header_too_large | 494 |
|
97
|
+
| Nginx | ssl_certificate_error | 495 |
|
98
|
+
| Nginx | ssl_certificate_required | 496 |
|
99
|
+
| Nginx | http_request_sent_to_https_port | 497 |
|
100
|
+
| Nginx | client_closed_request | 499 |
|
101
|
+
| Cloudflare | unknown_error | 520 |
|
102
|
+
| Cloudflare | web_server_is_down | 521 |
|
103
|
+
| Cloudflare | connection_timed_out | 522 |
|
104
|
+
| Cloudflare | origin_is_unreachable | 523 |
|
105
|
+
| Cloudflare | a_timeout_occurred | 524 |
|
106
|
+
| Cloudflare | ssl_handshake_failed | 525 |
|
107
|
+
| Cloudflare | invalid_ssl_certificate | 526 |
|
108
|
+
| Cloudflare | railgun_error | 527 |
|
109
|
+
| Cloudflare | origin_dns_error | 530 |
|
110
|
+
|
111
|
+
|
112
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'response_code'
|
2
|
+
|
3
|
+
When(/^I call a method with (\w+)$/) do |name|
|
4
|
+
@result = ResponseCode.send(name.to_sym)
|
5
|
+
end
|
6
|
+
|
7
|
+
Then(/^it should give me (\d+)$/) do |expected|
|
8
|
+
expect(@result).to eq expected.to_i
|
9
|
+
end
|
10
|
+
|
11
|
+
When(/^I call lookup with (\d+)$/) do |code|
|
12
|
+
@name = ResponseCode.lookup(code)
|
13
|
+
end
|
14
|
+
|
15
|
+
Then(/^it should return me (\w+)$/) do |expected|
|
16
|
+
expect(@name.to_s).to eq expected
|
17
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'response_code/aborted'
|
2
|
+
require 'response_code/spring_framework'
|
3
|
+
require 'response_code/twitter'
|
4
|
+
require 'response_code/microsoft'
|
5
|
+
require 'response_code/esri'
|
6
|
+
require 'response_code/apache_web_server'
|
7
|
+
require 'response_code/pantheon'
|
8
|
+
require 'response_code/signal'
|
9
|
+
require 'response_code/iis'
|
10
|
+
require 'response_code/nginx'
|
11
|
+
require 'response_code/cloudflare'
|
12
|
+
|
13
|
+
When(/^I call a method in (\w+) with (\w+)$/) do |module_name, name|
|
14
|
+
@result = Object.const_get("ResponseCode::#{ module_name }").send(name.to_sym)
|
15
|
+
end
|
16
|
+
|
17
|
+
Then(/^it should give me (\d+) from (\w+)$/) do |expected, module_name |
|
18
|
+
expect(@result).to eq expected.to_i
|
19
|
+
end
|
20
|
+
|
21
|
+
When(/^I call (\w+) lookup with (\d+)$/) do |module_name, code|
|
22
|
+
@name = Object.const_get("ResponseCode::#{ module_name }").lookup(code)
|
23
|
+
end
|
24
|
+
|
25
|
+
Then(/^it should return me (\w+) from (\w+)$/) do |expected, module_name|
|
26
|
+
expect(@name.to_s).to eq expected
|
27
|
+
end
|
28
|
+
|
data/lib/response_code.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'response_code/version'
|
2
2
|
require 'response_code/codes'
|
3
|
+
require 'response_code/aborted'
|
3
4
|
|
4
5
|
module ResponseCode
|
5
6
|
|
@@ -10,5 +11,13 @@ module ResponseCode
|
|
10
11
|
raise 'Not a valid status!'
|
11
12
|
end
|
12
13
|
end
|
14
|
+
|
15
|
+
def self.lookup(code)
|
16
|
+
if ResponseCode::CODES.value?(code.to_i)
|
17
|
+
ResponseCode::CODES.key(code.to_i)
|
18
|
+
else
|
19
|
+
raise 'Not a valid code!'
|
20
|
+
end
|
21
|
+
end
|
13
22
|
end
|
14
23
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ResponseCode
|
2
|
+
module BaseImp
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def method_missing(m, *args, &block)
|
6
|
+
if @CODES.include?(m.to_sym)
|
7
|
+
@CODES[m.to_sym]
|
8
|
+
else
|
9
|
+
raise 'Not a valid status!'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def lookup(code)
|
14
|
+
if @CODES.value?(code.to_i)
|
15
|
+
@CODES.key(code.to_i)
|
16
|
+
else
|
17
|
+
raise 'Not a valid code!'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'response_code/base_imp'
|
2
|
+
|
3
|
+
module ResponseCode
|
4
|
+
module Cloudflare
|
5
|
+
extend ResponseCode::BaseImp
|
6
|
+
|
7
|
+
@CODES = {
|
8
|
+
unknown_error: 520,
|
9
|
+
web_server_is_down: 521,
|
10
|
+
connection_timed_out: 522,
|
11
|
+
origin_is_unreachable: 523,
|
12
|
+
a_timeout_occurred: 524,
|
13
|
+
ssl_handshake_failed: 525,
|
14
|
+
invalid_ssl_certificate: 526,
|
15
|
+
railgun_error: 527,
|
16
|
+
origin_dns_error: 530
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'response_code/base_imp'
|
2
|
+
|
3
|
+
module ResponseCode
|
4
|
+
module Nginx
|
5
|
+
extend ResponseCode::BaseImp
|
6
|
+
|
7
|
+
@CODES = {
|
8
|
+
no_response: 444,
|
9
|
+
request_header_too_large: 494,
|
10
|
+
ssl_certificate_error: 495,
|
11
|
+
ssl_certificate_required: 496,
|
12
|
+
http_request_sent_to_https_port: 497,
|
13
|
+
client_closed_request: 499
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: response_code
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Torok
|
@@ -21,8 +21,23 @@ files:
|
|
21
21
|
- LICENSE
|
22
22
|
- README.md
|
23
23
|
- bin/response_code
|
24
|
+
- features/response_code.feature
|
25
|
+
- features/step_definitions/response_code_steps.rb
|
26
|
+
- features/step_definitions/unofficial_response_codes_steps.rb
|
24
27
|
- lib/response_code.rb
|
28
|
+
- lib/response_code/aborted.rb
|
29
|
+
- lib/response_code/apache_web_server.rb
|
30
|
+
- lib/response_code/base_imp.rb
|
31
|
+
- lib/response_code/cloudflare.rb
|
25
32
|
- lib/response_code/codes.rb
|
33
|
+
- lib/response_code/esri.rb
|
34
|
+
- lib/response_code/iis.rb
|
35
|
+
- lib/response_code/microsoft.rb
|
36
|
+
- lib/response_code/nginx.rb
|
37
|
+
- lib/response_code/pantheon.rb
|
38
|
+
- lib/response_code/signal.rb
|
39
|
+
- lib/response_code/spring_framework.rb
|
40
|
+
- lib/response_code/twitter.rb
|
26
41
|
- lib/response_code/version.rb
|
27
42
|
homepage: http://github.com/torokmark/response_code
|
28
43
|
licenses:
|
@@ -36,16 +51,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
36
51
|
requirements:
|
37
52
|
- - ">="
|
38
53
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0'
|
54
|
+
version: '2.0'
|
40
55
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
56
|
requirements:
|
42
57
|
- - ">="
|
43
58
|
- !ruby/object:Gem::Version
|
44
59
|
version: '0'
|
45
60
|
requirements: []
|
46
|
-
|
47
|
-
rubygems_version: 2.7.3
|
61
|
+
rubygems_version: 3.0.3
|
48
62
|
signing_key:
|
49
63
|
specification_version: 4
|
50
64
|
summary: Readable way of response codes.
|
51
|
-
test_files:
|
65
|
+
test_files:
|
66
|
+
- features/step_definitions/response_code_steps.rb
|
67
|
+
- features/step_definitions/unofficial_response_codes_steps.rb
|
68
|
+
- features/response_code.feature
|