summaryrefslogtreecommitdiffstats
path: root/model
diff options
context:
space:
mode:
authorCharles Birk <charles@cryptolab.net>2018-09-17 10:15:28 -0400
committerJoram Wilander <jwawilander@gmail.com>2018-09-17 10:15:28 -0400
commita755bcdde63b2f27866d49be97bb82e4cdb0e893 (patch)
tree96d89780b184a17da7b66acd1049a5c40b919301 /model
parent7226ea7dfbf21860a5eb2fe0997a8363df4a4dd6 (diff)
downloadchat-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')
-rw-r--r--model/slack_attachment.go25
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})")
+}