x/error_enhancer.go
// Copyright © 2022 Ory Corp
// SPDX-License-Identifier: Apache-2.0
package x
import (
"net/http"
"github.com/pkg/errors"
"github.com/ory/fosite"
"github.com/ory/herodot"
)
type enhancedError struct {
*fosite.RFC6749Error
RequestID string `json:"request_id"`
}
func ErrorEnhancer(r *http.Request, err error) interface{} {
if e := new(herodot.DefaultError); errors.As(err, &e) {
return &enhancedError{
RFC6749Error: (&fosite.RFC6749Error{
ErrorField: e.Error(),
DescriptionField: e.Reason(),
CodeField: e.StatusCode(),
}).WithTrace(err),
RequestID: r.Header.Get("X-Request-Id"),
}
}
return &enhancedError{
RFC6749Error: fosite.ErrorToRFC6749Error(err),
RequestID: r.Header.Get("X-Request-Id"),
}
}