mirror of
https://github.com/restic/restic.git
synced 2025-12-12 06:41:54 +00:00
http: allow custom User-Agent for outgoing HTTP requests
This commit is contained in:
committed by
Michael Eischer
parent
cdd210185d
commit
de7b418bbe
25
internal/backend/httpuseragent_roundtripper.go
Normal file
25
internal/backend/httpuseragent_roundtripper.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package backend
|
||||
|
||||
import "net/http"
|
||||
|
||||
// httpUserAgentRoundTripper is a custom http.RoundTripper that modifies the User-Agent header
|
||||
// of outgoing HTTP requests.
|
||||
type httpUserAgentRoundTripper struct {
|
||||
userAgent string
|
||||
rt http.RoundTripper
|
||||
}
|
||||
|
||||
func newCustomUserAgentRoundTripper(rt http.RoundTripper, userAgent string) *httpUserAgentRoundTripper {
|
||||
return &httpUserAgentRoundTripper{
|
||||
rt: rt,
|
||||
userAgent: userAgent,
|
||||
}
|
||||
}
|
||||
|
||||
// RoundTrip modifies the User-Agent header of the request and then delegates the request
|
||||
// to the underlying RoundTripper.
|
||||
func (c *httpUserAgentRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||
req = req.Clone(req.Context())
|
||||
req.Header.Set("User-Agent", c.userAgent)
|
||||
return c.rt.RoundTrip(req)
|
||||
}
|
||||
Reference in New Issue
Block a user