1// Copyright 2009 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package http
6
7// HTTP status codes, defined in RFC 2616.
8const (
9	StatusContinue           = 100
10	StatusSwitchingProtocols = 101
11
12	StatusOK                   = 200
13	StatusCreated              = 201
14	StatusAccepted             = 202
15	StatusNonAuthoritativeInfo = 203
16	StatusNoContent            = 204
17	StatusResetContent         = 205
18	StatusPartialContent       = 206
19
20	StatusMultipleChoices   = 300
21	StatusMovedPermanently  = 301
22	StatusFound             = 302
23	StatusSeeOther          = 303
24	StatusNotModified       = 304
25	StatusUseProxy          = 305
26	StatusTemporaryRedirect = 307
27
28	StatusBadRequest                   = 400
29	StatusUnauthorized                 = 401
30	StatusPaymentRequired              = 402
31	StatusForbidden                    = 403
32	StatusNotFound                     = 404
33	StatusMethodNotAllowed             = 405
34	StatusNotAcceptable                = 406
35	StatusProxyAuthRequired            = 407
36	StatusRequestTimeout               = 408
37	StatusConflict                     = 409
38	StatusGone                         = 410
39	StatusLengthRequired               = 411
40	StatusPreconditionFailed           = 412
41	StatusRequestEntityTooLarge        = 413
42	StatusRequestURITooLong            = 414
43	StatusUnsupportedMediaType         = 415
44	StatusRequestedRangeNotSatisfiable = 416
45	StatusExpectationFailed            = 417
46	StatusTeapot                       = 418
47	StatusPreconditionRequired         = 428
48	StatusTooManyRequests              = 429
49	StatusRequestHeaderFieldsTooLarge  = 431
50	StatusUnavailableForLegalReasons   = 451
51
52	StatusInternalServerError           = 500
53	StatusNotImplemented                = 501
54	StatusBadGateway                    = 502
55	StatusServiceUnavailable            = 503
56	StatusGatewayTimeout                = 504
57	StatusHTTPVersionNotSupported       = 505
58	StatusNetworkAuthenticationRequired = 511
59)
60
61var statusText = map[int]string{
62	StatusContinue:           "Continue",
63	StatusSwitchingProtocols: "Switching Protocols",
64
65	StatusOK:                   "OK",
66	StatusCreated:              "Created",
67	StatusAccepted:             "Accepted",
68	StatusNonAuthoritativeInfo: "Non-Authoritative Information",
69	StatusNoContent:            "No Content",
70	StatusResetContent:         "Reset Content",
71	StatusPartialContent:       "Partial Content",
72
73	StatusMultipleChoices:   "Multiple Choices",
74	StatusMovedPermanently:  "Moved Permanently",
75	StatusFound:             "Found",
76	StatusSeeOther:          "See Other",
77	StatusNotModified:       "Not Modified",
78	StatusUseProxy:          "Use Proxy",
79	StatusTemporaryRedirect: "Temporary Redirect",
80
81	StatusBadRequest:                   "Bad Request",
82	StatusUnauthorized:                 "Unauthorized",
83	StatusPaymentRequired:              "Payment Required",
84	StatusForbidden:                    "Forbidden",
85	StatusNotFound:                     "Not Found",
86	StatusMethodNotAllowed:             "Method Not Allowed",
87	StatusNotAcceptable:                "Not Acceptable",
88	StatusProxyAuthRequired:            "Proxy Authentication Required",
89	StatusRequestTimeout:               "Request Timeout",
90	StatusConflict:                     "Conflict",
91	StatusGone:                         "Gone",
92	StatusLengthRequired:               "Length Required",
93	StatusPreconditionFailed:           "Precondition Failed",
94	StatusRequestEntityTooLarge:        "Request Entity Too Large",
95	StatusRequestURITooLong:            "Request URI Too Long",
96	StatusUnsupportedMediaType:         "Unsupported Media Type",
97	StatusRequestedRangeNotSatisfiable: "Requested Range Not Satisfiable",
98	StatusExpectationFailed:            "Expectation Failed",
99	StatusTeapot:                       "I'm a teapot",
100	StatusPreconditionRequired:         "Precondition Required",
101	StatusTooManyRequests:              "Too Many Requests",
102	StatusRequestHeaderFieldsTooLarge:  "Request Header Fields Too Large",
103	StatusUnavailableForLegalReasons:   "Unavailable For Legal Reasons",
104
105	StatusInternalServerError:           "Internal Server Error",
106	StatusNotImplemented:                "Not Implemented",
107	StatusBadGateway:                    "Bad Gateway",
108	StatusServiceUnavailable:            "Service Unavailable",
109	StatusGatewayTimeout:                "Gateway Timeout",
110	StatusHTTPVersionNotSupported:       "HTTP Version Not Supported",
111	StatusNetworkAuthenticationRequired: "Network Authentication Required",
112}
113
114// StatusText returns a text for the HTTP status code. It returns the empty
115// string if the code is unknown.
116func StatusText(code int) string {
117	return statusText[code]
118}
119