internal/clients/user_agent.go (23 lines of code) (raw):
package clients
import (
"net/http"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
)
const (
HeaderUserAgent = "User-Agent"
)
type UserAgentPolicy struct {
UserAgent string
}
func (c UserAgentPolicy) Do(req *policy.Request) (*http.Response, error) {
userAgent := c.UserAgent
if requestUserAgent := req.Raw().Header.Get(HeaderUserAgent); requestUserAgent != "" {
userAgent = userAgent + " " + requestUserAgent
}
req.Raw().Header.Set(HeaderUserAgent, userAgent)
return req.Next()
}
var _ policy.Policy = UserAgentPolicy{}
// withUserAgent returns a policy.Policy that adds an HTTP extension header of
// `User-Agent` whose value is passed and has no length limitation
func withUserAgent(userAgent string) policy.Policy {
return UserAgentPolicy{UserAgent: userAgent}
}