// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. // See License.txt for license information. package model import ( "encoding/json" "io" "strings" ) const ( USER_AUTH_SERVICE_GOOGLE = "google" ) type GoogleUser struct { Id string `json:"id"` Nickname string `json:"nickname"` DisplayName string `json:"displayName"` Emails []map[string]string `json:"emails"` Names map[string]string `json:"name"` } func UserFromGoogleUser(gu *GoogleUser) *User { user := &User{} if len(gu.Nickname) > 0 { user.Username = gu.Nickname } else { user.Username = strings.ToLower(strings.Replace(gu.DisplayName, " ", "", -1)) } user.FirstName = gu.Names["givenName"] user.LastName = gu.Names["familyName"] user.Nickname = gu.Nickname for _, e := range gu.Emails { if e["type"] == "account" { user.Email = e["value"] } } user.AuthData = gu.Id user.AuthService = USER_AUTH_SERVICE_GOOGLE return user } func GoogleUserFromJson(data io.Reader) *GoogleUser { decoder := json.NewDecoder(data) var gu GoogleUser err := decoder.Decode(&gu) if err == nil { return &gu } else { return nil } } func (gu *GoogleUser) GetAuthData() string { return gu.Id }