diff options
Diffstat (limited to 'matterclient/messages.go')
-rw-r--r-- | matterclient/messages.go | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/matterclient/messages.go b/matterclient/messages.go deleted file mode 100644 index 81c3ecbe..00000000 --- a/matterclient/messages.go +++ /dev/null @@ -1,207 +0,0 @@ -package matterclient - -import ( - "strings" - - "github.com/mattermost/mattermost-server/v5/model" -) - -func (m *MMClient) parseActionPost(rmsg *Message) { - // add post to cache, if it already exists don't relay this again. - // this should fix reposts - if ok, _ := m.lruCache.ContainsOrAdd(digestString(rmsg.Raw.Data["post"].(string)), true); ok && rmsg.Raw.Event != model.WEBSOCKET_EVENT_POST_DELETED { - m.logger.Debugf("message %#v in cache, not processing again", rmsg.Raw.Data["post"].(string)) - rmsg.Text = "" - return - } - data := model.PostFromJson(strings.NewReader(rmsg.Raw.Data["post"].(string))) - // we don't have the user, refresh the userlist - if m.GetUser(data.UserId) == nil { - m.logger.Infof("User '%v' is not known, ignoring message '%#v'", - data.UserId, data) - return - } - rmsg.Username = m.GetUserName(data.UserId) - rmsg.Channel = m.GetChannelName(data.ChannelId) - rmsg.UserID = data.UserId - rmsg.Type = data.Type - teamid, _ := rmsg.Raw.Data["team_id"].(string) - // edit messsages have no team_id for some reason - if teamid == "" { - // we can find the team_id from the channelid - teamid = m.GetChannelTeamId(data.ChannelId) - rmsg.Raw.Data["team_id"] = teamid - } - if teamid != "" { - rmsg.Team = m.GetTeamName(teamid) - } - // direct message - if rmsg.Raw.Data["channel_type"] == "D" { - rmsg.Channel = m.GetUser(data.UserId).Username - } - rmsg.Text = data.Message - rmsg.Post = data -} - -func (m *MMClient) parseMessage(rmsg *Message) { - switch rmsg.Raw.Event { - case model.WEBSOCKET_EVENT_POSTED, model.WEBSOCKET_EVENT_POST_EDITED, model.WEBSOCKET_EVENT_POST_DELETED: - m.parseActionPost(rmsg) - case "user_updated": - user := rmsg.Raw.Data["user"].(map[string]interface{}) - if _, ok := user["id"].(string); ok { - m.UpdateUser(user["id"].(string)) - } - case "group_added": - if err := m.UpdateChannels(); err != nil { - m.logger.Errorf("failed to update channels: %#v", err) - } - /* - case model.ACTION_USER_REMOVED: - m.handleWsActionUserRemoved(&rmsg) - case model.ACTION_USER_ADDED: - m.handleWsActionUserAdded(&rmsg) - */ - } -} - -func (m *MMClient) parseResponse(rmsg model.WebSocketResponse) { - if rmsg.Data != nil { - // ping reply - if rmsg.Data["text"].(string) == "pong" { - m.WsPingChan <- &rmsg - } - } -} - -func (m *MMClient) DeleteMessage(postId string) error { //nolint:golint - _, resp := m.Client.DeletePost(postId) - if resp.Error != nil { - return resp.Error - } - return nil -} - -func (m *MMClient) EditMessage(postId string, text string) (string, error) { //nolint:golint - post := &model.Post{Message: text, Id: postId} - res, resp := m.Client.UpdatePost(postId, post) - if resp.Error != nil { - return "", resp.Error - } - return res.Id, nil -} - -func (m *MMClient) GetFileLinks(filenames []string) []string { - uriScheme := "https://" - if m.NoTLS { - uriScheme = "http://" - } - - var output []string - for _, f := range filenames { - res, resp := m.Client.GetFileLink(f) - if resp.Error != nil { - // public links is probably disabled, create the link ourselves - output = append(output, uriScheme+m.Credentials.Server+model.API_URL_SUFFIX_V4+"/files/"+f) - continue - } - output = append(output, res) - } - return output -} - -func (m *MMClient) GetPosts(channelId string, limit int) *model.PostList { //nolint:golint - res, resp := m.Client.GetPostsForChannel(channelId, 0, limit, "", true) - if resp.Error != nil { - return nil - } - return res -} - -func (m *MMClient) GetPostsSince(channelId string, time int64) *model.PostList { //nolint:golint - res, resp := m.Client.GetPostsSince(channelId, time, true) - if resp.Error != nil { - return nil - } - return res -} - -func (m *MMClient) GetPublicLink(filename string) string { - res, resp := m.Client.GetFileLink(filename) - if resp.Error != nil { - return "" - } - return res -} - -func (m *MMClient) GetPublicLinks(filenames []string) []string { - var output []string - for _, f := range filenames { - res, resp := m.Client.GetFileLink(f) - if resp.Error != nil { - continue - } - output = append(output, res) - } - return output -} - -func (m *MMClient) PostMessage(channelId string, text string, rootId string) (string, error) { //nolint:golint - post := &model.Post{ChannelId: channelId, Message: text, RootId: rootId} - res, resp := m.Client.CreatePost(post) - if resp.Error != nil { - return "", resp.Error - } - return res.Id, nil -} - -func (m *MMClient) PostMessageWithFiles(channelId string, text string, rootId string, fileIds []string) (string, error) { //nolint:golint - post := &model.Post{ChannelId: channelId, Message: text, RootId: rootId, FileIds: fileIds} - res, resp := m.Client.CreatePost(post) - if resp.Error != nil { - return "", resp.Error - } - return res.Id, nil -} - -func (m *MMClient) SearchPosts(query string) *model.PostList { - res, resp := m.Client.SearchPosts(m.Team.Id, query, false) - if resp.Error != nil { - return nil - } - return res -} - -// SendDirectMessage sends a direct message to specified user -func (m *MMClient) SendDirectMessage(toUserId string, msg string, rootId string) { //nolint:golint - m.SendDirectMessageProps(toUserId, msg, rootId, nil) -} - -func (m *MMClient) SendDirectMessageProps(toUserId string, msg string, rootId string, props map[string]interface{}) { //nolint:golint - m.logger.Debugf("SendDirectMessage to %s, msg %s", toUserId, msg) - // create DM channel (only happens on first message) - _, resp := m.Client.CreateDirectChannel(m.User.Id, toUserId) - if resp.Error != nil { - m.logger.Debugf("SendDirectMessage to %#v failed: %s", toUserId, resp.Error) - return - } - channelName := model.GetDMNameFromIds(toUserId, m.User.Id) - - // update our channels - if err := m.UpdateChannels(); err != nil { - m.logger.Errorf("failed to update channels: %#v", err) - } - - // build & send the message - msg = strings.Replace(msg, "\r", "", -1) - post := &model.Post{ChannelId: m.GetChannelId(channelName, m.Team.Id), Message: msg, RootId: rootId, Props: props} - m.Client.CreatePost(post) -} - -func (m *MMClient) UploadFile(data []byte, channelId string, filename string) (string, error) { //nolint:golint - f, resp := m.Client.UploadFile(data, channelId, filename) - if resp.Error != nil { - return "", resp.Error - } - return f.FileInfos[0].Id, nil -} |