mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 02:31:04 +01:00
117 lines
3.7 KiB
Go
117 lines
3.7 KiB
Go
package context
|
|
|
|
import "net/http"
|
|
|
|
// ClientErrorCodes holds the 4xx Client errors.
|
|
var (
|
|
ClientErrorCodes = []int{
|
|
http.StatusBadRequest,
|
|
http.StatusUnauthorized,
|
|
http.StatusPaymentRequired,
|
|
http.StatusForbidden,
|
|
http.StatusNotFound,
|
|
http.StatusMethodNotAllowed,
|
|
http.StatusNotAcceptable,
|
|
http.StatusProxyAuthRequired,
|
|
http.StatusRequestTimeout,
|
|
http.StatusConflict,
|
|
http.StatusGone,
|
|
http.StatusLengthRequired,
|
|
http.StatusPreconditionFailed,
|
|
http.StatusRequestEntityTooLarge,
|
|
http.StatusRequestURITooLong,
|
|
http.StatusUnsupportedMediaType,
|
|
http.StatusRequestedRangeNotSatisfiable,
|
|
http.StatusExpectationFailed,
|
|
http.StatusTeapot,
|
|
http.StatusMisdirectedRequest,
|
|
http.StatusUnprocessableEntity,
|
|
http.StatusLocked,
|
|
http.StatusFailedDependency,
|
|
http.StatusTooEarly,
|
|
http.StatusUpgradeRequired,
|
|
http.StatusPreconditionRequired,
|
|
http.StatusTooManyRequests,
|
|
http.StatusRequestHeaderFieldsTooLarge,
|
|
http.StatusUnavailableForLegalReasons,
|
|
// Unofficial.
|
|
StatusPageExpired,
|
|
StatusBlockedByWindowsParentalControls,
|
|
StatusInvalidToken,
|
|
StatusTokenRequired,
|
|
}
|
|
// ServerErrorCodes holds the 5xx Server errors.
|
|
ServerErrorCodes = []int{
|
|
http.StatusInternalServerError,
|
|
http.StatusNotImplemented,
|
|
http.StatusBadGateway,
|
|
http.StatusServiceUnavailable,
|
|
http.StatusGatewayTimeout,
|
|
http.StatusHTTPVersionNotSupported,
|
|
http.StatusVariantAlsoNegotiates,
|
|
http.StatusInsufficientStorage,
|
|
http.StatusLoopDetected,
|
|
http.StatusNotExtended,
|
|
http.StatusNetworkAuthenticationRequired,
|
|
// Unofficial.
|
|
StatusBandwidthLimitExceeded,
|
|
StatusInvalidSSLCertificate,
|
|
StatusSiteOverloaded,
|
|
StatusSiteFrozen,
|
|
StatusNetworkReadTimeout,
|
|
}
|
|
|
|
// ClientAndServerErrorCodes is the static list of all client and server error codes.
|
|
ClientAndServerErrorCodes = append(ClientErrorCodes, ServerErrorCodes...)
|
|
)
|
|
|
|
// Unofficial status error codes.
|
|
const (
|
|
// 4xx
|
|
StatusPageExpired = 419
|
|
StatusBlockedByWindowsParentalControls = 450
|
|
StatusInvalidToken = 498
|
|
StatusTokenRequired = 499
|
|
// 5xx
|
|
StatusBandwidthLimitExceeded = 509
|
|
StatusInvalidSSLCertificate = 526
|
|
StatusSiteOverloaded = 529
|
|
StatusSiteFrozen = 530
|
|
StatusNetworkReadTimeout = 598
|
|
)
|
|
|
|
var unofficialStatusText = map[int]string{
|
|
StatusPageExpired: "Page Expired",
|
|
StatusBlockedByWindowsParentalControls: "Blocked by Windows Parental Controls",
|
|
StatusInvalidToken: "Invalid Token",
|
|
StatusTokenRequired: "Token Required",
|
|
StatusBandwidthLimitExceeded: "Bandwidth Limit Exceeded",
|
|
StatusInvalidSSLCertificate: "Invalid SSL Certificate",
|
|
StatusSiteOverloaded: "Site is overloaded",
|
|
StatusSiteFrozen: "Site is frozen",
|
|
StatusNetworkReadTimeout: "Network read timeout error",
|
|
}
|
|
|
|
// StatusText returns a text for the HTTP status code. It returns the empty
|
|
// string if the code is unknown.
|
|
func StatusText(code int) string {
|
|
text := http.StatusText(code)
|
|
if text == "" {
|
|
text = unofficialStatusText[code]
|
|
}
|
|
|
|
return text
|
|
}
|
|
|
|
// StatusCodeNotSuccessful defines if a specific "statusCode" is not
|
|
// a valid status code for a successful response.
|
|
// By default if the status code is lower than 400 then it is not a failure one,
|
|
// otherwise it is considered as an error code.
|
|
//
|
|
// Read more at `iris/Configuration#DisableAutoFireStatusCode` and
|
|
// `iris/core/router/Party#OnAnyErrorCode` for relative information.
|
|
//
|
|
// Modify this variable when your Iris server or/and client
|
|
// not follows the RFC: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
|
|
var StatusCodeNotSuccessful = func(statusCode int) bool { return statusCode >= 400 }
|