github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/api4/shared_channel.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package api4 5 6 import ( 7 "encoding/json" 8 "net/http" 9 10 "github.com/masterhung0112/hk_server/v5/model" 11 ) 12 13 func (api *API) InitSharedChannels() { 14 api.BaseRoutes.SharedChannels.Handle("/{team_id:[A-Za-z0-9]+}", api.ApiSessionRequired(getSharedChannels)).Methods("GET") 15 api.BaseRoutes.SharedChannels.Handle("/remote_info/{remote_id:[A-Za-z0-9]+}", api.ApiSessionRequired(getRemoteClusterInfo)).Methods("GET") 16 } 17 18 func getSharedChannels(c *Context, w http.ResponseWriter, r *http.Request) { 19 c.RequireTeamId() 20 if c.Err != nil { 21 return 22 } 23 24 // make sure remote cluster service is enabled. 25 if _, appErr := c.App.GetRemoteClusterService(); appErr != nil { 26 c.Err = appErr 27 return 28 } 29 30 opts := model.SharedChannelFilterOpts{ 31 TeamId: c.Params.TeamId, 32 } 33 34 channels, appErr := c.App.GetSharedChannels(c.Params.Page, c.Params.PerPage, opts) 35 if appErr != nil { 36 c.Err = appErr 37 return 38 } 39 40 b, err := json.Marshal(channels) 41 if err != nil { 42 c.SetJSONEncodingError() 43 return 44 } 45 w.Write(b) 46 } 47 48 func getRemoteClusterInfo(c *Context, w http.ResponseWriter, r *http.Request) { 49 c.RequireRemoteId() 50 if c.Err != nil { 51 return 52 } 53 54 // make sure remote cluster service is enabled. 55 if _, appErr := c.App.GetRemoteClusterService(); appErr != nil { 56 c.Err = appErr 57 return 58 } 59 60 // GetRemoteClusterForUser will only return a remote if the user is a member of at 61 // least one channel shared by the remote. All other cases return error. 62 rc, appErr := c.App.GetRemoteClusterForUser(c.Params.RemoteId, c.AppContext.Session().UserId) 63 if appErr != nil { 64 c.Err = appErr 65 return 66 } 67 68 remoteInfo := rc.ToRemoteClusterInfo() 69 70 b, err := json.Marshal(remoteInfo) 71 if err != nil { 72 c.SetJSONEncodingError() 73 return 74 } 75 w.Write(b) 76 }