From 7ff2aef7facdeb025a1651ef411fceb3d81932c1 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Fri, 3 Feb 2017 15:17:34 -0500 Subject: Implement GET /users endpoint for APIv4 (#5277) --- app/user.go | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 125 insertions(+), 9 deletions(-) (limited to 'app/user.go') diff --git a/app/user.go b/app/user.go index f9137b1e9..bc809cfaa 100644 --- a/app/user.go +++ b/app/user.go @@ -377,44 +377,160 @@ func GetUserForLogin(loginId string, onlyLdap bool) (*model.User, *model.AppErro } } -func GetUsers(offset int, limit int) (map[string]*model.User, *model.AppError) { +func GetUsers(offset int, limit int) ([]*model.User, *model.AppError) { if result := <-Srv.Store.User().GetAllProfiles(offset, limit); result.Err != nil { return nil, result.Err } else { - return result.Data.(map[string]*model.User), nil + return result.Data.([]*model.User), nil + } +} + +func GetUsersMap(page int, perPage int, asAdmin bool) (map[string]*model.User, *model.AppError) { + users, err := GetUsers(page*perPage, perPage) + if err != nil { + return nil, err + } + + userMap := make(map[string]*model.User, len(users)) + + for _, user := range users { + SanitizeProfile(user, asAdmin) + userMap[user.Id] = user } + + return userMap, nil +} + +func GetUsersPage(page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) { + users, err := GetUsers(page*perPage, perPage) + if err != nil { + return nil, err + } + + for _, user := range users { + SanitizeProfile(user, asAdmin) + } + + return users, nil } func GetUsersEtag() string { return (<-Srv.Store.User().GetEtagForAllProfiles()).Data.(string) } -func GetUsersInTeam(teamId string, offset int, limit int) (map[string]*model.User, *model.AppError) { +func GetUsersInTeam(teamId string, offset int, limit int) ([]*model.User, *model.AppError) { if result := <-Srv.Store.User().GetProfiles(teamId, offset, limit); result.Err != nil { return nil, result.Err } else { - return result.Data.(map[string]*model.User), nil + return result.Data.([]*model.User), nil + } +} + +func GetUsersInTeamMap(teamId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) { + users, err := GetUsersInTeam(teamId, offset, limit) + if err != nil { + return nil, err + } + + userMap := make(map[string]*model.User, len(users)) + + for _, user := range users { + SanitizeProfile(user, asAdmin) + userMap[user.Id] = user } + + return userMap, nil +} + +func GetUsersInTeamPage(teamId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) { + users, err := GetUsersInTeam(teamId, page*perPage, perPage) + if err != nil { + return nil, err + } + + for _, user := range users { + SanitizeProfile(user, asAdmin) + } + + return users, nil } func GetUsersInTeamEtag(teamId string) string { return (<-Srv.Store.User().GetEtagForProfiles(teamId)).Data.(string) } -func GetUsersInChannel(channelId string, offset int, limit int) (map[string]*model.User, *model.AppError) { - if result := <-Srv.Store.User().GetProfilesInChannel(channelId, offset, limit, false); result.Err != nil { +func GetUsersInChannel(channelId string, offset int, limit int) ([]*model.User, *model.AppError) { + if result := <-Srv.Store.User().GetProfilesInChannel(channelId, offset, limit); result.Err != nil { return nil, result.Err } else { - return result.Data.(map[string]*model.User), nil + return result.Data.([]*model.User), nil + } +} + +func GetUsersInChannelMap(channelId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) { + users, err := GetUsersInChannel(channelId, offset, limit) + if err != nil { + return nil, err + } + + userMap := make(map[string]*model.User, len(users)) + + for _, user := range users { + SanitizeProfile(user, asAdmin) + userMap[user.Id] = user } + + return userMap, nil +} + +func GetUsersInChannelPage(channelId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) { + users, err := GetUsersInChannel(channelId, page*perPage, perPage) + if err != nil { + return nil, err + } + + for _, user := range users { + SanitizeProfile(user, asAdmin) + } + + return users, nil } -func GetUsersNotInChannel(teamId string, channelId string, offset int, limit int) (map[string]*model.User, *model.AppError) { +func GetUsersNotInChannel(teamId string, channelId string, offset int, limit int) ([]*model.User, *model.AppError) { if result := <-Srv.Store.User().GetProfilesNotInChannel(teamId, channelId, offset, limit); result.Err != nil { return nil, result.Err } else { - return result.Data.(map[string]*model.User), nil + return result.Data.([]*model.User), nil + } +} + +func GetUsersNotInChannelMap(teamId string, channelId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) { + users, err := GetUsersNotInChannel(teamId, channelId, offset, limit) + if err != nil { + return nil, err + } + + userMap := make(map[string]*model.User, len(users)) + + for _, user := range users { + SanitizeProfile(user, asAdmin) + userMap[user.Id] = user } + + return userMap, nil +} + +func GetUsersNotInChannelPage(teamId string, channelId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) { + users, err := GetUsersNotInChannel(teamId, channelId, page*perPage, perPage) + if err != nil { + return nil, err + } + + for _, user := range users { + SanitizeProfile(user, asAdmin) + } + + return users, nil } func GetUsersByIds(userIds []string, asAdmin bool) ([]*model.User, *model.AppError) { -- cgit v1.2.3-1-g7c22