Skip to content

Commit f2e5ef9

Browse files
author
Quentin Perez
committed
Add UserAgent
1 parent 09ec924 commit f2e5ef9

File tree

8 files changed

+34
-13
lines changed

8 files changed

+34
-13
lines changed

pkg/api/api.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ type ScalewayAPI struct {
5858
// Password is the authentication password
5959
password string
6060

61+
userAgent string
62+
6163
// Cache is used to quickly resolve identifiers from names
6264
Cache *ScalewayCache
6365

@@ -784,7 +786,7 @@ var FuncMap = template.FuncMap{
784786
}
785787

786788
// NewScalewayAPI creates a ready-to-use ScalewayAPI client
787-
func NewScalewayAPI(apiEndPoint, accountEndPoint, organization, token string) (*ScalewayAPI, error) {
789+
func NewScalewayAPI(apiEndPoint, accountEndPoint, organization, token, userAgent string) (*ScalewayAPI, error) {
788790
cache, err := NewScalewayCache()
789791
if err != nil {
790792
return nil, err
@@ -799,6 +801,7 @@ func NewScalewayAPI(apiEndPoint, accountEndPoint, organization, token string) (*
799801
Cache: cache,
800802
verbose: os.Getenv("SCW_VERBOSE_API") != "",
801803
password: "",
804+
userAgent: userAgent,
802805

803806
// internal
804807
anonuuid: *anonuuid.New(),
@@ -829,6 +832,7 @@ func (s *ScalewayAPI) GetResponse(resource string) (*http.Response, error) {
829832
}
830833
req.Header.Set("X-Auth-Token", s.Token)
831834
req.Header.Set("Content-Type", "application/json")
835+
req.Header.Set("User-Agent", s.userAgent)
832836

833837
curl, err := http2curl.GetCurlCommand(req)
834838
if err != nil {
@@ -857,6 +861,7 @@ func (s *ScalewayAPI) PostResponse(resource string, data interface{}) (*http.Res
857861
}
858862
req.Header.Set("X-Auth-Token", s.Token)
859863
req.Header.Set("Content-Type", "application/json")
864+
req.Header.Set("User-Agent", s.userAgent)
860865

861866
curl, err := http2curl.GetCurlCommand(req)
862867
if err != nil {
@@ -886,6 +891,7 @@ func (s *ScalewayAPI) PatchResponse(resource string, data interface{}) (*http.Re
886891
}
887892
req.Header.Set("X-Auth-Token", s.Token)
888893
req.Header.Set("Content-Type", "application/json")
894+
req.Header.Set("User-Agent", s.userAgent)
889895

890896
curl, err := http2curl.GetCurlCommand(req)
891897
if err != nil {
@@ -915,6 +921,7 @@ func (s *ScalewayAPI) PutResponse(resource string, data interface{}) (*http.Resp
915921
}
916922
req.Header.Set("X-Auth-Token", s.Token)
917923
req.Header.Set("Content-Type", "application/json")
924+
req.Header.Set("User-Agent", s.userAgent)
918925

919926
curl, err := http2curl.GetCurlCommand(req)
920927
if err != nil {
@@ -939,6 +946,7 @@ func (s *ScalewayAPI) DeleteResponse(resource string) (*http.Response, error) {
939946
}
940947
req.Header.Set("X-Auth-Token", s.Token)
941948
req.Header.Set("Content-Type", "application/json")
949+
req.Header.Set("User-Agent", s.userAgent)
942950

943951
curl, err := http2curl.GetCurlCommand(req)
944952
if err != nil {
@@ -1657,6 +1665,7 @@ func (s *ScalewayAPI) PatchUserdata(serverID string, key string, value []byte) e
16571665

16581666
req.Header.Set("X-Auth-Token", s.Token)
16591667
req.Header.Set("Content-Type", "text/plain")
1668+
req.Header.Set("User-Agent", s.userAgent)
16601669

16611670
curl, err := http2curl.GetCurlCommand(req)
16621671
if os.Getenv("SCW_SENSITIVE") != "1" {

pkg/api/api_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ package api
33
import (
44
"testing"
55

6+
"github.com/scaleway/scaleway-cli/pkg/scwversion"
67
. "github.com/smartystreets/goconvey/convey"
78
)
89

910
func TestNewScalewayAPI(t *testing.T) {
1011
Convey("Testing NewScalewayAPI()", t, func() {
11-
api, err := NewScalewayAPI("http://api-endpoint.com", "http://account-endpoint.com", "my-organization", "my-token")
12+
api, err := NewScalewayAPI("http://api-endpoint.com", "http://account-endpoint.com", "my-organization", "my-token", scwversion.UserAgent())
1213
So(err, ShouldBeNil)
1314
So(api, ShouldNotBeNil)
1415
So(api.ComputeAPI, ShouldEqual, "http://api-endpoint.com")

pkg/cli/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ func getScalewayAPI() (*api.ScalewayAPI, error) {
146146
if err != nil {
147147
return nil, err
148148
}
149-
return api.NewScalewayAPI(os.Getenv("scaleway_api_endpoint"), config.AccountAPI, config.Organization, config.Token)
149+
return api.NewScalewayAPI(os.Getenv("scaleway_api_endpoint"), config.AccountAPI, config.Organization, config.Token, scwversion.UserAgent())
150150
}
151151

152152
func initLogging(debug bool, verbose bool, streams *commands.Streams) {

pkg/cli/x_userdata.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"strings"
1111

1212
"github.com/scaleway/scaleway-cli/pkg/api"
13+
"github.com/scaleway/scaleway-cli/pkg/scwversion"
1314
)
1415

1516
var cmdUserdata = &Command{
@@ -46,7 +47,7 @@ func runUserdata(cmd *Command, args []string) error {
4647
var err error
4748
var serverID string
4849
if args[0] == "local" {
49-
API, err = api.NewScalewayAPI("", "", "", "")
50+
API, err = api.NewScalewayAPI("", "", "", "", scwversion.UserAgent())
5051
if err != nil {
5152
return err
5253
}

pkg/commands/command_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import (
1111
"testing"
1212

1313
"github.com/scaleway/scaleway-cli/pkg/api"
14+
"github.com/scaleway/scaleway-cli/pkg/scwversion"
1415
"github.com/stretchr/testify/assert"
1516
)
1617

1718
func testCommandContext() CommandContext {
18-
apiClient, err := api.NewScalewayAPI("https://example.org/", "https://example.org/", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
19+
apiClient, err := api.NewScalewayAPI("https://example.org/", "https://example.org/", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", scwversion.UserAgent())
1920
if err != nil {
2021
panic(err)
2122
}
@@ -36,7 +37,7 @@ func testCommandContext() CommandContext {
3637
}
3738

3839
func ExampleCommandContext() {
39-
apiClient, err := api.NewScalewayAPI("https://example.org/", "https://example.org/", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
40+
apiClient, err := api.NewScalewayAPI("https://example.org/", "https://example.org/", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",scwversion.UserAgent())
4041
if err != nil {
4142
panic(err)
4243
}

pkg/commands/login.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919

2020
"github.com/scaleway/scaleway-cli/pkg/api"
2121
"github.com/scaleway/scaleway-cli/pkg/config"
22+
"github.com/scaleway/scaleway-cli/pkg/scwversion"
2223
)
2324

2425
// LoginArgs are arguments passed to `RunLogin`
@@ -83,7 +84,7 @@ func selectKey(args *LoginArgs) error {
8384
}
8485

8586
func getToken(connect api.ScalewayConnect) (string, error) {
86-
FakeConnection, err := api.NewScalewayAPI(api.ComputeAPI, api.AccountAPI, "", "")
87+
FakeConnection, err := api.NewScalewayAPI(api.ComputeAPI, api.AccountAPI, "", "", scwversion.UserAgent())
8788
if err != nil {
8889
return "", fmt.Errorf("Unable to create a fake ScalewayAPI: %s", err)
8990
}
@@ -113,7 +114,7 @@ func getToken(connect api.ScalewayConnect) (string, error) {
113114
}
114115

115116
func getOrganization(token string, email string) (string, error) {
116-
FakeConnection, err := api.NewScalewayAPI(api.ComputeAPI, api.AccountAPI, "", token)
117+
FakeConnection, err := api.NewScalewayAPI(api.ComputeAPI, api.AccountAPI, "", token, scwversion.UserAgent())
117118
if err != nil {
118119
return "", fmt.Errorf("Unable to create a fake ScalewayAPI: %s", err)
119120
}
@@ -217,7 +218,7 @@ func RunLogin(ctx CommandContext, args LoginArgs) error {
217218
Token: strings.Trim(args.Token, "\n"),
218219
}
219220

220-
apiConnection, err := api.NewScalewayAPI(cfg.ComputeAPI, cfg.AccountAPI, cfg.Organization, cfg.Token)
221+
apiConnection, err := api.NewScalewayAPI(cfg.ComputeAPI, cfg.AccountAPI, cfg.Organization, cfg.Token, scwversion.UserAgent())
221222
if err != nil {
222223
return fmt.Errorf("Unable to create ScalewayAPI: %s", err)
223224
}

pkg/commands/test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ import (
66
"os"
77
"strings"
88

9-
"github.com/scaleway/scaleway-cli/pkg/api"
10-
"github.com/scaleway/scaleway-cli/pkg/config"
119
"github.com/Sirupsen/logrus"
1210
"github.com/moul/anonuuid"
11+
"github.com/scaleway/scaleway-cli/pkg/api"
12+
"github.com/scaleway/scaleway-cli/pkg/config"
13+
"github.com/scaleway/scaleway-cli/pkg/scwversion"
1314
)
1415

1516
func shouldBeAnUUID(actual interface{}, expected ...interface{}) string {
@@ -41,7 +42,7 @@ func RealAPIContext() *CommandContext {
4142
return nil
4243
}
4344

44-
apiClient, err := api.NewScalewayAPI(config.ComputeAPI, config.AccountAPI, config.Organization, config.Token)
45+
apiClient, err := api.NewScalewayAPI(config.ComputeAPI, config.AccountAPI, config.Organization, config.Token, scwversion.UserAgent())
4546
if err != nil {
4647
logrus.Warnf("RealAPIContext: failed to call api.NewScalewayAPI(): %v", err)
4748
return nil

pkg/scwversion/version.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
package scwversion
22

3+
import "fmt"
4+
35
var (
46
// VERSION represents the semver version of the package, it is configured at build time
5-
VERSION string
7+
VERSION = "v1.7.0"
68

79
// GITCOMMIT represents the git commit hash of the package, it is configured at build time
810
GITCOMMIT string
911
)
12+
13+
// UserAgent returns a string to be used by API
14+
func UserAgent() string {
15+
return fmt.Sprintf("scw/%v", VERSION)
16+
}

0 commit comments

Comments
 (0)