1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
package http
import (
"strings"
)
// UserAgentBuilder is a builder for a HTTP User-Agent string.
type UserAgentBuilder struct {
sb strings.Builder
}
// NewUserAgentBuilder returns a new UserAgentBuilder.
func NewUserAgentBuilder() *UserAgentBuilder {
return &UserAgentBuilder{sb: strings.Builder{}}
}
// AddKey adds the named component/product to the agent string
func (u *UserAgentBuilder) AddKey(key string) {
u.appendTo(key)
}
// AddKeyValue adds the named key to the agent string with the given value.
func (u *UserAgentBuilder) AddKeyValue(key, value string) {
u.appendTo(key + "/" + value)
}
// Build returns the constructed User-Agent string. May be called multiple times.
func (u *UserAgentBuilder) Build() string {
return u.sb.String()
}
func (u *UserAgentBuilder) appendTo(value string) {
if u.sb.Len() > 0 {
u.sb.WriteRune(' ')
}
u.sb.WriteString(value)
}
|