From 7c7e1e5e1c9068d55bc3b6d6fb794bffb47d488d Mon Sep 17 00:00:00 2001 From: Andre Medeiros Date: Mon, 28 Mar 2022 17:33:01 -0400 Subject: [PATCH] More proper types --- internal/api/accounts.go | 4 ++-- internal/reddit/types.go | 6 ++++-- internal/reddit/types_test.go | 1 + internal/worker/notifications.go | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/api/accounts.go b/internal/api/accounts.go index 3c381c3..95237cf 100644 --- a/internal/api/accounts.go +++ b/internal/api/accounts.go @@ -150,7 +150,7 @@ func (a *api) upsertAccountsHandler(w http.ResponseWriter, r *http.Request) { } // Reset expiration timer - acc.TokenExpiresAt = time.Now().Add(1 * time.Hour) + acc.TokenExpiresAt = time.Now().Add(tokens.Expiry) acc.RefreshToken = tokens.RefreshToken acc.AccessToken = tokens.AccessToken @@ -215,7 +215,7 @@ func (a *api) upsertAccountHandler(w http.ResponseWriter, r *http.Request) { } // Reset expiration timer - acct.TokenExpiresAt = time.Now().Add(1 * time.Hour) + acct.TokenExpiresAt = time.Now().Add(tokens.Expiry) acct.RefreshToken = tokens.RefreshToken acct.AccessToken = tokens.AccessToken diff --git a/internal/reddit/types.go b/internal/reddit/types.go index 5efe4d1..f21b182 100644 --- a/internal/reddit/types.go +++ b/internal/reddit/types.go @@ -30,8 +30,9 @@ func NewError(val *fastjson.Value, status int) *Error { } type RefreshTokenResponse struct { - AccessToken string `json:"access_token"` - RefreshToken string `json:"refresh_token"` + AccessToken string `json:"access_token"` + RefreshToken string `json:"refresh_token"` + Expiry time.Duration `json:"expires_in"` } func NewRefreshTokenResponse(val *fastjson.Value) interface{} { @@ -39,6 +40,7 @@ func NewRefreshTokenResponse(val *fastjson.Value) interface{} { rtr.AccessToken = string(val.GetStringBytes("access_token")) rtr.RefreshToken = string(val.GetStringBytes("refresh_token")) + rtr.Expiry = time.Duration(val.GetInt("expires_in")) * time.Second return rtr } diff --git a/internal/reddit/types_test.go b/internal/reddit/types_test.go index ea7d0fd..e7b2ead 100644 --- a/internal/reddit/types_test.go +++ b/internal/reddit/types_test.go @@ -41,6 +41,7 @@ func TestRefreshTokenResponseParsing(t *testing.T) { assert.Equal(t, "***REMOVED***", rtr.AccessToken) assert.Equal(t, "***REMOVED***", rtr.RefreshToken) + assert.Equal(t, 1*time.Hour, rtr.Expiry) } func TestListingResponseParsing(t *testing.T) { diff --git a/internal/worker/notifications.go b/internal/worker/notifications.go index 62e2a33..e1a4838 100644 --- a/internal/worker/notifications.go +++ b/internal/worker/notifications.go @@ -215,7 +215,7 @@ func (nc *notificationsConsumer) Consume(delivery rmq.Delivery) { // Update account account.AccessToken = tokens.AccessToken account.RefreshToken = tokens.RefreshToken - account.TokenExpiresAt = now.Add(3600 * time.Second) + account.TokenExpiresAt = now.Add(tokens.Expiry) // Refresh client rac = nc.reddit.NewAuthenticatedClient(account.AccountID, tokens.RefreshToken, tokens.AccessToken)