1
0
mirror of https://github.com/rancher/norman.git synced 2025-07-05 19:47:42 +00:00
norman/httperror/handler.go

36 lines
721 B
Go
Raw Normal View History

2017-11-11 04:44:02 +00:00
package httperror
import (
"github.com/rancher/norman/types"
"github.com/sirupsen/logrus"
)
func ErrorHandler(request *types.APIContext, err error) {
var error *APIError
if apiError, ok := err.(*APIError); ok {
error = apiError
} else {
logrus.Errorf("Unknown error: %v", err)
error = &APIError{
2017-11-21 20:46:30 +00:00
code: ServerError,
2017-11-11 04:44:02 +00:00
message: err.Error(),
}
}
data := toError(error)
request.WriteResponse(error.code.status, data)
}
func toError(apiError *APIError) map[string]interface{} {
e := map[string]interface{}{
2017-11-21 20:46:30 +00:00
"type": "/v1-meta/schemas/error",
2017-11-11 04:44:02 +00:00
"code": apiError.code.code,
"message": apiError.message,
}
if apiError.fieldName != "" {
e["fieldName"] = apiError.fieldName
}
return e
}