diff options
author | Charles Birk <charles@cryptolab.net> | 2018-09-17 10:15:28 -0400 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2018-09-17 10:15:28 -0400 |
commit | a755bcdde63b2f27866d49be97bb82e4cdb0e893 (patch) | |
tree | 96d89780b184a17da7b66acd1049a5c40b919301 /model/slack_attachment.go | |
parent | 7226ea7dfbf21860a5eb2fe0997a8363df4a4dd6 (diff) | |
download | chat-a755bcdde63b2f27866d49be97bb82e4cdb0e893.tar.gz chat-a755bcdde63b2f27866d49be97bb82e4cdb0e893.tar.bz2 chat-a755bcdde63b2f27866d49be97bb82e4cdb0e893.zip |
[MM-11860]: Expose slack attachment parsing functions in the model package (#9351)
Refactored parseSlackAttachment functions from https://github.com/mattermost/mattermost-server/blob/master/app/post.go#L312
into model/slack_attachments.go so that plugins have access to them.
Diffstat (limited to 'model/slack_attachment.go')
-rw-r--r-- | model/slack_attachment.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/model/slack_attachment.go b/model/slack_attachment.go index 197d3f0f9..827bf35b3 100644 --- a/model/slack_attachment.go +++ b/model/slack_attachment.go @@ -5,8 +5,11 @@ package model import ( "fmt" + "regexp" ) +var linkWithTextRegex = regexp.MustCompile(`<([^<\|]+)\|([^>]+)>`) + type SlackAttachment struct { Id int64 `json:"id"` Fallback string `json:"fallback"` @@ -57,3 +60,25 @@ func StringifySlackFieldValue(a []*SlackAttachment) []*SlackAttachment { } return nonNilAttachments } + +// This method only parses and processes the attachments, +// all else should be set in the post which is passed +func ParseSlackAttachment(post *Post, attachments []*SlackAttachment) { + post.Type = POST_SLACK_ATTACHMENT + + for _, attachment := range attachments { + attachment.Text = ParseSlackLinksToMarkdown(attachment.Text) + attachment.Pretext = ParseSlackLinksToMarkdown(attachment.Pretext) + + for _, field := range attachment.Fields { + if value, ok := field.Value.(string); ok { + field.Value = ParseSlackLinksToMarkdown(value) + } + } + } + post.AddProp("attachments", attachments) +} + +func ParseSlackLinksToMarkdown(text string) string { + return linkWithTextRegex.ReplaceAllString(text, "[${2}](${1})") +} |