PLT-4847 Fix formatting of links imported from Slack. (#4674)

This fixes mailto: links built from email addresses posted to Slack as
described in the ticket, but also fixes any other type of URL that has
been auto-linked in the Slack messages.
This commit is contained in:
George Goldberg
2016-11-29 19:07:07 +00:00
committed by Joram Wilander
parent 7f911d1632
commit e7710cf1d2
2 changed files with 35 additions and 0 deletions

View File

@@ -494,6 +494,19 @@ func SlackConvertChannelMentions(channels []SlackChannel, posts map[string][]Sla
return posts
}
func SlackConvertPostsMarkup(posts map[string][]SlackPost) map[string][]SlackPost {
// Convert URLs in Slack's format to Markdown format.
regex := regexp.MustCompile(`<([^|<>]+)\|([^|<>]+)>`)
for channelName, channelPosts := range posts {
for postIdx, post := range channelPosts {
posts[channelName][postIdx].Text = regex.ReplaceAllString(post.Text, "[$2]($1)")
}
}
return posts
}
func SlackImport(fileData multipart.File, fileSize int64, teamID string) (*model.AppError, *bytes.Buffer) {
// Create log file
log := bytes.NewBufferString(utils.T("api.slackimport.slack_import.log"))
@@ -536,6 +549,7 @@ func SlackImport(fileData multipart.File, fileSize int64, teamID string) (*model
posts = SlackConvertUserMentions(users, posts)
posts = SlackConvertChannelMentions(channels, posts)
posts = SlackConvertPostsMarkup(posts)
addedUsers := SlackAddUsers(teamID, users, log)
botUser := SlackAddBotUser(teamID, log)

View File

@@ -217,3 +217,24 @@ func TestSlackSanitiseChannelProperties(t *testing.T) {
t.Fatalf("Unexpected alterations to the channel properties: %v", c2s.Header)
}
}
func TestSlackConvertPostsMarkup(t *testing.T) {
input := make(map[string][]SlackPost)
input["test"] = []SlackPost{
{
Text: "This message contains a link to <https://google.com|Google>.",
},
{
Text: "This message contains a mailto link to <mailto:me@example.com|me@example.com> in it.",
},
}
output := SlackConvertPostsMarkup(input)
if output["test"][0].Text != "This message contains a link to [Google](https://google.com)." {
t.Fatalf("Unexpected message after markup translation: %v", output["test"][0].Text)
}
if output["test"][1].Text != "This message contains a mailto link to [me@example.com](mailto:me@example.com) in it." {
t.Fatalf("Unexpected message after markup translation: %v", output["test"][0].Text)
}
}