Skip to content

Commit 83e325d

Browse files
committed
Avoid discarding data
Uses ``goth.User.RawData`` map to store the response.
1 parent ff63e43 commit 83e325d

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

providers/discord/discord.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
package discord
44

55
import (
6+
"bytes"
67
"encoding/json"
78
"github.com/markbates/goth"
89
"golang.org/x/oauth2"
910
"io"
11+
"io/ioutil"
1012

1113
"net/http"
1214
)
@@ -103,7 +105,20 @@ func (p *Provider) FetchUser(session goth.Session) (goth.User, error) {
103105
}
104106
defer resp.Body.Close()
105107

106-
err = userFromReader(resp.Body, &user)
108+
bits, err := ioutil.ReadAll(resp.Body)
109+
if err != nil {
110+
return user, err
111+
}
112+
113+
err = json.NewDecoder(bytes.NewReader(bits)).Decode(&user.RawData)
114+
if err != nil {
115+
return user, err
116+
}
117+
118+
err = userFromReader(bytes.NewReader(bits), &user)
119+
if err != nil {
120+
return user, err
121+
}
107122

108123
return user, err
109124
}
@@ -113,8 +128,8 @@ func userFromReader(r io.Reader, user *goth.User) error {
113128
Name string `json:"username"`
114129
Email string `json:"email"`
115130
AvatarID string `json:"avatar"`
116-
MFAEnabled bool `json: "mfa_enabled"`
117-
Discriminator string `json: "discriminator"`
131+
MFAEnabled bool `json:"mfa_enabled"`
132+
Discriminator string `json:"discriminator"`
118133
Verified bool `json:"verified"`
119134
ID string `json:"id"`
120135
}{}

0 commit comments

Comments
 (0)