1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2025-12-23 22:11:10 +02:00
Files
imgproxy/errorreport/errorreport.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()
}