1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
package errdefs
import (
"net/http"
)
// FromStatusCode creates an errdef error, based on the provided HTTP status-code
//
// Deprecated: Use [cerrdefs.ToNative] instead
func FromStatusCode(err error, statusCode int) error {
if err == nil {
return nil
}
switch statusCode {
case http.StatusNotFound:
return NotFound(err)
case http.StatusBadRequest:
return InvalidParameter(err)
case http.StatusConflict:
return Conflict(err)
case http.StatusUnauthorized:
return Unauthorized(err)
case http.StatusServiceUnavailable:
return Unavailable(err)
case http.StatusForbidden:
return Forbidden(err)
case http.StatusNotModified:
return NotModified(err)
case http.StatusNotImplemented:
return NotImplemented(err)
case http.StatusInternalServerError:
if IsCancelled(err) || IsSystem(err) || IsUnknown(err) || IsDataLoss(err) || IsDeadline(err) {
return err
}
return System(err)
default:
switch {
case statusCode >= http.StatusOK && statusCode < http.StatusBadRequest:
// it's a client error
return err
case statusCode >= http.StatusBadRequest && statusCode < http.StatusInternalServerError:
return InvalidParameter(err)
case statusCode >= http.StatusInternalServerError && statusCode < 600:
return System(err)
default:
return Unknown(err)
}
}
}
|