github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/pkg/apperrors/http_errors.go (about) 1 package apperrors 2 3 import ( 4 "context" 5 "encoding/json" 6 "net/http" 7 8 "github.com/99designs/gqlgen/graphql" 9 "github.com/kyma-incubator/compass/components/director/pkg/log" 10 "github.com/vektah/gqlparser/v2/gqlerror" 11 ) 12 13 // WriteAppError missing godoc 14 func WriteAppError(ctx context.Context, w http.ResponseWriter, appErr error, statusCode int) { 15 errCode := ErrorCode(appErr) 16 if errCode == UnknownError || errCode == InternalError { 17 errCode = InternalError 18 } 19 20 w.WriteHeader(statusCode) 21 w.Header().Set("Content-Type", "application/json") 22 resp := graphql.Response{Errors: []*gqlerror.Error{{ 23 Message: appErr.Error(), 24 Extensions: map[string]interface{}{"error_code": errCode, "error": errCode.String()}}}} 25 err := json.NewEncoder(w).Encode(resp) 26 if err != nil { 27 log.C(ctx).WithError(err).Errorf("An error occurred while encoding data: %v", err) 28 } 29 }