func CreateUser(ur types.UserRequest) (types.CreateUserResponse, error) { var err error var u types.User var userByEmail types.UserByEmail var response types.CreateUserResponse err = nil if !ur.IsAnonymous { userByEmail, err = GetUserByEmail(ur.Email) } if ur.IsAnonymous || (!ur.IsAnonymous && err != nil && err.Error() == "not found") { err = nil var username string wordnikResponse, err := utilsservice.GenerateRandomUsername() if err != nil { username = "******" err = nil } else if len(wordnikResponse) >= 2 { username = fmt.Sprintf("%v %v", wordnikResponse[0].Word, wordnikResponse[1].Word) } else { username = "******" } u.UserId = uuid.NewRandom() u.Username = username u.Timestamp = int64(time.Now().UTC().Unix()) u.DeviceType = ur.DeviceType u.Email = ur.Email u.FacebookAccessToken = ur.FacebookAccessToken u.GenderPreference = ur.GenderPreference u.GoogleAccessToken = ur.GoogleAccessToken u.IsAnonymous = ur.IsAnonymous u.IsTest = false u.Password = ur.Password u.PushToken = ur.PushToken u.TwitterAccessToken = ur.TwitterAccessToken response, err = userRepo.CreateUser(u) } else if userByEmail.Email != "" { err = errors.New("email already registered") } return response, err }