|
|
|
@ -843,7 +843,18 @@ func (api *API) respond(w http.ResponseWriter, data interface{}) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (api *API) respondError(w http.ResponseWriter, apiErr *apiError, data interface{}) {
|
|
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
|
|
|
json := jsoniter.ConfigCompatibleWithStandardLibrary
|
|
|
|
|
b, err := json.Marshal(&response{
|
|
|
|
|
Status: statusError,
|
|
|
|
|
ErrorType: apiErr.typ,
|
|
|
|
|
Error: apiErr.err.Error(),
|
|
|
|
|
Data: data,
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
level.Error(api.logger).Log("msg", "error marshalling json response", "err", err)
|
|
|
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var code int
|
|
|
|
|
switch apiErr.typ {
|
|
|
|
@ -860,22 +871,9 @@ func (api *API) respondError(w http.ResponseWriter, apiErr *apiError, data inter
|
|
|
|
|
default:
|
|
|
|
|
code = http.StatusInternalServerError
|
|
|
|
|
}
|
|
|
|
|
w.WriteHeader(code)
|
|
|
|
|
|
|
|
|
|
json := jsoniter.ConfigCompatibleWithStandardLibrary
|
|
|
|
|
b, err := json.Marshal(&response{
|
|
|
|
|
Status: statusError,
|
|
|
|
|
ErrorType: apiErr.typ,
|
|
|
|
|
Error: apiErr.err.Error(),
|
|
|
|
|
Data: data,
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if err != nil {
|
|
|
|
|
level.Error(api.logger).Log("msg", "error marshalling json response", "err", err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
|
|
|
w.WriteHeader(code)
|
|
|
|
|
if n, err := w.Write(b); err != nil {
|
|
|
|
|
level.Error(api.logger).Log("msg", "error writing response", "n", n, "err", err)
|
|
|
|
|
}
|
|
|
|
|