public
Description: Merb Core: All you need. None you don't.
Homepage: http://www.merbivore.com
Clone URL: git://github.com/wycats/merb-core.git
djwonk (author)
Sun Oct 12 18:14:07 -0700 2008
michaelklishin (committer)
Sun Oct 12 19:31:06 -0700 2008
commit  5078b8bf11f23b1f4e42c701438c37c6140fd93e
tree    745c53f7251cd27048a069865f4052ec652f6dd9
parent  c122ec92e2defdddb6ed1fc6b317990696f74b45
merb-core / lib / merb-core / controller / status_codes.rb
100644 93 lines (79 sloc) 5.614 kb
1
2
3
4
5
6
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
module Merb
 
  module StatusCodes
 
    STATUS_CODES = []
 
    class Base
      def self.status; nil end
 
      class << self
        alias :to_i :status
        
        def inherited(subclass)
          STATUS_CODES << {
            :child_class => subclass,
            :child_name => subclass.to_s.split('::').last,
            :parent_name => self.to_s.split('::').last
          }
          # Note: Since inherited fires immediately after the subclass
          # definition itself -- but before the definition of methods inside,
          # we cannot set :status here.
        end
      end
    end
 
    # ===== 1xx
    class Informational < Merb::StatusCodes::Base; end
    class Continue < Merb::StatusCodes::Informational; def self.status; 100 end end
    class SwitchingProtocols < Merb::StatusCodes::Informational; def self.status; 101 end end
 
    # ===== 2xx
    class Successful < Merb::StatusCodes::Base; end
    class OK < Merb::StatusCodes::Successful; def self.status; 200 end end
    class Created < Merb::StatusCodes::Successful; def self.status; 201 end end
    class Accepted < Merb::StatusCodes::Successful; def self.status; 202 end end
    class NonAuthoritativeInformation < Merb::StatusCodes::Successful; def self.status; 203 end end
    class NoContent < Merb::StatusCodes::Successful; def self.status; 204 end end
    class ResetContent < Merb::StatusCodes::Successful; def self.status; 205 end end
    class PartialContent < Merb::StatusCodes::Successful; def self.status; 206 end end
 
    # ===== 3xx
    class Redirection < Merb::StatusCodes::Base; end
    class MultipleChoices < Merb::StatusCodes::Redirection; def self.status; 300 end end
    class MovedPermanently < Merb::StatusCodes::Redirection; def self.status; 301 end end
    class Found < Merb::StatusCodes::Redirection; def self.status; 302 end end # HTTP 1.1
    class MovedTemporarily < Merb::StatusCodes::Redirection; def self.status; 302 end end # HTTP 1.0
    class SeeOther < Merb::StatusCodes::Redirection; def self.status; 303 end end
    class NotModified < Merb::StatusCodes::Redirection; def self.status; 304 end end
    class UseProxy < Merb::StatusCodes::Redirection; def self.status; 305 end end
    class TemporaryRedirect < Merb::StatusCodes::Redirection; def self.status; 307 end end
 
    # ===== 4xx
    class ClientError < Merb::StatusCodes::Base; end
    class BadRequest < Merb::StatusCodes::ClientError; def self.status; 400 end end
    class MultiPartParseError < Merb::StatusCodes::BadRequest; end
    class Unauthorized < Merb::StatusCodes::ClientError; def self.status; 401 end end
    class PaymentRequired < Merb::StatusCodes::ClientError; def self.status; 402 end end
    class Forbidden < Merb::StatusCodes::ClientError; def self.status; 403 end end
    class NotFound < Merb::StatusCodes::ClientError; def self.status; 404 end end
    class ActionNotFound < Merb::StatusCodes::NotFound; end
    class TemplateNotFound < Merb::StatusCodes::NotFound; end
    class LayoutNotFound < Merb::StatusCodes::NotFound; end
    class MethodNotAllowed < Merb::StatusCodes::ClientError; def self.status; 405 end end
    class NotAcceptable < Merb::StatusCodes::ClientError; def self.status; 406 end end
    class ProxyAuthenticationRequired < Merb::StatusCodes::ClientError; def self.status; 407 end end
    class RequestTimeout < Merb::StatusCodes::ClientError; def self.status; 408 end end
    class Conflict < Merb::StatusCodes::ClientError; def self.status; 409 end end
    class Gone < Merb::StatusCodes::ClientError; def self.status; 410 end end
    class LengthRequired < Merb::StatusCodes::ClientError; def self.status; 411 end end
    class PreconditionFailed < Merb::StatusCodes::ClientError; def self.status; 412 end end
    class RequestEntityTooLarge < Merb::StatusCodes::ClientError; def self.status; 413 end end
    class RequestURITooLarge < Merb::StatusCodes::ClientError; def self.status; 414 end end
    class UnsupportedMediaType < Merb::StatusCodes::ClientError; def self.status; 415 end end
    class RequestRangeNotSatisfiable < Merb::StatusCodes::ClientError; def self.status; 416 end end
    class ExpectationFailed < Merb::StatusCodes::ClientError; def self.status; 417 end end
 
    # ===== 5xx
    class ServerError < Merb::StatusCodes::Base; end
    class InternalServerError < Merb::StatusCodes::ServerError; def self.status; 500 end end
    class NotImplemented < Merb::StatusCodes::ServerError; def self.status; 501 end end
    class BadGateway < Merb::StatusCodes::ServerError; def self.status; 502 end end
    class ServiceUnavailable < Merb::StatusCodes::ServerError; def self.status; 503 end end
    class GatewayTimeout < Merb::StatusCodes::ServerError; def self.status; 504 end end
    class HTTPVersionNotSupported < Merb::StatusCodes::ServerError; def self.status; 505 end end
 
    STATUS_CODES.each do |item|
      item[:status] = item[:child_class].status
    end
 
  end # StatusCodes
  
end # Merb