package fasthttp
import (
"strconv"
)
const (
statusMessageMin = 100
statusMessageMax = 511
)
const (
StatusContinue = 100
StatusSwitchingProtocols = 101
StatusProcessing = 102
StatusEarlyHints = 103
StatusOK = 200
StatusCreated = 201
StatusAccepted = 202
StatusNonAuthoritativeInfo = 203
StatusNoContent = 204
StatusResetContent = 205
StatusPartialContent = 206
StatusMultiStatus = 207
StatusAlreadyReported = 208
StatusIMUsed = 226
StatusMultipleChoices = 300
StatusMovedPermanently = 301
StatusFound = 302
StatusSeeOther = 303
StatusNotModified = 304
StatusUseProxy = 305
_ = 306
StatusTemporaryRedirect = 307
StatusPermanentRedirect = 308
StatusBadRequest = 400
StatusUnauthorized = 401
StatusPaymentRequired = 402
StatusForbidden = 403
StatusNotFound = 404
StatusMethodNotAllowed = 405
StatusNotAcceptable = 406
StatusProxyAuthRequired = 407
StatusRequestTimeout = 408
StatusConflict = 409
StatusGone = 410
StatusLengthRequired = 411
StatusPreconditionFailed = 412
StatusRequestEntityTooLarge = 413
StatusRequestURITooLong = 414
StatusUnsupportedMediaType = 415
StatusRequestedRangeNotSatisfiable = 416
StatusExpectationFailed = 417
StatusTeapot = 418
StatusMisdirectedRequest = 421
StatusUnprocessableEntity = 422
StatusLocked = 423
StatusFailedDependency = 424
StatusUpgradeRequired = 426
StatusPreconditionRequired = 428
StatusTooManyRequests = 429
StatusRequestHeaderFieldsTooLarge = 431
StatusUnavailableForLegalReasons = 451
StatusInternalServerError = 500
StatusNotImplemented = 501
StatusBadGateway = 502
StatusServiceUnavailable = 503
StatusGatewayTimeout = 504
StatusHTTPVersionNotSupported = 505
StatusVariantAlsoNegotiates = 506
StatusInsufficientStorage = 507
StatusLoopDetected = 508
StatusNotExtended = 510
StatusNetworkAuthenticationRequired = 511
)
var (
unknownStatusCode = "Unknown Status Code"
statusMessages = []string {
StatusContinue : "Continue" ,
StatusSwitchingProtocols : "Switching Protocols" ,
StatusProcessing : "Processing" ,
StatusEarlyHints : "Early Hints" ,
StatusOK : "OK" ,
StatusCreated : "Created" ,
StatusAccepted : "Accepted" ,
StatusNonAuthoritativeInfo : "Non-Authoritative Information" ,
StatusNoContent : "No Content" ,
StatusResetContent : "Reset Content" ,
StatusPartialContent : "Partial Content" ,
StatusMultiStatus : "Multi-Status" ,
StatusAlreadyReported : "Already Reported" ,
StatusIMUsed : "IM Used" ,
StatusMultipleChoices : "Multiple Choices" ,
StatusMovedPermanently : "Moved Permanently" ,
StatusFound : "Found" ,
StatusSeeOther : "See Other" ,
StatusNotModified : "Not Modified" ,
StatusUseProxy : "Use Proxy" ,
StatusTemporaryRedirect : "Temporary Redirect" ,
StatusPermanentRedirect : "Permanent Redirect" ,
StatusBadRequest : "Bad Request" ,
StatusUnauthorized : "Unauthorized" ,
StatusPaymentRequired : "Payment Required" ,
StatusForbidden : "Forbidden" ,
StatusNotFound : "Not Found" ,
StatusMethodNotAllowed : "Method Not Allowed" ,
StatusNotAcceptable : "Not Acceptable" ,
StatusProxyAuthRequired : "Proxy Authentication Required" ,
StatusRequestTimeout : "Request Timeout" ,
StatusConflict : "Conflict" ,
StatusGone : "Gone" ,
StatusLengthRequired : "Length Required" ,
StatusPreconditionFailed : "Precondition Failed" ,
StatusRequestEntityTooLarge : "Request Entity Too Large" ,
StatusRequestURITooLong : "Request URI Too Long" ,
StatusUnsupportedMediaType : "Unsupported Media Type" ,
StatusRequestedRangeNotSatisfiable : "Requested Range Not Satisfiable" ,
StatusExpectationFailed : "Expectation Failed" ,
StatusTeapot : "I'm a teapot" ,
StatusMisdirectedRequest : "Misdirected Request" ,
StatusUnprocessableEntity : "Unprocessable Entity" ,
StatusLocked : "Locked" ,
StatusFailedDependency : "Failed Dependency" ,
StatusUpgradeRequired : "Upgrade Required" ,
StatusPreconditionRequired : "Precondition Required" ,
StatusTooManyRequests : "Too Many Requests" ,
StatusRequestHeaderFieldsTooLarge : "Request Header Fields Too Large" ,
StatusUnavailableForLegalReasons : "Unavailable For Legal Reasons" ,
StatusInternalServerError : "Internal Server Error" ,
StatusNotImplemented : "Not Implemented" ,
StatusBadGateway : "Bad Gateway" ,
StatusServiceUnavailable : "Service Unavailable" ,
StatusGatewayTimeout : "Gateway Timeout" ,
StatusHTTPVersionNotSupported : "HTTP Version Not Supported" ,
StatusVariantAlsoNegotiates : "Variant Also Negotiates" ,
StatusInsufficientStorage : "Insufficient Storage" ,
StatusLoopDetected : "Loop Detected" ,
StatusNotExtended : "Not Extended" ,
StatusNetworkAuthenticationRequired : "Network Authentication Required" ,
}
)
func StatusMessage (statusCode int ) string {
if statusCode < statusMessageMin || statusCode > statusMessageMax {
return unknownStatusCode
}
if s := statusMessages [statusCode ]; s != "" {
return s
}
return unknownStatusCode
}
func formatStatusLine(dst []byte , protocol []byte , statusCode int , statusText []byte ) []byte {
dst = append (dst , protocol ...)
dst = append (dst , ' ' )
dst = strconv .AppendInt (dst , int64 (statusCode ), 10 )
dst = append (dst , ' ' )
if len (statusText ) == 0 {
dst = append (dst , s2b (StatusMessage (statusCode ))...)
} else {
dst = append (dst , statusText ...)
}
return append (dst , strCRLF ...)
}
The pages are generated with Golds v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .