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) | ||
|  | 	} | ||
|  | } |