101 lines
3.7 KiB
Go
101 lines
3.7 KiB
Go
|
package errhttp
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
// Return returns the appropriate error based on the status code.
|
||
|
func Return(statusCode int) error {
|
||
|
|
||
|
switch statusCode {
|
||
|
|
||
|
case http.StatusBadRequest: // 400
|
||
|
return ErrBadRequest
|
||
|
case http.StatusUnauthorized: // 401
|
||
|
return ErrUnauthorized
|
||
|
case http.StatusPaymentRequired: // 402
|
||
|
return ErrPaymentRequired
|
||
|
case http.StatusForbidden: // 403
|
||
|
return ErrForbidden
|
||
|
case http.StatusNotFound: // 404
|
||
|
return ErrNotFound
|
||
|
case http.StatusMethodNotAllowed: // 405
|
||
|
return ErrMethodNotAllowed
|
||
|
case http.StatusNotAcceptable: // 406
|
||
|
return ErrNotAcceptable
|
||
|
case http.StatusProxyAuthRequired: // 407
|
||
|
return ErrProxyAuthRequired
|
||
|
case http.StatusRequestTimeout: // 408
|
||
|
return ErrRequestTimeout
|
||
|
case http.StatusConflict: // 409
|
||
|
return ErrConflict
|
||
|
case http.StatusGone: // 410
|
||
|
return ErrGone
|
||
|
case http.StatusLengthRequired: // 411
|
||
|
return ErrLengthRequired
|
||
|
case http.StatusPreconditionFailed: // 412
|
||
|
return ErrPreconditionFailed
|
||
|
case http.StatusRequestEntityTooLarge: // 413
|
||
|
return ErrRequestEntityTooLarge
|
||
|
case http.StatusRequestURITooLong: // 414
|
||
|
return ErrRequestURITooLong
|
||
|
case http.StatusUnsupportedMediaType: // 415
|
||
|
return ErrUnsupportedMediaType
|
||
|
case http.StatusRequestedRangeNotSatisfiable: // 416
|
||
|
return ErrRequestedRangeNotSatisfiable
|
||
|
case http.StatusExpectationFailed: // 417
|
||
|
return ErrExpectationFailed
|
||
|
case http.StatusTeapot: // 418
|
||
|
return ErrTeapot
|
||
|
case http.StatusMisdirectedRequest: // 421
|
||
|
return ErrMisdirectedRequest
|
||
|
case http.StatusUnprocessableEntity: // 422
|
||
|
return ErrUnprocessableEntity
|
||
|
case http.StatusLocked: // 423
|
||
|
return ErrLocked
|
||
|
case http.StatusFailedDependency: // 424
|
||
|
return ErrFailedDependency
|
||
|
case http.StatusTooEarly: // 425
|
||
|
return ErrTooEarly
|
||
|
case http.StatusUpgradeRequired: // 426
|
||
|
return ErrUpgradeRequired
|
||
|
case http.StatusPreconditionRequired: // 428
|
||
|
return ErrPreconditionRequired
|
||
|
case http.StatusTooManyRequests: // 429
|
||
|
return ErrTooManyRequests
|
||
|
case http.StatusRequestHeaderFieldsTooLarge: // 431
|
||
|
return ErrRequestHeaderFieldsTooLarge
|
||
|
case http.StatusUnavailableForLegalReasons: // 451
|
||
|
return ErrUnavailableForLegalReasons
|
||
|
|
||
|
|
||
|
case http.StatusInternalServerError: // 500
|
||
|
return ErrInternalServerError
|
||
|
case http.StatusNotImplemented: // 501
|
||
|
return ErrNotImplemented
|
||
|
case http.StatusBadGateway: // 502
|
||
|
return ErrBadGateway
|
||
|
case http.StatusServiceUnavailable: // 503
|
||
|
return ErrServiceUnavailable
|
||
|
case http.StatusGatewayTimeout: // 504
|
||
|
return ErrGatewayTimeout
|
||
|
case http.StatusHTTPVersionNotSupported: // 505
|
||
|
return ErrHTTPVersionNotSupported
|
||
|
case http.StatusVariantAlsoNegotiates: // 506
|
||
|
return ErrVariantAlsoNegotiates
|
||
|
case http.StatusInsufficientStorage: // 507
|
||
|
return ErrInsufficientStorage
|
||
|
case http.StatusLoopDetected: // 508
|
||
|
return ErrLoopDetected
|
||
|
case http.StatusNotExtended: // 510
|
||
|
return ErrNotExtended
|
||
|
case http.StatusNetworkAuthenticationRequired: // 511
|
||
|
return ErrNetworkAuthenticationRequired
|
||
|
|
||
|
|
||
|
default:
|
||
|
return fmt.Errorf("errhttp: unknown HTTP error — status-code %d", statusCode)
|
||
|
}
|
||
|
}
|