mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-30 17:13:08 +08:00
错误返回新增data字段
This commit is contained in:
+77
-116
@@ -6,37 +6,48 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/util/httputils"
|
||||
)
|
||||
|
||||
func NewJsonClientError(code int, title string, msg string) *httputils.JSONClientError {
|
||||
err := httputils.JSONClientError{Code: code, Class: title, Details: msg}
|
||||
func NewJsonClientError(code int, title string, msg string, error httputils.Error) *httputils.JSONClientError {
|
||||
err := httputils.JSONClientError{Code: code, Class: title, Details: msg, Data: error}
|
||||
return &err
|
||||
}
|
||||
|
||||
func NewBadGatewayError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
func errorMessage(msg string, params ...interface{}) (string, httputils.Error) {
|
||||
fileds := make([]string, len(params))
|
||||
for i, v := range params {
|
||||
fileds[i] = fmt.Sprint(v)
|
||||
}
|
||||
|
||||
error := httputils.Error{Id: msg, Fields: fileds}
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(502, "BadGateway", msg)
|
||||
|
||||
return msg, error
|
||||
}
|
||||
|
||||
func NewBadGatewayError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(502, "BadGateway", msg, err)
|
||||
}
|
||||
|
||||
func NewNotImplementedError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(501, "NotImplemented", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(501, "NotImplemented", msg, err)
|
||||
}
|
||||
|
||||
func NewInternalServerError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(500, "InternalServerError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(500, "InternalServerError", msg, err)
|
||||
}
|
||||
|
||||
func NewResourceNotReadyError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(500, "ResourceNotReadyError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(500, "ResourceNotReadyError", msg, err)
|
||||
}
|
||||
|
||||
func NewOutOfResourceError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(500, "NewOutOfResourceError", msg, err)
|
||||
}
|
||||
|
||||
func NewOutOfResourceError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
@@ -47,178 +58,128 @@ func NewOutOfResourceError(msg string, params ...interface{}) *httputils.JSONCli
|
||||
}
|
||||
|
||||
func NewServerStatusError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(400, "ServerStatusError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(400, "ServerStatusError", msg, err)
|
||||
}
|
||||
|
||||
func NewPaymentError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(402, "PaymentError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(402, "PaymentError", msg, err)
|
||||
}
|
||||
|
||||
func NewImageNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(404, "ImageNotFoundError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(404, "ImageNotFoundError", msg, err)
|
||||
}
|
||||
|
||||
func NewResourceNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(404, "ResourceNotFoundError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(404, "ResourceNotFoundError", msg, err)
|
||||
}
|
||||
|
||||
func NewSpecNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(404, "SpecNotFoundError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(404, "SpecNotFoundError", msg, err)
|
||||
}
|
||||
|
||||
func NewActionNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(404, "ActionNotFoundError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(404, "ActionNotFoundError", msg, err)
|
||||
}
|
||||
|
||||
func NewTenantNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(404, "TenantNotFoundError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(404, "TenantNotFoundError", msg, err)
|
||||
}
|
||||
|
||||
func NewUserNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(404, "UserNotFoundError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(404, "UserNotFoundError", msg, err)
|
||||
}
|
||||
|
||||
func NewInvalidStatusError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(400, "InvalidStatusError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(400, "InvalidStatusError", msg, err)
|
||||
}
|
||||
|
||||
func NewInputParameterError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(400, "InputParameterError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(400, "InputParameterError", msg, err)
|
||||
}
|
||||
|
||||
func NewInsufficientResourceError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(400, "InsufficientResourceError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(400, "InsufficientResourceError", msg, err)
|
||||
}
|
||||
|
||||
func NewOutOfQuotaError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(400, "OutOfQuotaError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(400, "OutOfQuotaError", msg, err)
|
||||
}
|
||||
|
||||
func NewNotSufficientPrivilegeError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(403, "NotSufficientPrivilegeError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(403, "NotSufficientPrivilegeError", msg, err)
|
||||
}
|
||||
|
||||
func NewUnsupportOperationError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(406, "UnsupportOperationError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(406, "UnsupportOperationError", msg, err)
|
||||
}
|
||||
|
||||
func NewNotEmptyError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(406, "NotEmptyError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(406, "NotEmptyError", msg, err)
|
||||
}
|
||||
|
||||
func NewBadRequestError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(400, "BadRequestError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(400, "BadRequestError", msg, err)
|
||||
}
|
||||
|
||||
func NewUnauthorizedError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(401, "UnauthorizedError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(401, "UnauthorizedError", msg, err)
|
||||
}
|
||||
|
||||
func NewInvalidCredentialError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(401, "InvalidCredentialError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(401, "InvalidCredentialError", msg, err)
|
||||
}
|
||||
|
||||
func NewForbiddenError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(403, "ForbiddenError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(403, "ForbiddenError", msg, err)
|
||||
}
|
||||
|
||||
func NewNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(404, "NotFoundError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(404, "NotFoundError", msg, err)
|
||||
}
|
||||
|
||||
func NewNotAcceptableError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(406, "NotAcceptableError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(406, "NotAcceptableError", msg, err)
|
||||
}
|
||||
|
||||
func NewDuplicateNameError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(409, "DuplicateNameError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(409, "DuplicateNameError", msg, err)
|
||||
}
|
||||
|
||||
func NewConflictError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(409, "ConflictError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(409, "ConflictError", msg, err)
|
||||
}
|
||||
|
||||
func NewResourceBusyError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(409, "ResourceBusyError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(409, "ResourceBusyError", msg, err)
|
||||
}
|
||||
|
||||
func NewRequireLicenseError(msg string, params ...interface{}) *httputils.JSONClientError {
|
||||
if len(params) > 0 {
|
||||
msg = fmt.Sprintf(msg, params...)
|
||||
}
|
||||
return NewJsonClientError(402, "RequireLicenseError", msg)
|
||||
msg, err := errorMessage(msg, params)
|
||||
return NewJsonClientError(402, "RequireLicenseError", msg, err)
|
||||
}
|
||||
|
||||
func NewGeneralError(err error) *httputils.JSONClientError {
|
||||
|
||||
@@ -8,18 +8,22 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/util/httputils"
|
||||
)
|
||||
|
||||
func HTTPError(w http.ResponseWriter, msg string, statusCode int, class string) {
|
||||
func HTTPError(w http.ResponseWriter, msg string, statusCode int, class string, error httputils.Error) {
|
||||
w.WriteHeader(statusCode)
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
body := jsonutils.NewDict()
|
||||
body.Add(jsonutils.NewInt(int64(statusCode)), "code")
|
||||
body.Add(jsonutils.NewString(msg), "details")
|
||||
body.Add(jsonutils.NewString(class), "class")
|
||||
err := jsonutils.NewDict()
|
||||
err.Add(jsonutils.NewString(error.Id), "id")
|
||||
err.Add(jsonutils.NewStringArray(error.Fields), "fields")
|
||||
body.Add(err, "data")
|
||||
w.Write([]byte(body.String()))
|
||||
}
|
||||
|
||||
func JsonClientError(w http.ResponseWriter, e *httputils.JSONClientError) {
|
||||
HTTPError(w, e.Details, e.Code, e.Class)
|
||||
HTTPError(w, e.Details, e.Code, e.Class, e.Data)
|
||||
}
|
||||
|
||||
func GeneralServerError(w http.ResponseWriter, e error) {
|
||||
|
||||
@@ -32,10 +32,16 @@ var (
|
||||
cyan = color.New(color.FgHiCyan, color.Bold).PrintlnFunc()
|
||||
)
|
||||
|
||||
type Error struct {
|
||||
Id string
|
||||
Fields []string
|
||||
}
|
||||
|
||||
type JSONClientError struct {
|
||||
Code int
|
||||
Class string
|
||||
Details string
|
||||
Data Error
|
||||
}
|
||||
|
||||
func (e *JSONClientError) Error() string {
|
||||
|
||||
Reference in New Issue
Block a user