1
0
mirror of https://github.com/rancher/norman.git synced 2025-07-18 17:31:07 +00:00
norman/httperror/handler.go

37 lines
753 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)
2018-01-20 04:29:07 +00:00
request.WriteResponse(error.code.Status, data)
2017-11-11 04:44:02 +00:00
}
func toError(apiError *APIError) map[string]interface{} {
e := map[string]interface{}{
2017-12-05 16:21:12 +00:00
"type": "/meta/schemas/error",
2018-01-20 04:29:07 +00:00
"status": apiError.code.Status,
2017-11-11 04:44:02 +00:00
"code": apiError.code.code,
"message": apiError.message,
}
if apiError.fieldName != "" {
e["fieldName"] = apiError.fieldName
}
return e
}