From 7152610fd349a8f96ae90560a54e593a765de84c Mon Sep 17 00:00:00 2001 From: Tim Rogers Date: Sat, 2 Jul 2022 22:21:24 +0100 Subject: [PATCH 1/7] Expose the package version on the `Client` (e.g. `"45.2.0") This exposes the current version of the `go-github` package (e.g. `"45.2.0"`) as a field on the `Client` struct. This will allow users of `go-github` to access the current version of the package, for example if they want to construct a custom `User-Agent` header including it. This change means that, before releasing tagging and releasing a new version of the package, this string constant will have to be updated. --- github/github.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/github/github.go b/github/github.go index 08b7db8e55b..9a09819a669 100644 --- a/github/github.go +++ b/github/github.go @@ -28,6 +28,8 @@ import ( ) const ( + packageVersion = "45.2.0" + defaultBaseURL = "https://api.github.com/" uploadBaseURL = "https://uploads.github.com/" userAgent = "go-github" @@ -167,6 +169,8 @@ type Client struct { // User agent used when communicating with the GitHub API. UserAgent string + PackageVersion string + rateMu sync.Mutex rateLimits [categories]Rate // Rate limits for the client as determined by the most recent API calls. @@ -301,7 +305,7 @@ func NewClient(httpClient *http.Client) *Client { baseURL, _ := url.Parse(defaultBaseURL) uploadURL, _ := url.Parse(uploadBaseURL) - c := &Client{client: httpClient, BaseURL: baseURL, UserAgent: userAgent, UploadURL: uploadURL} + c := &Client{client: httpClient, BaseURL: baseURL, PackageVersion: packageVersion, UserAgent: userAgent, UploadURL: uploadURL} c.common.client = c c.Actions = (*ActionsService)(&c.common) c.Activity = (*ActivityService)(&c.common) From 3157af0e1eadb35e960b9ff5f6bc5ef959ea8f5a Mon Sep 17 00:00:00 2001 From: Tim Rogers Date: Sat, 2 Jul 2022 22:24:37 +0100 Subject: [PATCH 2/7] Include the version of the module in the default `User-Agent` request header This updates the default request header sent by the module to include the current version, e.g. `go-github/45.2.0`. This makes it easier for GitHub to track usage of this SDK and how users are upgrading between versions. Users can continue to overwrite this default user agent with their own string by setting the `UserAgent` property on the `Client`. --- github/github.go | 2 +- github/github_test.go | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/github/github.go b/github/github.go index 9a09819a669..3b83bbe03dc 100644 --- a/github/github.go +++ b/github/github.go @@ -32,7 +32,7 @@ const ( defaultBaseURL = "https://api.github.com/" uploadBaseURL = "https://uploads.github.com/" - userAgent = "go-github" + userAgent = "go-github" + "/" + packageVersion headerRateLimit = "X-RateLimit-Limit" headerRateRemaining = "X-RateLimit-Remaining" diff --git a/github/github_test.go b/github/github_test.go index 0a28ced93c6..da42994ab8b 100644 --- a/github/github_test.go +++ b/github/github_test.go @@ -507,10 +507,16 @@ func TestNewRequest(t *testing.T) { t.Errorf("NewRequest(%q) Body is %v, want %v", inBody, got, want) } + userAgent := req.Header.Get("User-Agent") + // test that default user-agent is attached to the request - if got, want := req.Header.Get("User-Agent"), c.UserAgent; got != want { + if got, want := userAgent, c.UserAgent; got != want { t.Errorf("NewRequest() User-Agent is %v, want %v", got, want) } + + if !strings.Contains(userAgent, c.PackageVersion) { + t.Errorf("NewRequest() User-Agent should contain %v, found %v", c.PackageVersion, userAgent) + } } func TestNewRequest_invalidJSON(t *testing.T) { From 75465e1bfa7c677549744ebdf7262794357753ea Mon Sep 17 00:00:00 2001 From: Tim Rogers Date: Sun, 3 Jul 2022 23:00:50 +0100 Subject: [PATCH 3/7] Rename `userAgent` constant to `defaultUserAgent` --- github/github.go | 8 ++++---- github/github_test.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/github/github.go b/github/github.go index 3b83bbe03dc..3e377fadee5 100644 --- a/github/github.go +++ b/github/github.go @@ -30,9 +30,9 @@ import ( const ( packageVersion = "45.2.0" - defaultBaseURL = "https://api.github.com/" - uploadBaseURL = "https://uploads.github.com/" - userAgent = "go-github" + "/" + packageVersion + defaultBaseURL = "https://api.github.com/" + uploadBaseURL = "https://uploads.github.com/" + defaultUserAgent = "go-github" + "/" + packageVersion headerRateLimit = "X-RateLimit-Limit" headerRateRemaining = "X-RateLimit-Remaining" @@ -305,7 +305,7 @@ func NewClient(httpClient *http.Client) *Client { baseURL, _ := url.Parse(defaultBaseURL) uploadURL, _ := url.Parse(uploadBaseURL) - c := &Client{client: httpClient, BaseURL: baseURL, PackageVersion: packageVersion, UserAgent: userAgent, UploadURL: uploadURL} + c := &Client{client: httpClient, BaseURL: baseURL, PackageVersion: packageVersion, UserAgent: defaultUserAgent, UploadURL: uploadURL} c.common.client = c c.Actions = (*ActionsService)(&c.common) c.Activity = (*ActivityService)(&c.common) diff --git a/github/github_test.go b/github/github_test.go index da42994ab8b..18e132a085a 100644 --- a/github/github_test.go +++ b/github/github_test.go @@ -248,7 +248,7 @@ func TestNewClient(t *testing.T) { if got, want := c.BaseURL.String(), defaultBaseURL; got != want { t.Errorf("NewClient BaseURL is %v, want %v", got, want) } - if got, want := c.UserAgent, userAgent; got != want { + if got, want := c.UserAgent, defaultUserAgent; got != want { t.Errorf("NewClient UserAgent is %v, want %v", got, want) } From 8495ae54c8dc7bd52b69314fb95f34035b52e729 Mon Sep 17 00:00:00 2001 From: Tim Rogers Date: Sun, 3 Jul 2022 23:07:03 +0100 Subject: [PATCH 4/7] Export current package version as `CurrentVersion` constant --- github/github.go | 7 +++---- github/github_test.go | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/github/github.go b/github/github.go index 3e377fadee5..16920e413f4 100644 --- a/github/github.go +++ b/github/github.go @@ -28,11 +28,10 @@ import ( ) const ( - packageVersion = "45.2.0" - + CurrentVersion = "45.2.0" defaultBaseURL = "https://api.github.com/" + defaultUserAgent = "go-github" + "/" + CurrentVersion uploadBaseURL = "https://uploads.github.com/" - defaultUserAgent = "go-github" + "/" + packageVersion headerRateLimit = "X-RateLimit-Limit" headerRateRemaining = "X-RateLimit-Remaining" @@ -305,7 +304,7 @@ func NewClient(httpClient *http.Client) *Client { baseURL, _ := url.Parse(defaultBaseURL) uploadURL, _ := url.Parse(uploadBaseURL) - c := &Client{client: httpClient, BaseURL: baseURL, PackageVersion: packageVersion, UserAgent: defaultUserAgent, UploadURL: uploadURL} + c := &Client{client: httpClient, BaseURL: baseURL, PackageVersion: CurrentVersion, UserAgent: defaultUserAgent, UploadURL: uploadURL} c.common.client = c c.Actions = (*ActionsService)(&c.common) c.Activity = (*ActivityService)(&c.common) diff --git a/github/github_test.go b/github/github_test.go index 18e132a085a..6a4be663ca0 100644 --- a/github/github_test.go +++ b/github/github_test.go @@ -514,8 +514,8 @@ func TestNewRequest(t *testing.T) { t.Errorf("NewRequest() User-Agent is %v, want %v", got, want) } - if !strings.Contains(userAgent, c.PackageVersion) { - t.Errorf("NewRequest() User-Agent should contain %v, found %v", c.PackageVersion, userAgent) + if !strings.Contains(userAgent, CurrentVersion) { + t.Errorf("NewRequest() User-Agent should contain %v, found %v", CurrentVersion, userAgent) } } From f65d26ea801d608c2d312ecd4404ab60b38f2e52 Mon Sep 17 00:00:00 2001 From: Tim Rogers Date: Sun, 3 Jul 2022 23:07:39 +0100 Subject: [PATCH 5/7] Drop PackageVersion field from Client struct --- github/github.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/github/github.go b/github/github.go index 16920e413f4..870275ae5c9 100644 --- a/github/github.go +++ b/github/github.go @@ -168,8 +168,6 @@ type Client struct { // User agent used when communicating with the GitHub API. UserAgent string - PackageVersion string - rateMu sync.Mutex rateLimits [categories]Rate // Rate limits for the client as determined by the most recent API calls. @@ -304,7 +302,7 @@ func NewClient(httpClient *http.Client) *Client { baseURL, _ := url.Parse(defaultBaseURL) uploadURL, _ := url.Parse(uploadBaseURL) - c := &Client{client: httpClient, BaseURL: baseURL, PackageVersion: CurrentVersion, UserAgent: defaultUserAgent, UploadURL: uploadURL} + c := &Client{client: httpClient, BaseURL: baseURL, UserAgent: defaultUserAgent, UploadURL: uploadURL} c.common.client = c c.Actions = (*ActionsService)(&c.common) c.Activity = (*ActivityService)(&c.common) From c963102cc6a953739b5a446cf6deefe48391bea6 Mon Sep 17 00:00:00 2001 From: Tim Rogers Date: Mon, 4 Jul 2022 09:30:42 +0100 Subject: [PATCH 6/7] Rename CurrentVersion to Version --- github/github.go | 5 +++-- github/github_test.go | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/github/github.go b/github/github.go index 870275ae5c9..fe346f5ab72 100644 --- a/github/github.go +++ b/github/github.go @@ -28,9 +28,10 @@ import ( ) const ( - CurrentVersion = "45.2.0" + Version = "45.2.0" + defaultBaseURL = "https://api.github.com/" - defaultUserAgent = "go-github" + "/" + CurrentVersion + defaultUserAgent = "go-github" + "/" + Version uploadBaseURL = "https://uploads.github.com/" headerRateLimit = "X-RateLimit-Limit" diff --git a/github/github_test.go b/github/github_test.go index 6a4be663ca0..3fa5b4412a4 100644 --- a/github/github_test.go +++ b/github/github_test.go @@ -514,8 +514,8 @@ func TestNewRequest(t *testing.T) { t.Errorf("NewRequest() User-Agent is %v, want %v", got, want) } - if !strings.Contains(userAgent, CurrentVersion) { - t.Errorf("NewRequest() User-Agent should contain %v, found %v", CurrentVersion, userAgent) + if !strings.Contains(userAgent, Version) { + t.Errorf("NewRequest() User-Agent should contain %v, found %v", Version, userAgent) } } From 7279ad7b00f35f9fe46808c44e541dc5468833e2 Mon Sep 17 00:00:00 2001 From: Tim Rogers Date: Mon, 4 Jul 2022 09:32:04 +0100 Subject: [PATCH 7/7] Add reminder to bump version to CONTRIBUTING.md --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ef94c683a8a..25d455b8f77 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -127,3 +127,5 @@ this][modified-comment]. [git-aliases]: https://github.com/willnorris/dotfiles/blob/d640d010c23b1116bdb3d4dc12088ed26120d87d/git/.gitconfig#L13-L15 [rebase-comment]: https://github.com/google/go-github/pull/277#issuecomment-183035491 [modified-comment]: https://github.com/google/go-github/pull/280#issuecomment-184859046 + +**When creating a release, don't forget to update the `Version` constant in `github.go`.** This is used to send the version in the `User-Agent` header to identify clients to the GitHub API.