storj.io/uplink@v1.13.0/private/version/version.go (about) 1 // Copyright (C) 2021 Storj Labs, Inc. 2 // See LICENSE for copying information. 3 4 package version 5 6 import ( 7 "github.com/zeebo/errs" 8 9 "storj.io/common/useragent" 10 "storj.io/common/version/buildinfo" 11 ) 12 13 // AppendVersionToUserAgent appends uplink product and version to user agent string. 14 // 15 // This doesn't work in test environment. 16 func AppendVersionToUserAgent(useragentStr string) (string, error) { 17 version, err := buildinfo.FromBuild("storj.io/uplink") 18 if err != nil { 19 return useragentStr, nil //nolint: nilerr // passthrough 20 } 21 entries := []useragent.Entry{} 22 if len(useragentStr) > 0 { 23 entries, err = useragent.ParseEntries([]byte(useragentStr)) 24 if err != nil { 25 return "", errs.New("invalid user agent: %w", err) 26 } 27 } 28 29 // uplink, built locally, using go.work references 30 if version == "(devel)" { 31 version = "" 32 } 33 34 entries = append(entries, useragent.Entry{ 35 Product: "uplink", 36 Version: version, 37 }) 38 newUseragent, err := useragent.EncodeEntries(entries) 39 if err != nil { 40 return "", errs.New("unable to encode user agent entries: %w", err) 41 } 42 return string(newUseragent), nil 43 }