// This method only parses and processes the attachments, // all else should be set in the post which is passed func parseSlackAttachment(post *model.Post, attachments interface{}) { post.Type = model.POST_SLACK_ATTACHMENT if list, success := attachments.([]interface{}); success { for i, aInt := range list { attachment := aInt.(map[string]interface{}) if aText, ok := attachment["text"].(string); ok { aText = linkWithTextRegex.ReplaceAllString(aText, "[${2}](${1})") attachment["text"] = aText list[i] = attachment } if aText, ok := attachment["pretext"].(string); ok { aText = linkWithTextRegex.ReplaceAllString(aText, "[${2}](${1})") attachment["pretext"] = aText list[i] = attachment } if fVal, ok := attachment["fields"]; ok { if fields, ok := fVal.([]interface{}); ok { // parse attachment field links into Markdown format for j, fInt := range fields { field := fInt.(map[string]interface{}) if fValue, ok := field["value"].(string); ok { fValue = linkWithTextRegex.ReplaceAllString(fValue, "[${2}](${1})") field["value"] = fValue fields[j] = field } } attachment["fields"] = fields list[i] = attachment } } } post.AddProp("attachments", list) } }
func ImportIncomingWebhookPost(post *model.Post, props model.StringInterface) { linkWithTextRegex := regexp.MustCompile(`<([^<\|]+)\|([^>]+)>`) post.Message = linkWithTextRegex.ReplaceAllString(post.Message, "[${2}](${1})") post.AddProp("from_webhook", "true") if _, ok := props["override_username"]; !ok { post.AddProp("override_username", model.DEFAULT_WEBHOOK_USERNAME) } if len(props) > 0 { for key, val := range props { if key == "attachments" { if list, success := val.([]interface{}); success { // parse attachment links into Markdown format for i, aInt := range list { attachment := aInt.(map[string]interface{}) if aText, ok := attachment["text"].(string); ok { aText = linkWithTextRegex.ReplaceAllString(aText, "[${2}](${1})") attachment["text"] = aText list[i] = attachment } if aText, ok := attachment["pretext"].(string); ok { aText = linkWithTextRegex.ReplaceAllString(aText, "[${2}](${1})") attachment["pretext"] = aText list[i] = attachment } if fVal, ok := attachment["fields"]; ok { if fields, ok := fVal.([]interface{}); ok { // parse attachment field links into Markdown format for j, fInt := range fields { field := fInt.(map[string]interface{}) if fValue, ok := field["value"].(string); ok { fValue = linkWithTextRegex.ReplaceAllString(fValue, "[${2}](${1})") field["value"] = fValue fields[j] = field } } attachment["fields"] = fields list[i] = attachment } } } post.AddProp(key, list) } } else if key != "from_webhook" { post.AddProp(key, val) } } } ImportPost(post) }