func codeFromHTTP()

in metrics/utils.go [70:112]


func codeFromHTTP(err error) int {
	if err == nil {
		return 0
	}

	switch {
	case apierrors.IsBadRequest(err):
		return http.StatusBadRequest // 400
	case apierrors.IsUnauthorized(err):
		return http.StatusUnauthorized // 401
	case apierrors.IsForbidden(err):
		return http.StatusForbidden // 403
	case apierrors.IsNotFound(err):
		return http.StatusNotFound // 404
	case apierrors.IsMethodNotSupported(err):
		return http.StatusMethodNotAllowed // 405
	case apierrors.IsNotAcceptable(err):
		return http.StatusNotAcceptable // 406
	case apierrors.IsAlreadyExists(err):
		return http.StatusConflict // 409
	case apierrors.IsGone(err):
		return http.StatusGone // 410
	case apierrors.IsRequestEntityTooLargeError(err):
		return http.StatusRequestEntityTooLarge // 413
	case apierrors.IsUnsupportedMediaType(err):
		return http.StatusUnsupportedMediaType // 415
	case apierrors.IsInvalid(err):
		return http.StatusUnprocessableEntity // 422
	case apierrors.IsTooManyRequests(err):
		return http.StatusTooManyRequests // 429
	case apierrors.IsInternalError(err):
		return http.StatusInternalServerError // 500
	case apierrors.IsServiceUnavailable(err):
		return http.StatusServiceUnavailable // 503
	case apierrors.IsTimeout(err):
		return http.StatusGatewayTimeout // 504
	default:
		if status, ok := err.(apierrors.APIStatus); ok || errors.As(err, &status) {
			return int(status.Status().Code)
		}
		return 0
	}
}