From 33eb8eb945fb8ae7d74f01e7a1d4e096b8dd37be Mon Sep 17 00:00:00 2001 From: Sebastian Winkler Date: Sat, 7 Mar 2020 13:57:46 +0100 Subject: [PATCH] allows specifying request token via GET parameter --- pkg/common.go | 16 +++++----------- pkg/feed.go | 8 +++++++- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pkg/common.go b/pkg/common.go index 81c88b6..5dc2b92 100644 --- a/pkg/common.go +++ b/pkg/common.go @@ -1,8 +1,7 @@ package pkg import ( - "errors" - "net/http" + "context" "time" "github.com/kelseyhightower/envconfig" @@ -51,20 +50,15 @@ func init() { oauthConfig.ClientSecret = cfg.GoogleClientSecret } -func ytServiceViaBasicAuth(r *http.Request) (*youtube.Service, error) { - _, password, ok := r.BasicAuth() - if !ok || password == "" { - return nil, errors.New("please provide refresh token") - } - +func ytServiceFromRefreshToken(ctx context.Context, refreshToken string) (*youtube.Service, error) { oauthToken := &oauth2.Token{ Expiry: time.Now(), TokenType: "Bearer", - RefreshToken: password, + RefreshToken: refreshToken, } return youtube.NewService( - r.Context(), - option.WithTokenSource(oauthConfig.TokenSource(r.Context(), oauthToken)), + ctx, + option.WithTokenSource(oauthConfig.TokenSource(ctx, oauthToken)), ) } diff --git a/pkg/feed.go b/pkg/feed.go index adf69fe..0ef74e2 100644 --- a/pkg/feed.go +++ b/pkg/feed.go @@ -25,7 +25,13 @@ const ( ) func ExportHandler(w http.ResponseWriter, r *http.Request) { - yt, err := ytServiceViaBasicAuth(r) + refreshToken := r.URL.Query().Get("refreshToken") + if refreshToken == "" { + http.Error(w, "please specify refresh token", http.StatusBadRequest) + return + } + + yt, err := ytServiceFromRefreshToken(r.Context(), refreshToken) if err != nil { http.Error(w, err.Error(), http.StatusUnauthorized) return