Documentation ¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DefaultRequestHeaderTransporter ¶
type DefaultRequestHeaderTransporter struct {
// contains filtered or unexported fields
}
DefaultRequestHeaderTransporter is a utility http.Transport to inject the default request header.
func NewDefaultRequestHeaderTransporter ¶
func NewDefaultRequestHeaderTransporter(originalTransporter http.RoundTripper, header http.Header) *DefaultRequestHeaderTransporter
NewDefaultRequestHeaderTransporter makes a new instance of DefaultRequestHeaderTransporter. Created DefaultRequestHeaderTransporter injects given header value into every requests' header. If given originalTransporter is nil, it uses http.DefaultTransport instead.
func (*DefaultRequestHeaderTransporter) RoundTrip ¶
RoundTrip inherits the original transporter's RoundTrip with injecting the default header values.
Example ¶
listenerPortCh := make(chan int) mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // output custom default request header values for _, h := range r.Header.Values("user-agent") { fmt.Printf("%s\n", h) } for _, h := range r.Header.Values("x-test") { fmt.Printf("%s\n", h) } w.WriteHeader(200) }) server := &http.Server{ Handler: mux, } go func(server *http.Server) { listener, err := net.Listen("tcp", ":0") if err != nil { log.Fatal(err) } listenerPortCh <- listener.Addr().(*net.TCPAddr).Port err = server.Serve(listener) if err != nil { log.Printf("server shutdown: %s", err) } }(server) defer func() { err := server.Shutdown(context.Background()) if err != nil { log.Printf("[error] failed to shutdown the http server: %s", err) } }() port := <-listenerPortCh httpURL := fmt.Sprintf("http://127.0.0.1:%d", port) defaultHeader := http.Header{} defaultHeader.Set("user-agent", "custom-UA/0.0.1") defaultHeader.Add("x-test", "foo") defaultHeader.Add("x-test", "bar") hc := &http.Client{} hc.Timeout = 3 * time.Second hc.Transport = NewDefaultRequestHeaderTransporter(hc.Transport, defaultHeader) resp, err := hc.Get(httpURL) if err != nil { log.Fatal(err) } _, _ = io.Copy(io.Discard, resp.Body) _ = resp.Body.Close()
Output: custom-UA/0.0.1 foo bar
Click to show internal directories.
Click to hide internal directories.