Skip to content

Commit 46d87c0

Browse files
authored
Set header User-Agent=cloudamqp-cli (#29)
Set header User-Agent=cloudamqp-cli
1 parent 324536c commit 46d87c0

34 files changed

+89
-84
lines changed

client/client.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ type Client struct {
1717
apiKey string
1818
baseURL string
1919
httpClient *http.Client
20+
version string
2021
}
2122

22-
func New(apiKey string) *Client {
23+
func New(apiKey, version string) *Client {
2324
baseURL := "https://customer.cloudamqp.com/api"
2425
if envURL := os.Getenv("CLOUDAMQP_URL"); envURL != "" {
2526
baseURL = envURL
@@ -28,24 +29,27 @@ func New(apiKey string) *Client {
2829
apiKey: apiKey,
2930
baseURL: baseURL,
3031
httpClient: &http.Client{},
32+
version: version,
3133
}
3234
}
3335

34-
func NewWithBaseURL(apiKey, baseURL string) *Client {
36+
func NewWithBaseURL(apiKey, baseURL, version string) *Client {
3537
return &Client{
3638
apiKey: apiKey,
3739
baseURL: baseURL,
3840
httpClient: &http.Client{},
41+
version: version,
3942
}
4043
}
4144

4245
// NewWithHTTPClient creates a new client with a custom HTTP client.
4346
// This is useful for testing with tools like go-vcr.
44-
func NewWithHTTPClient(apiKey, baseURL string, httpClient *http.Client) *Client {
47+
func NewWithHTTPClient(apiKey, baseURL, version string, httpClient *http.Client) *Client {
4548
return &Client{
4649
apiKey: apiKey,
4750
baseURL: baseURL,
4851
httpClient: httpClient,
52+
version: version,
4953
}
5054
}
5155

@@ -77,6 +81,7 @@ func (c *Client) makeRequest(method, endpoint string, body any) ([]byte, error)
7781
if contentType != "" {
7882
req.Header.Set("Content-Type", contentType)
7983
}
84+
req.Header.Set("User-Agent", fmt.Sprintf("cloudamqp-cli/%s", c.version))
8085

8186
resp, err := c.httpClient.Do(req)
8287
if err != nil {

client/client_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212

1313
func TestNew(t *testing.T) {
1414
apiKey := "test-api-key"
15-
client := New(apiKey)
15+
client := New(apiKey, "test")
1616

1717
assert.NotNil(t, client)
1818
assert.Equal(t, apiKey, client.apiKey)
@@ -29,7 +29,7 @@ func TestNew_WithEnvironmentVariable(t *testing.T) {
2929
os.Setenv("CLOUDAMQP_URL", customURL)
3030

3131
apiKey := "test-api-key"
32-
client := New(apiKey)
32+
client := New(apiKey, "test")
3333

3434
assert.NotNil(t, client)
3535
assert.Equal(t, apiKey, client.apiKey)
@@ -38,7 +38,7 @@ func TestNew_WithEnvironmentVariable(t *testing.T) {
3838

3939
// Test with empty environment variable (should use default)
4040
os.Setenv("CLOUDAMQP_URL", "")
41-
client = New(apiKey)
41+
client = New(apiKey, "test")
4242

4343
assert.NotNil(t, client)
4444
assert.Equal(t, "https://customer.cloudamqp.com/api", client.baseURL)
@@ -64,7 +64,7 @@ func TestMakeRequest_GET_Success(t *testing.T) {
6464
defer server.Close()
6565

6666
// Create client with test server URL
67-
client := NewWithBaseURL("test-api-key", server.URL)
67+
client := NewWithBaseURL("test-api-key", server.URL, "test")
6868

6969
// Test request
7070
resp, err := client.makeRequest("GET", "/test", nil)
@@ -92,7 +92,7 @@ func TestMakeRequest_POST_FormData(t *testing.T) {
9292
defer server.Close()
9393

9494
// Create client with test server URL
95-
client := NewWithBaseURL("test-api-key", server.URL)
95+
client := NewWithBaseURL("test-api-key", server.URL, "test")
9696

9797
// Test request with form data
9898
formData := url.Values{}
@@ -123,7 +123,7 @@ func TestMakeRequest_POST_JSON(t *testing.T) {
123123
defer server.Close()
124124

125125
// Create client with test server URL
126-
client := NewWithBaseURL("test-api-key", server.URL)
126+
client := NewWithBaseURL("test-api-key", server.URL, "test")
127127

128128
// Test request with JSON data
129129
jsonData := map[string]string{"test": "value"}
@@ -143,7 +143,7 @@ func TestMakeRequest_APIError_JSON(t *testing.T) {
143143
defer server.Close()
144144

145145
// Create client with test server URL
146-
client := NewWithBaseURL("test-api-key", server.URL)
146+
client := NewWithBaseURL("test-api-key", server.URL, "test")
147147

148148
// Test request
149149
_, err := client.makeRequest("GET", "/test", nil)
@@ -161,7 +161,7 @@ func TestMakeRequest_APIError_Plain(t *testing.T) {
161161
defer server.Close()
162162

163163
// Create client with test server URL
164-
client := NewWithBaseURL("test-api-key", server.URL)
164+
client := NewWithBaseURL("test-api-key", server.URL, "test")
165165

166166
// Test request
167167
_, err := client.makeRequest("GET", "/test", nil)
@@ -172,7 +172,7 @@ func TestMakeRequest_APIError_Plain(t *testing.T) {
172172

173173
func TestMakeRequest_NetworkError(t *testing.T) {
174174
// Create client with invalid URL
175-
client := NewWithBaseURL("test-api-key", "http://invalid-url-that-does-not-exist")
175+
client := NewWithBaseURL("test-api-key", "http://invalid-url-that-does-not-exist", "test")
176176

177177
// Test request
178178
_, err := client.makeRequest("GET", "/test", nil)
@@ -182,7 +182,7 @@ func TestMakeRequest_NetworkError(t *testing.T) {
182182
}
183183

184184
func TestMakeRequest_InvalidJSON(t *testing.T) {
185-
client := New("test-api-key")
185+
client := New("test-api-key", "test")
186186

187187
// Test with invalid JSON data
188188
invalidData := make(chan int) // channels can't be marshaled to JSON

client/common_operations_vcr_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func TestListInstancesVCR(t *testing.T) {
3333
}
3434

3535
httpClient := &http.Client{Transport: r}
36-
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", httpClient)
36+
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", "test", httpClient)
3737

3838
instances, err := client.ListInstances()
3939

@@ -64,7 +64,7 @@ func TestGetInstanceVCR(t *testing.T) {
6464
}
6565

6666
httpClient := &http.Client{Transport: r}
67-
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", httpClient)
67+
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", "test", httpClient)
6868

6969
// Use an existing instance ID (should match cassette)
7070
instanceID := 359563
@@ -98,7 +98,7 @@ func TestListRegionsVCR(t *testing.T) {
9898
}
9999

100100
httpClient := &http.Client{Transport: r}
101-
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", httpClient)
101+
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", "test", httpClient)
102102

103103
regions, err := client.ListRegions("")
104104

@@ -135,7 +135,7 @@ func TestListPlansVCR(t *testing.T) {
135135
}
136136

137137
httpClient := &http.Client{Transport: r}
138-
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", httpClient)
138+
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", "test", httpClient)
139139

140140
plans, err := client.ListPlans("")
141141

client/instances_bunny_vcr_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func TestCreateInstanceBunny1(t *testing.T) {
3737
}
3838

3939
httpClient := &http.Client{Transport: r}
40-
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", httpClient)
40+
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", "test", httpClient)
4141

4242
// Create instance with bunny-1 plan
4343
req := &InstanceCreateRequest{
@@ -84,7 +84,7 @@ func TestUpdateInstanceBunny1ToHare1(t *testing.T) {
8484
}
8585

8686
httpClient := &http.Client{Transport: r}
87-
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", httpClient)
87+
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", "test", httpClient)
8888

8989
// Use a real instance ID from a bunny-1 instance
9090
// This should be an instance that is already created and fully configured
@@ -138,7 +138,7 @@ func TestDeleteInstanceBunny1(t *testing.T) {
138138
}
139139

140140
httpClient := &http.Client{Transport: r}
141-
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", httpClient)
141+
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", "test", httpClient)
142142

143143
// Use an instance ID that exists (from a previous test or manual creation)
144144
instanceID := 359559

client/instances_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func TestListInstances(t *testing.T) {
3131
defer server.Close()
3232

3333
// Test
34-
client := NewWithBaseURL("test-api-key", server.URL)
34+
client := NewWithBaseURL("test-api-key", server.URL, "test")
3535

3636
instances, err := client.ListInstances()
3737

@@ -62,7 +62,7 @@ func TestGetInstance(t *testing.T) {
6262
defer server.Close()
6363

6464
// Test
65-
client := NewWithBaseURL("test-api-key", server.URL)
65+
client := NewWithBaseURL("test-api-key", server.URL, "test")
6666

6767
instance, err := client.GetInstance(1234)
6868

@@ -97,7 +97,7 @@ func TestCreateInstance(t *testing.T) {
9797
defer server.Close()
9898

9999
// Test
100-
client := NewWithBaseURL("test-api-key", server.URL)
100+
client := NewWithBaseURL("test-api-key", server.URL, "test")
101101

102102
req := &InstanceCreateRequest{
103103
Name: "test-instance",
@@ -128,7 +128,7 @@ func TestCreateInstance_WithTags(t *testing.T) {
128128
}))
129129
defer server.Close()
130130

131-
client := NewWithBaseURL("test-api-key", server.URL)
131+
client := NewWithBaseURL("test-api-key", server.URL, "test")
132132

133133
req := &InstanceCreateRequest{
134134
Name: "test-instance",
@@ -154,7 +154,7 @@ func TestCreateInstance_WithVPC(t *testing.T) {
154154
}))
155155
defer server.Close()
156156

157-
client := NewWithBaseURL("test-api-key", server.URL)
157+
client := NewWithBaseURL("test-api-key", server.URL, "test")
158158

159159
vpcID := 5678
160160
req := &InstanceCreateRequest{
@@ -183,7 +183,7 @@ func TestUpdateInstance(t *testing.T) {
183183
}))
184184
defer server.Close()
185185

186-
client := NewWithBaseURL("test-api-key", server.URL)
186+
client := NewWithBaseURL("test-api-key", server.URL, "test")
187187

188188
req := &InstanceUpdateRequest{
189189
Name: "updated-name",
@@ -203,7 +203,7 @@ func TestDeleteInstance(t *testing.T) {
203203
}))
204204
defer server.Close()
205205

206-
client := NewWithBaseURL("test-api-key", server.URL)
206+
client := NewWithBaseURL("test-api-key", server.URL, "test")
207207

208208
err := client.DeleteInstance(1234)
209209
assert.NoError(t, err)
@@ -223,7 +223,7 @@ func TestResizeInstanceDisk(t *testing.T) {
223223
}))
224224
defer server.Close()
225225

226-
client := NewWithBaseURL("test-api-key", server.URL)
226+
client := NewWithBaseURL("test-api-key", server.URL, "test")
227227

228228
req := &DiskResizeRequest{
229229
ExtraDiskSize: 100,
@@ -246,7 +246,7 @@ func TestResizeInstanceDisk_NoDowntime(t *testing.T) {
246246
}))
247247
defer server.Close()
248248

249-
client := NewWithBaseURL("test-api-key", server.URL)
249+
client := NewWithBaseURL("test-api-key", server.URL, "test")
250250

251251
req := &DiskResizeRequest{
252252
ExtraDiskSize: 50,

client/instances_vcr_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func TestCreateInstanceVCR(t *testing.T) {
8383
httpClient := &http.Client{Transport: r}
8484

8585
// Create client with VCR HTTP client
86-
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", httpClient)
86+
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", "test", httpClient)
8787

8888
// Create instance request
8989
req := &InstanceCreateRequest{

client/regions_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func TestListRegions(t *testing.T) {
3434
}))
3535
defer server.Close()
3636

37-
client := NewWithBaseURL("test-api-key", server.URL)
37+
client := NewWithBaseURL("test-api-key", server.URL, "test")
3838

3939
regions, err := client.ListRegions("")
4040

@@ -63,7 +63,7 @@ func TestListRegions_WithProvider(t *testing.T) {
6363
}))
6464
defer server.Close()
6565

66-
client := NewWithBaseURL("test-api-key", server.URL)
66+
client := NewWithBaseURL("test-api-key", server.URL, "test")
6767

6868
regions, err := client.ListRegions("amazon-web-services")
6969

@@ -97,7 +97,7 @@ func TestListPlans(t *testing.T) {
9797
}))
9898
defer server.Close()
9999

100-
client := NewWithBaseURL("test-api-key", server.URL)
100+
client := NewWithBaseURL("test-api-key", server.URL, "test")
101101

102102
plans, err := client.ListPlans("")
103103

@@ -125,7 +125,7 @@ func TestListPlans_WithBackend(t *testing.T) {
125125
}))
126126
defer server.Close()
127127

128-
client := NewWithBaseURL("test-api-key", server.URL)
128+
client := NewWithBaseURL("test-api-key", server.URL, "test")
129129

130130
plans, err := client.ListPlans("rabbitmq")
131131

client/vpc_vcr_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func TestListVPCsVCR(t *testing.T) {
3232
}
3333

3434
httpClient := &http.Client{Transport: r}
35-
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", httpClient)
35+
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", "test", httpClient)
3636

3737
vpcs, err := client.ListVPCs()
3838

@@ -62,7 +62,7 @@ func TestVPCLifecycleVCR(t *testing.T) {
6262
}
6363

6464
httpClient := &http.Client{Transport: r}
65-
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", httpClient)
65+
client := NewWithHTTPClient(apiKey, "https://customer.cloudamqp.com/api", "test", httpClient)
6666

6767
// Step 1: Create VPC
6868
t.Log("Step 1: Creating VPC")

0 commit comments

Comments
 (0)