+8
-1
cmd/plcbundle/commands/common.go
+8
-1
cmd/plcbundle/commands/common.go
···
132
132
// Create PLC client if URL provided
133
133
var client *plcclient.Client
134
134
if opts.PLCURL != "" {
135
-
client = plcclient.NewClient(opts.PLCURL)
135
+
// Build user agent with version
136
+
userAgent := fmt.Sprintf("plcbundle/%s",
137
+
GetVersion())
138
+
139
+
client = plcclient.NewClient(
140
+
opts.PLCURL,
141
+
plcclient.WithUserAgent(userAgent),
142
+
)
136
143
}
137
144
138
145
// Set handle resolver URL from flag or option
+11
internal/plcclient/client.go
+11
internal/plcclient/client.go
···
19
19
httpClient *http.Client
20
20
rateLimiter *RateLimiter
21
21
logger Logger
22
+
userAgent string
22
23
}
23
24
24
25
// Logger is a simple logging interface
···
48
49
}
49
50
}
50
51
52
+
// WithUserAgent sets a custom user agent string
53
+
func WithUserAgent(userAgent string) ClientOption {
54
+
return func(c *Client) {
55
+
c.userAgent = userAgent
56
+
}
57
+
}
58
+
51
59
// WithTimeout sets a custom HTTP timeout
52
60
func WithTimeout(timeout time.Duration) ClientOption {
53
61
return func(c *Client) {
···
75
83
},
76
84
rateLimiter: NewRateLimiter(90, time.Minute),
77
85
logger: defaultLogger{},
86
+
userAgent: "plcbundle/dev",
78
87
}
79
88
80
89
for _, opt := range opts {
···
153
162
if err != nil {
154
163
return nil, 0, err
155
164
}
165
+
req.Header.Set("User-Agent", c.userAgent)
156
166
157
167
// Add query parameters
158
168
q := req.URL.Query()
···
252
262
if err != nil {
253
263
return nil, err
254
264
}
265
+
req.Header.Set("User-Agent", c.userAgent)
255
266
256
267
resp, err := c.httpClient.Do(req)
257
268
if err != nil {