From 7411881853d6bc8672e2d00ab7ec992160b3a4a7 Mon Sep 17 00:00:00 2001 From: Mark Hemmings Date: Thu, 19 Nov 2020 19:37:44 +0000 Subject: [PATCH 1/3] Export AccessToken --- transport.go | 13 ++++++++++--- transport_test.go | 6 +++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/transport.go b/transport.go index c37d09e..e88941e 100644 --- a/transport.go +++ b/transport.go @@ -38,11 +38,11 @@ type Transport struct { appsTransport *AppsTransport mu *sync.Mutex // mu protects token - token *accessToken // token is the installation's access token + token *AccessToken // token is the installation's access token } -// accessToken is an installation access token response from GitHub -type accessToken struct { +// AccessToken is an installation access token response from GitHub +type AccessToken struct { Token string `json:"token"` ExpiresAt time.Time `json:"expires_at"` Permissions github.InstallationPermissions `json:"permissions,omitempty"` @@ -189,3 +189,10 @@ func GetReadWriter(i interface{}) (io.ReadWriter, error) { } return buf, nil } + +// SetToken sets the underlying Transport AccessToken. +func (t *Transport) SetToken(tok AccessToken) { + t.mu.Lock() + defer t.mu.Unlock() + t.token = &tok +} diff --git a/transport_test.go b/transport_test.go index 138b907..f953c2d 100644 --- a/transport_test.go +++ b/transport_test.go @@ -58,7 +58,7 @@ func TestNew(t *testing.T) { switch r.RequestURI { case fmt.Sprintf("/app/installations/%d/access_tokens", installationID): // respond with any token to installation transport - js, _ := json.Marshal(accessToken{ + js, _ := json.Marshal(AccessToken{ Token: token, ExpiresAt: time.Now().Add(5 * time.Minute), }) @@ -212,7 +212,7 @@ func TestRefreshTokenWithParameters(t *testing.T) { } // Return acceptable access token. - accessToken := accessToken{ + AccessToken := AccessToken{ Token: "token_string", ExpiresAt: time.Now(), Repositories: []github.Repository{{ @@ -223,7 +223,7 @@ func TestRefreshTokenWithParameters(t *testing.T) { Issues: github.String("read"), }, } - tokenReadWriter, err := GetReadWriter(accessToken) + tokenReadWriter, err := GetReadWriter(AccessToken) if err != nil { return nil, fmt.Errorf("error converting token into io.ReadWriter: %+v", err) } From 5f6e0d756bc43385fb253d017212d65fb2119445 Mon Sep 17 00:00:00 2001 From: Mark Hemmings Date: Thu, 19 Nov 2020 19:37:59 +0000 Subject: [PATCH 2/3] Fix jwt times --- appsTransport.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appsTransport.go b/appsTransport.go index 4848760..be59c84 100644 --- a/appsTransport.go +++ b/appsTransport.go @@ -65,8 +65,8 @@ func NewAppsTransportFromPrivateKey(tr http.RoundTripper, appID int64, key *rsa. // RoundTrip implements http.RoundTripper interface. func (t *AppsTransport) RoundTrip(req *http.Request) (*http.Response, error) { claims := &jwt.StandardClaims{ - IssuedAt: time.Now().Unix(), - ExpiresAt: time.Now().Add(time.Minute).Unix(), + IssuedAt: jwt.Now(), + ExpiresAt: jwt.At(time.Now().Add(time.Minute)), Issuer: strconv.FormatInt(t.appID, 10), } bearer := jwt.NewWithClaims(jwt.SigningMethodRS256, claims) From e905fe55b85b052fa4b2b54bcf74c1a729550d96 Mon Sep 17 00:00:00 2001 From: Mark Hemmings Date: Thu, 19 Nov 2020 19:41:50 +0000 Subject: [PATCH 3/3] Correct naming --- transport_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/transport_test.go b/transport_test.go index f953c2d..5c443f6 100644 --- a/transport_test.go +++ b/transport_test.go @@ -212,7 +212,7 @@ func TestRefreshTokenWithParameters(t *testing.T) { } // Return acceptable access token. - AccessToken := AccessToken{ + accessToken := AccessToken{ Token: "token_string", ExpiresAt: time.Now(), Repositories: []github.Repository{{ @@ -223,7 +223,7 @@ func TestRefreshTokenWithParameters(t *testing.T) { Issues: github.String("read"), }, } - tokenReadWriter, err := GetReadWriter(AccessToken) + tokenReadWriter, err := GetReadWriter(accessToken) if err != nil { return nil, fmt.Errorf("error converting token into io.ReadWriter: %+v", err) }