package http import ( "net/http" "gopkg.in/DataDog/dd-trace-go.v1/ddtrace" ) type muxConfig struct{ serviceName string } // MuxOption represents an option that can be passed to NewServeMux. type MuxOption func(*muxConfig) func defaults(cfg *muxConfig) { cfg.serviceName = "http.router" } // WithServiceName sets the given service name for the returned ServeMux. func WithServiceName(name string) MuxOption { return func(cfg *muxConfig) { cfg.serviceName = name } } // A RoundTripperBeforeFunc can be used to modify a span before an http // RoundTrip is made. type RoundTripperBeforeFunc func(*http.Request, ddtrace.Span) // A RoundTripperAfterFunc can be used to modify a span after an http // RoundTrip is made. It is possible for the http Response to be nil. type RoundTripperAfterFunc func(*http.Response, ddtrace.Span) type roundTripperConfig struct { before RoundTripperBeforeFunc after RoundTripperAfterFunc } // A RoundTripperOption represents an option that can be passed to // WrapRoundTripper. type RoundTripperOption func(*roundTripperConfig) // WithBefore adds a RoundTripperBeforeFunc to the RoundTripper // config. func WithBefore(f RoundTripperBeforeFunc) RoundTripperOption { return func(cfg *roundTripperConfig) { cfg.before = f } } // WithAfter adds a RoundTripperAfterFunc to the RoundTripper // config. func WithAfter(f RoundTripperAfterFunc) RoundTripperOption { return func(cfg *roundTripperConfig) { cfg.after = f } }