blob: 45ec19d3c19eb2eb866693a22f99923a2db795c2 [file] [log] [blame]
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package transport
import (
"net/http"
)
// adapted from https://stackoverflow.com/questions/51325704/adding-a-default-http-header-in-go
type headerTransportLayer struct {
http.Header
baseTransit http.RoundTripper
}
func NewTransportWithHeaders(baseTransit http.RoundTripper) headerTransportLayer {
if baseTransit == nil {
baseTransit = http.DefaultTransport
}
headers := make(http.Header)
return headerTransportLayer{Header: headers, baseTransit: baseTransit}
}
func (h headerTransportLayer) RoundTrip(req *http.Request) (*http.Response, error) {
for key, value := range h.Header {
// only set headers that are not previously defined
if _, ok := req.Header[key]; !ok {
req.Header[key] = value
}
}
return h.baseTransit.RoundTrip(req)
}