Azure/GCM: Improve error display (#96921)

Improve handling of errors
This commit is contained in:
Andreas Christou
2024-12-06 18:16:23 +00:00
committed by GitHub
parent f60caf6932
commit 9f75a448d4
2 changed files with 22 additions and 14 deletions
@@ -116,9 +116,13 @@ func (s *Service) getDataSourceFromHTTPReq(req *http.Request) (types.DatasourceI
return ds, nil
}
func writeResponse(rw http.ResponseWriter, code int, msg string) {
func writeErrorResponse(rw http.ResponseWriter, code int, msg string) {
rw.WriteHeader(http.StatusBadRequest)
_, err := rw.Write([]byte(msg))
errorBody := map[string]string{
"error": msg,
}
json, _ := json.Marshal(errorBody)
_, err := rw.Write(json)
if err != nil {
backend.Logger.Error("Unable to write HTTP response", "error", err)
}
@@ -130,20 +134,20 @@ func (s *Service) handleResourceReq(subDataSource string) func(rw http.ResponseW
newPath, err := getTarget(req.URL.Path)
if err != nil {
writeResponse(rw, http.StatusBadRequest, err.Error())
writeErrorResponse(rw, http.StatusBadRequest, err.Error())
return
}
dsInfo, err := s.getDataSourceFromHTTPReq(req)
if err != nil {
writeResponse(rw, http.StatusInternalServerError, fmt.Sprintf("unexpected error %v", err))
writeErrorResponse(rw, http.StatusInternalServerError, fmt.Sprintf("unexpected error %v", err))
return
}
service := dsInfo.Services[subDataSource]
serviceURL, err := url.Parse(service.URL)
if err != nil {
writeResponse(rw, http.StatusInternalServerError, fmt.Sprintf("unexpected error %v", err))
writeErrorResponse(rw, http.StatusInternalServerError, fmt.Sprintf("unexpected error %v", err))
return
}
req.URL.Path = newPath
@@ -152,7 +156,7 @@ func (s *Service) handleResourceReq(subDataSource string) func(rw http.ResponseW
rw, err = s.executors[subDataSource].ResourceRequest(rw, req, service.HTTPClient)
if err != nil {
writeResponse(rw, http.StatusInternalServerError, fmt.Sprintf("unexpected error %v", err))
writeErrorResponse(rw, http.StatusInternalServerError, fmt.Sprintf("unexpected error %v", err))
return
}
}