mirror of
https://github.com/imgproxy/imgproxy.git
synced 2025-12-23 22:11:10 +02:00
51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
package errorreport
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
|
|
"github.com/imgproxy/imgproxy/v3/errorreport/airbrake"
|
|
"github.com/imgproxy/imgproxy/v3/errorreport/bugsnag"
|
|
"github.com/imgproxy/imgproxy/v3/errorreport/honeybadger"
|
|
"github.com/imgproxy/imgproxy/v3/errorreport/sentry"
|
|
)
|
|
|
|
type metaCtxKey struct{}
|
|
|
|
func Init() {
|
|
bugsnag.Init()
|
|
honeybadger.Init()
|
|
sentry.Init()
|
|
airbrake.Init()
|
|
}
|
|
|
|
func StartRequest(req *http.Request) context.Context {
|
|
meta := make(map[string]any)
|
|
return context.WithValue(req.Context(), metaCtxKey{}, meta)
|
|
}
|
|
|
|
func SetMetadata(req *http.Request, key string, value any) {
|
|
meta, ok := req.Context().Value(metaCtxKey{}).(map[string]any)
|
|
if !ok || meta == nil {
|
|
return
|
|
}
|
|
|
|
meta[key] = value
|
|
}
|
|
|
|
func Report(err error, req *http.Request) {
|
|
meta, ok := req.Context().Value(metaCtxKey{}).(map[string]any)
|
|
if !ok {
|
|
meta = nil
|
|
}
|
|
|
|
bugsnag.Report(err, req, meta)
|
|
honeybadger.Report(err, req, meta)
|
|
sentry.Report(err, req, meta)
|
|
airbrake.Report(err, req, meta)
|
|
}
|
|
|
|
func Close() {
|
|
airbrake.Close()
|
|
}
|