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  }