Skip to content

Commit 336534e

Browse files
authored
chore: [DI-1566] modify ua string (#159)
* [DI-1566] modify ua string
1 parent 16b3351 commit 336534e

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

client/client.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ func NewCredentials(username string, password string) *Credentials {
2929
// Client encapsulates a standard HTTP backend with authorization.
3030
type Client struct {
3131
*Credentials
32-
HTTPClient *http.Client
33-
accountSid string
32+
HTTPClient *http.Client
33+
accountSid string
34+
UserAgentExtensions []string
3435
}
3536

3637
// default http Client should not follow redirects and return the most recent response.
@@ -118,8 +119,13 @@ func (c *Client) SendRequest(method string, rawURL string, data url.Values,
118119

119120
req.SetBasicAuth(c.basicAuth())
120121

121-
// E.g. "User-Agent": "twilio-go/1.0.0 (go1.16)"
122-
userAgent := fmt.Sprint("twilio-go/", LibraryVersion, " (", goVersion, ")")
122+
// E.g. "User-Agent": "twilio-go/1.0.0 (darwin amd64) go/go1.17.8"
123+
userAgent := fmt.Sprintf("twilio-go/%s (%s %s) go/%s", LibraryVersion, runtime.GOOS, runtime.GOARCH, goVersion)
124+
125+
if len(c.UserAgentExtensions) > 0 {
126+
userAgent += " " + strings.Join(c.UserAgentExtensions, " ")
127+
}
128+
123129
req.Header.Add("User-Agent", userAgent)
124130

125131
if method == http.MethodPost {

client/client_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"net/http/httptest"
88
"net/url"
99
"os"
10+
"regexp"
11+
"strings"
1012
"testing"
1113
"time"
1214

@@ -266,3 +268,25 @@ func TestClient_SetAccountSid(t *testing.T) {
266268
client.SetAccountSid("account_sid")
267269
assert.Equal(t, "account_sid", client.AccountSid())
268270
}
271+
272+
func TestClient_DefaultUserAgentHeaders(t *testing.T) {
273+
headerServer := httptest.NewServer(http.HandlerFunc(
274+
func(writer http.ResponseWriter, request *http.Request) {
275+
assert.Regexp(t, regexp.MustCompile(`^twilio-go/[0-9.]+\s\(\w+\s\w+\)\sgo/[^\s]+$`), request.Header.Get("User-Agent"))
276+
}))
277+
278+
resp, _ := testClient.SendRequest("GET", headerServer.URL, nil, nil)
279+
assert.Equal(t, 200, resp.StatusCode)
280+
}
281+
282+
func TestClient_UserAgentExtensionsHeaders(t *testing.T) {
283+
var expectedExtensions = []string{"twilio-run/2.0.0-test", "flex-plugin/3.4.0"}
284+
testClient.UserAgentExtensions = expectedExtensions
285+
headerServer := httptest.NewServer(http.HandlerFunc(
286+
func(writer http.ResponseWriter, request *http.Request) {
287+
var headersList = strings.Split(request.Header.Get("User-Agent"), " ")
288+
assert.Equal(t, headersList[len(headersList)-len(expectedExtensions):], expectedExtensions)
289+
}))
290+
resp, _ := testClient.SendRequest("GET", headerServer.URL, nil, nil)
291+
assert.Equal(t, 200, resp.StatusCode)
292+
}

0 commit comments

Comments
 (0)