mirror of
https://github.com/moby/moby.git
synced 2026-01-11 02:31:44 +00:00
Previously, we were using our own `FromStatusCode` function to map HTTP status codes to Docker error types. Switch to the containerd code. Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|