mirror of
https://github.com/kataras/iris.git
synced 2026-01-01 09:17:02 +00:00
fix #1531 and introduce the 'Configuration.ResetOnFireErrorCode' (read HISTORY.md)
Former-commit-id: 84f1e894378a6dfd94e0bf057f4037e35aee0c4f
This commit is contained in:
117
context/status.go
Normal file
117
context/status.go
Normal file
@@ -0,0 +1,117 @@
|
||||
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 }
|
||||
Reference in New Issue
Block a user