57 lines
1.4 KiB
Go
57 lines
1.4 KiB
Go
|
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
|
||
|
}
|
||
|
}
|