From b8a528c0ea5a5aa6393f353a152c2aec8be83d4e Mon Sep 17 00:00:00 2001 From: Martin Raymond Date: Thu, 23 Jan 2020 20:41:42 -0800 Subject: [PATCH] updating twitch api endpoints --- providers/twitch/twitch.go | 39 +++++++++++++++++++-------------- providers/twitch/twitch_test.go | 6 ++--- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/providers/twitch/twitch.go b/providers/twitch/twitch.go index 7250dc17e..204281e73 100644 --- a/providers/twitch/twitch.go +++ b/providers/twitch/twitch.go @@ -14,9 +14,9 @@ import ( ) const ( - authURL string = "https://api.twitch.tv/kraken/oauth2/authorize" - tokenURL string = "https://api.twitch.tv/kraken/oauth2/token" - userEndpoint string = "https://api.twitch.tv/kraken/user" + authURL string = "https://id.twitch.tv/oauth2/authorize" + tokenURL string = "https://id.twitch.tv/oauth2/token" + userEndpoint string = "https://api.twitch.tv/helix/users" ) const ( @@ -146,8 +146,7 @@ func (p *Provider) FetchUser(session goth.Session) (goth.User, error) { if err != nil { return user, err } - req.Header.Set("Accept", "application/vnd.twitchtv.v5+json") - req.Header.Set("Authorization", "OAuth "+s.AccessToken) + req.Header.Set("Authorization", "Bearer "+s.AccessToken) resp, err := p.Client().Do(req) if err != nil { return user, err @@ -164,12 +163,14 @@ func (p *Provider) FetchUser(session goth.Session) (goth.User, error) { func userFromReader(r io.Reader, user *goth.User) error { u := struct { - Name string `json:"name"` - Email string `json:"email"` - Nickname string `json:"display_name"` - AvatarURL string `json:"logo"` - Description string `json:"bio"` - ID string `json:"_id"` + Data []struct { + ID string `json:"id"` + Login string `json:"login"` + DisplayName string `json:"display_name"` + Description string `json:"description"` + ProfileImageURL string `json:"profile_image_url"` + Email string `json:"email"` + } `json:"data"` }{} err := json.NewDecoder(r).Decode(&u) @@ -177,13 +178,17 @@ func userFromReader(r io.Reader, user *goth.User) error { return err } - user.Name = u.Name - user.Email = u.Email - user.NickName = u.Nickname + if len(u.Data) != 1 { + return fmt.Errorf("user not found in response") + } + + user.Name = u.Data[0].Login + user.Email = u.Data[0].Email + user.NickName = u.Data[0].DisplayName user.Location = "No location is provided by the Twitch API" - user.AvatarURL = u.AvatarURL - user.Description = u.Description - user.UserID = u.ID + user.AvatarURL = u.Data[0].ProfileImageURL + user.Description = u.Data[0].Description + user.UserID = u.Data[0].ID return nil } diff --git a/providers/twitch/twitch_test.go b/providers/twitch/twitch_test.go index e0123f593..73d5bd7e1 100644 --- a/providers/twitch/twitch_test.go +++ b/providers/twitch/twitch_test.go @@ -37,7 +37,7 @@ func Test_BeginAuth(t *testing.T) { session, err := p.BeginAuth("test_state") s := session.(*Session) a.NoError(err) - a.Contains(s.AuthURL, "api.twitch.tv/kraken/oauth2/authorize") + a.Contains(s.AuthURL, "id.twitch.tv/oauth2/authorize") } func Test_SessionFromJSON(t *testing.T) { @@ -45,10 +45,10 @@ func Test_SessionFromJSON(t *testing.T) { a := assert.New(t) p := provider() - session, err := p.UnmarshalSession(`{"AuthURL":"https://api.twitch.tv/kraken/oauth2/authorize", "AccessToken":"1234567890"}`) + session, err := p.UnmarshalSession(`{"AuthURL":"https://id.twitch.tv/oauth2/authorize", "AccessToken":"1234567890"}`) a.NoError(err) s := session.(*Session) - a.Equal(s.AuthURL, "https://api.twitch.tv/kraken/oauth2/authorize") + a.Equal(s.AuthURL, "https://id.twitch.tv/oauth2/authorize") a.Equal(s.AccessToken, "1234567890") }