diff options
author | George Goldberg <george@gberg.me> | 2016-12-22 18:21:05 +0000 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2016-12-22 10:21:05 -0800 |
commit | 53847af2c4e84e6dc81b12fb6481cb8dfbf701b9 (patch) | |
tree | 25ab583993593e17b06c20429d46714ff6a50b95 /api/channel.go | |
parent | b79b2b2a53935cd883312c1158918291a926bacd (diff) | |
download | chat-53847af2c4e84e6dc81b12fb6481cb8dfbf701b9.tar.gz chat-53847af2c4e84e6dc81b12fb6481cb8dfbf701b9.tar.bz2 chat-53847af2c4e84e6dc81b12fb6481cb8dfbf701b9.zip |
API for getting channel members by IDs. (#4877)
Diffstat (limited to 'api/channel.go')
-rw-r--r-- | api/channel.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/api/channel.go b/api/channel.go index feebf6981..7ccf5e2b6 100644 --- a/api/channel.go +++ b/api/channel.go @@ -39,6 +39,7 @@ func InitChannel() { BaseRoutes.NeedChannel.Handle("/", ApiUserRequired(getChannel)).Methods("GET") BaseRoutes.NeedChannel.Handle("/stats", ApiUserRequired(getChannelStats)).Methods("GET") BaseRoutes.NeedChannel.Handle("/members/{user_id:[A-Za-z0-9]+}", ApiUserRequired(getChannelMember)).Methods("GET") + BaseRoutes.NeedChannel.Handle("/members/ids", ApiUserRequired(getChannelMembersByIds)).Methods("POST") BaseRoutes.NeedChannel.Handle("/join", ApiUserRequired(join)).Methods("POST") BaseRoutes.NeedChannel.Handle("/leave", ApiUserRequired(leave)).Methods("POST") BaseRoutes.NeedChannel.Handle("/delete", ApiUserRequired(deleteChannel)).Methods("POST") @@ -1300,3 +1301,27 @@ func viewChannel(c *Context, w http.ResponseWriter, r *http.Request) { ReturnStatusOK(w) } + +func getChannelMembersByIds(c *Context, w http.ResponseWriter, r *http.Request) { + params := mux.Vars(r) + channelId := params["channel_id"] + + userIds := model.ArrayFromJson(r.Body) + if len(userIds) == 0 { + c.SetInvalidParam("getChannelMembersByIds", "user_ids") + return + } + + if !HasPermissionToChannelContext(c, channelId, model.PERMISSION_READ_CHANNEL) { + return + } + + if result := <-Srv.Store.Channel().GetMembersByIds(channelId, userIds); result.Err != nil { + c.Err = result.Err + return + } else { + members := result.Data.(model.ChannelMembers) + w.Write([]byte(members.ToJson())) + return + } +} |