MCPcopy
hub / github.com/pocketbase/pocketbase / FetchAuthUser

Method FetchAuthUser

tools/auth/twitch.go:46–88  ·  view source on GitHub ↗

FetchAuthUser returns an AuthUser instance based the Twitch's user api. API reference: https://dev.twitch.tv/docs/api/reference#get-users

(token *oauth2.Token)

Source from the content-addressed store, hash-verified

44//
45// API reference: https://dev.twitch.tv/docs/api/reference#get-users
46func (p *Twitch) FetchAuthUser(token *oauth2.Token) (*AuthUser, error) {
47 data, err := p.FetchRawUserInfo(token)
48 if err != nil {
49 return nil, err
50 }
51
52 rawUser := map[string]any{}
53 if err := json.Unmarshal(data, &rawUser); err != nil {
54 return nil, err
55 }
56
57 extracted := struct {
58 Data []struct {
59 Id string `json:"id"`
60 Login string `json:"login"`
61 DisplayName string `json:"display_name"`
62 Email string `json:"email"`
63 ProfileImageURL string `json:"profile_image_url"`
64 } `json:"data"`
65 }{}
66 if err := json.Unmarshal(data, &extracted); err != nil {
67 return nil, err
68 }
69
70 if len(extracted.Data) == 0 {
71 return nil, errors.New("failed to fetch AuthUser data")
72 }
73
74 user := &AuthUser{
75 Id: extracted.Data[0].Id,
76 Name: extracted.Data[0].DisplayName,
77 Username: extracted.Data[0].Login,
78 Email: extracted.Data[0].Email,
79 AvatarURL: extracted.Data[0].ProfileImageURL,
80 RawUser: rawUser,
81 AccessToken: token.AccessToken,
82 RefreshToken: token.RefreshToken,
83 }
84
85 user.Expiry, _ = types.ParseDateTime(token.Expiry)
86
87 return user, nil
88}
89
90// FetchRawUserInfo implements Provider.FetchRawUserInfo interface method.
91//

Callers

nothing calls this directly

Calls 2

FetchRawUserInfoMethod · 0.95
ParseDateTimeFunction · 0.92

Tested by

no test coverage detected