Class: HttpStatus

Inherits:
Object
  • Object
show all
Defined in:
lib/httpstatus.rb

Instance Method Summary collapse

Constructor Details

#initializeHttpStatus

Returns a new instance of HttpStatus.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/httpstatus.rb', line 7

def initialize
  @statuses = {
    '100' => 'Continue',
    '101' => 'Switching Protocols',
    '102' => 'Processing',                      # RFC '251'8 (WebDAV)
    '200' => 'OK',
    '201' => 'Created',
    '202' => 'Accepted',
    '203' => 'Non-Authoritative Information',
    '204' => 'No Content',
    '205' => 'Reset Content',
    '206' => 'Partial Content',
    '207' => 'Multi-Status',                 # RFC '251'8 (WebDAV)
    '208' => 'Already Reported',             # RFC '584'2
    '300' => 'Multiple Choices',
    '301' => 'Moved Permanently',
    '302' => 'Found',
    '303' => 'See Other',
    '304' => 'Not Modified',
    '305' => 'Use Proxy',
    '307' => 'Temporary Redirect',
    '400' => 'Bad Request',
    '401' => 'Unauthorized',
    '402' => 'Payment Required',
    '403' => 'Forbidden',
    '404' => 'Not Found',
    '405' => 'Method Not Allowed',
    '406' => 'Not Acceptable',
    '407' => 'Proxy Authentication Required',
    '408' => 'Request Timeout',
    '409' => 'Conflict',
    '410' => 'Gone',
    '411' => 'Length Required',
    '412' => 'Precondition Failed',
    '413' => 'Request Entity Too Large',
    '414' => 'Request-URI Too Large',
    '415' => 'Unsupported Media Type',
    '416' => 'Request Range Not Satisfiable',
    '417' => 'Expectation Failed',
    '418' => 'I\'m a teapot',            # RFC '232'4
    '422' => 'Unprocessable Entity',     # RFC '251'8 (WebDAV)
    '423' => 'Locked',                   # RFC '251'8 (WebDAV)
    '424' => 'Failed Dependency',        # RFC '251'8 (WebDAV)
    '425' => 'No code',                  # WebDAV Advanced Collections
    '426' => 'Upgrade Required',         # RFC '281'7
    '428' => 'Precondition Required',
    '429' => 'Too Many Requests',
    '431' => 'Request Header Fields Too Large',
    '449' => 'Retry with',                      # unofficial Microsoft
    '500' => 'Internal Server Error',
    '501' => 'Not Implemented',
    '502' => 'Bad Gateway',
    '503' => 'Service Unavailable',
    '504' => 'Gateway Timeout',
    '505' => 'HTTP Version Not Supported',
    '506' => 'Variant Also Negotiates',         # RFC '229'5
    '507' => 'Insufficient Storage',            # RFC '251'8 (WebDAV)
    '509' => 'Bandwidth Limit Exceeded',        # unofficial
    '510' => 'Not Extended',                    # RFC '277'4
    '511' => 'Network Authentication Required'
  }
end

Instance Method Details

#lookup(code) ⇒ Object



98
99
100
101
102
103
104
105
106
# File 'lib/httpstatus.rb', line 98

def lookup(code)
  results = []
  @statuses.each do |c, m|
    if !code || c.start_with?(code) || m.downcase.match(code.downcase)
      results << "#{c}: #{m}"
    end
  end
  results
end

#parse_opts(argv) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/httpstatus.rb', line 82

def parse_opts(argv)
  OptionParser.new { |opt|
    opt.on("-v", "--version") {
      version = File.read File.join(File.dirname(__FILE__), "../VERSION")
      puts "httpstatus #{version}"
      exit(0)
    }
    opt.on("-h", "--help") {
      puts usage
      exit(0)
    }
    
    opt.parse! argv
  }
end

#run(args) ⇒ Object



108
109
110
111
112
113
# File 'lib/httpstatus.rb', line 108

def run(args)
  parse_opts(args)
  code = args.shift
  results = lookup code
  puts results
end

#usageObject



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/httpstatus.rb', line 70

def usage
usage_text = <<-"USAGE"
httpstatus shows meaning of HTTP status code.
Usage:
httpstatus [statuscode_or_keyword] 

Options:
-v, [--version] show version
-h, [--help]    show usage
USAGE
end