Skip to content

Commit ff926ad

Browse files
authored
feat!: change user-agent logic (#12)
BREAKING CHANGE: a new approach for using custom User-Agent is introduced. Now, some method signatures and User-Agent "appending" logic have changed, be cautios. Custom User-Agent is now added as a postfix to the default one.
1 parent e1605ae commit ff926ad

File tree

9 files changed

+35
-30
lines changed

9 files changed

+35
-30
lines changed

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ After that initialize `Client` with the retrieved token.
4545

4646
### Usage example
4747

48+
> [!NOTE] It is highly recommended to use the `WithClientUserAgent` option to set a custom User-Agent for the client.
49+
4850
```go
4951
package main
5052

@@ -61,13 +63,13 @@ func main() {
6163
// It should be Service User Token
6264
token := "gAAAAABeVNzu-..."
6365

64-
// A Prefix to be added to User-Agent.
65-
prefix := "iam-custom"
66+
// A client User-Agent.
67+
userAgent := "iam-custom"
6668

6769
// Create a new IAM client.
6870
iamClient, err := iam.New(
6971
iam.WithAuthOpts(&iam.AuthOpts{KeystoneToken: token}),
70-
iam.WithUserAgentPrefix(prefix),
72+
iam.WithClientUserAgent(userAgent),
7173
)
7274
// Handle the error.
7375
if err != nil {

examples/federation-with-user/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ var (
2525
token = "gAAAAA..."
2626
deleteAfterRun = false
2727

28-
// Prefix to be added to User-Agent.
29-
prefix = "iam-go"
28+
// Client User-Agent to be added.
29+
clientUserAgent = "iam-go"
3030

3131
federationName = "federation_name"
3232
federationDescription = "federation_description"
@@ -45,7 +45,7 @@ func main() {
4545
// Create a new IAM client.
4646
iamClient, err := iam.New(
4747
iam.WithAuthOpts(&iam.AuthOpts{KeystoneToken: token}),
48-
iam.WithUserAgentPrefix(prefix),
48+
iam.WithClientUserAgent(clientUserAgent),
4949
)
5050
if err != nil {
5151
fmt.Println(err)

examples/group-with-user/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ var (
2727
token = "gAAAAA..."
2828
deleteAfterRun = false
2929

30-
// Prefix to be added to User-Agent.
31-
prefix = "iam-go"
30+
// Client User-Agent to be added.
31+
clientUserAgent = "iam-go"
3232

3333
groupName = "test_group_name"
3434
description = "group_description"
@@ -41,7 +41,7 @@ func main() {
4141
// Create a new IAM client.
4242
iamClient, err := iam.New(
4343
iam.WithAuthOpts(&iam.AuthOpts{KeystoneToken: token}),
44-
iam.WithUserAgentPrefix(prefix),
44+
iam.WithClientUserAgent(clientUserAgent),
4545
)
4646
if err != nil {
4747
fmt.Println(err)

examples/s3credentials-create-delete/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ var (
1212
token = "gAAAAA..."
1313
deleteAfterRun = false
1414

15-
// Prefix to be added to User-Agent.
16-
prefix = "iam-go"
15+
// Client User-Agent to be added.
16+
clientUserAgent = "iam-go"
1717

1818
// ID of the User to create S3 Credentials for.
1919
userID = "a1b2c3..."
@@ -29,7 +29,7 @@ func main() {
2929
// Create a new IAM client.
3030
iamClient, err := iam.New(
3131
iam.WithAuthOpts(&iam.AuthOpts{KeystoneToken: token}),
32-
iam.WithUserAgentPrefix(prefix),
32+
iam.WithClientUserAgent(clientUserAgent),
3333
)
3434
// Handle the error.
3535
if err != nil {

examples/serviceuser-create-update-delete/main.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ var (
2222
token = "gAAAAA..."
2323
deleteAfterRun = false
2424

25-
// Prefix to be added to User-Agent.
26-
prefix = "iam-go"
25+
// Client User-Agent to be added.
26+
clientUserAgent = "iam-go"
27+
2728
// Name of the Service User to create.
2829
name = "service-user"
30+
2931
// Password of the Service User to create.
3032
password = "Qazwsxedc123"
3133
)
@@ -34,7 +36,7 @@ func main() {
3436
// Create a new IAM client.
3537
iamClient, err := iam.New(
3638
iam.WithAuthOpts(&iam.AuthOpts{KeystoneToken: token}),
37-
iam.WithUserAgentPrefix(prefix),
39+
iam.WithClientUserAgent(clientUserAgent),
3840
)
3941
if err != nil {
4042
fmt.Println(err)

examples/transfer-role/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ func main() {
2121
// KeystoneToken
2222
token := "gAAAAA..."
2323

24-
// Prefix to be added to User-Agent.
25-
prefix := "iam-go"
24+
// Client User-Agent to be added.
25+
clientUserAgent := "iam-go"
2626

2727
// ID of the User to assign role to.
2828
userID := "654321_65432"
2929

3030
// Create a new IAM client.
3131
iamClient, err := iam.New(
3232
iam.WithAuthOpts(&iam.AuthOpts{KeystoneToken: token}),
33-
iam.WithUserAgentPrefix(prefix),
33+
iam.WithClientUserAgent(clientUserAgent),
3434
)
3535
// Handle the error.
3636
if err != nil {

examples/user-create-delete/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ var (
2222
token = "gAAAAA..."
2323
deleteAfterRun = false
2424

25-
// Prefix to be added to User-Agent.
26-
prefix = "iam-go"
25+
// Client User-Agent to be added.
26+
clientUserAgent = "iam-go"
2727

2828
// Email of the User to create.
2929
email = "testmail@example.com"
@@ -33,7 +33,7 @@ func main() {
3333
// Create a new IAM client.
3434
iamClient, err := iam.New(
3535
iam.WithAuthOpts(&iam.AuthOpts{KeystoneToken: token}),
36-
iam.WithUserAgentPrefix(prefix),
36+
iam.WithClientUserAgent(clientUserAgent),
3737
)
3838
// Handle the error.
3939
if err != nil {

iam.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,12 @@ func WithAuthOpts(authOpts *AuthOpts) Option {
9595
}
9696
}
9797

98-
// WithUserAgentPrefix is a functional parameter for Client, used to set a custom prefix.
99-
func WithUserAgentPrefix(prefix string) Option {
98+
// WithClientUserAgent is a functional parameter for Client, used to set a custom User-Agent postfix.
99+
//
100+
// It is highly recommended to use this option!
101+
func WithClientUserAgent(userAgent string) Option {
100102
return func(c *Client) {
101-
c.baseClient.UserAgentPrefix = prefix
103+
c.baseClient.ClientUserAgent = userAgent
102104
}
103105
}
104106

@@ -127,10 +129,9 @@ func New(opts ...Option) (*Client, error) {
127129

128130
appVersion := findModuleVersion()
129131
userAgent := appName + "/" + appVersion
130-
if c.baseClient.UserAgentPrefix == "" {
131-
c.baseClient.UserAgent = userAgent
132-
} else {
133-
c.baseClient.UserAgent = c.baseClient.UserAgentPrefix + " " + userAgent
132+
c.baseClient.UserAgent = userAgent
133+
if c.baseClient.ClientUserAgent != "" {
134+
c.baseClient.UserAgent += " " + c.baseClient.ClientUserAgent
134135
}
135136

136137
c.Users = users.New(c.baseClient)

internal/client/client.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ type BaseClient struct {
3030
// UserAgent represents a User-Agent to be added to all requests.
3131
UserAgent string
3232

33-
// UserAgentPrefix contains custom prefix to be added to userAgent.
34-
UserAgentPrefix string
33+
// ClientUserAgent contains custom User-Agent postfix to be added.
34+
ClientUserAgent string
3535
}
3636

3737
// DoRequest performs the HTTP request with the current Client.HTTPClient and given User-Agent prefix.

0 commit comments

Comments
 (0)