func userFromReader(r io.Reader, user *goth.User) error { u := struct { Country string `json:"country"` DisplayName string `json:"display_name"` Email string `json:"email"` ID string `json:"id"` Images []struct { URL string `json:"url"` } `json:"images"` }{} err := json.NewDecoder(r).Decode(&u) if err != nil { return err } user.Name = u.DisplayName user.Email = u.Email user.UserID = u.ID user.Location = u.Country if len(u.Images) > 0 { user.AvatarURL = u.Images[0].URL } return nil }
// FetchUser will go to Twitter and access basic information about the user. func (p *Provider) FetchUser(session goth.Session) (goth.User, error) { user := goth.User{ Provider: p.Name(), } sess := session.(*Session) response, err := p.consumer.Get( endpointProfile, map[string]string{"include_entities": "false", "skip_status": "true"}, sess.AccessToken) if err != nil { return user, err } defer response.Body.Close() bits, err := ioutil.ReadAll(response.Body) err = json.NewDecoder(bytes.NewReader(bits)).Decode(&user.RawData) if err != nil { return user, err } user.Name = user.RawData["name"].(string) user.NickName = user.RawData["screen_name"].(string) user.Description = user.RawData["description"].(string) user.AvatarURL = user.RawData["profile_image_url"].(string) user.UserID = user.RawData["id_str"].(string) user.Location = user.RawData["location"].(string) user.AccessToken = sess.AccessToken.Token user.AccessTokenSecret = sess.AccessToken.Secret return user, err }
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 int `json:"_id"` }{} err := json.NewDecoder(r).Decode(&u) if err != nil { return err } user.Name = u.Name user.Email = u.Email user.NickName = u.Nickname user.Location = "No location is provided by the Twitch API" user.AvatarURL = u.AvatarURL user.Description = u.Description user.UserID = strconv.Itoa(u.ID) return nil }
func userFromReader(reader io.Reader, user *goth.User) error { u := struct { ID string `json:"id"` Email string `json:"email"` Bio string `json:"bio"` Name string `json:"name"` Link string `json:"link"` Picture struct { Data struct { URL string `json:"url"` } `json:"data"` } `json:"picture"` Location struct { Name string `json:"name"` } `json:"location"` }{} err := json.NewDecoder(reader).Decode(&u) if err != nil { return err } user.Name = u.Name user.NickName = u.Name user.Email = u.Email user.Description = u.Bio user.AvatarURL = u.Picture.Data.URL user.UserID = u.ID user.Location = u.Location.Name return err }
func userFromReader(reader io.Reader, user *goth.User) error { u := struct { ID string `json:"id"` Email string `json:"emailAddress"` FirstName string `json:"firstName"` LastName string `json:"lastName"` Headline string `json:"headline"` PictureURL string `json:"pictureUrl"` Location struct { Name string `json:"name"` } `json:"location"` }{} err := json.NewDecoder(reader).Decode(&u) if err != nil { return err } user.Name = u.FirstName + " " + u.LastName user.NickName = u.FirstName user.Email = u.Email user.Description = u.Headline user.AvatarURL = u.PictureURL user.UserID = u.ID user.Location = u.Location.Name return err }
func userFromReader(reader io.Reader, user *goth.User) error { u := struct { ID int `json:"id"` Email string `json:"email"` Bio string `json:"bio"` Name string `json:"name"` Picture string `json:"avatar_url"` Location string `json:"location"` }{} err := json.NewDecoder(reader).Decode(&u) if err != nil { return err } user.Name = u.Name user.NickName = u.Name user.Email = u.Email user.Description = u.Bio user.AvatarURL = u.Picture user.UserID = strconv.Itoa(u.ID) user.Location = u.Location return err }
func userFromReader(r io.Reader, user *goth.User) error { u := struct { Name string `json:"display_name"` NameDetails struct { NickName string `json:"familiar_name"` } `json:"name_details"` Location string `json:"country"` Email string `json:"email"` }{} err := json.NewDecoder(r).Decode(&u) if err != nil { return err } user.Email = u.Email user.Name = u.Name user.NickName = u.NameDetails.NickName user.UserID = u.Email // Dropbox doesn't provide a separate user ID user.Location = u.Location return nil }
func userFromReader(reader io.Reader, user *goth.User) error { u := struct { Account struct { DropletLimit int `json:"droplet_limit"` Email string `json:"email"` UUID string `json:"uuid"` EmailVerified bool `json:"email_verified"` Status string `json:"status"` StatusMessage string `json:"status_message"` } `json:"account"` }{} err := json.NewDecoder(reader).Decode(&u) if err != nil { return err } user.Email = u.Account.Email user.UserID = u.Account.UUID return err }
// FetchUser will go to LastFM and access basic information about the user. func (p *Provider) FetchUser(session goth.Session) (goth.User, error) { sess := session.(*Session) user := goth.User{ AccessToken: sess.AccessToken, Provider: p.Name(), } u := struct { XMLName xml.Name `xml:"user"` Id string `xml:"id"` Name string `xml:"name"` RealName string `xml:"realname"` Url string `xml:"url"` Country string `xml:"country"` Age string `xml:"age"` Gender string `xml:"gender"` Subscriber string `xml:"subscriber"` PlayCount string `xml:"playcount"` Playlists string `xml:"playlists"` Bootstrap string `xml:"bootstrap"` Registered struct { Unixtime string `xml:"unixtime,attr"` Time string `xml:",chardata"` } `xml:"registered"` Images []struct { Size string `xml:"size,attr"` Url string `xml:",chardata"` } `xml:"image"` }{} login := session.(*Session).Login err := p.request(false, map[string]string{"method": "user.getinfo", "user": login}, &u) if err == nil { user.Name = u.RealName user.NickName = u.Name user.AvatarURL = u.Images[3].Url user.UserID = u.Id user.Location = u.Country } return user, err }