summaryrefslogtreecommitdiffstats
path: root/bridge
diff options
context:
space:
mode:
authorWim <wim@42.be>2019-01-06 22:25:19 +0100
committerGitHub <noreply@github.com>2019-01-06 22:25:19 +0100
commit04567c765e92ad60c685c1b2fe7e77c46e065645 (patch)
tree34a587a6545c8e71e991e2a1551885faa0075738 /bridge
parent048158ad6db08cd714f39467fc0066ce41cfe6c5 (diff)
downloadmatterbridge-msglm-04567c765e92ad60c685c1b2fe7e77c46e065645.tar.gz
matterbridge-msglm-04567c765e92ad60c685c1b2fe7e77c46e065645.tar.bz2
matterbridge-msglm-04567c765e92ad60c685c1b2fe7e77c46e065645.zip
Add support for markdown to HTML conversion (matrix). Closes #663 (#670)
This uses our own gomatrix lib with the SendHTML function which adds HTML to formatted_body in matrix. golang-commonmark is used to convert markdown into valid HTML.
Diffstat (limited to 'bridge')
-rw-r--r--bridge/helper/helper.go6
-rw-r--r--bridge/matrix/matrix.go5
2 files changed, 9 insertions, 2 deletions
diff --git a/bridge/helper/helper.go b/bridge/helper/helper.go
index d9acb3d5..12a587f0 100644
--- a/bridge/helper/helper.go
+++ b/bridge/helper/helper.go
@@ -12,6 +12,7 @@ import (
"github.com/42wim/matterbridge/bridge/config"
"github.com/sirupsen/logrus"
+ "gitlab.com/golang-commonmark/markdown"
)
func DownloadFile(url string) (*[]byte, error) {
@@ -151,3 +152,8 @@ func ClipMessage(text string, length int) string {
}
return text
}
+
+func ParseMarkdown(input string) string {
+ md := markdown.New(markdown.XHTMLOutput(true), markdown.Breaks(true))
+ return (md.RenderToString([]byte(input)))
+}
diff --git a/bridge/matrix/matrix.go b/bridge/matrix/matrix.go
index 6ac41d53..12f50e8d 100644
--- a/bridge/matrix/matrix.go
+++ b/bridge/matrix/matrix.go
@@ -3,6 +3,7 @@ package bmatrix
import (
"bytes"
"fmt"
+ "html"
"mime"
"regexp"
"strings"
@@ -112,8 +113,8 @@ func (b *Bmatrix) Send(msg config.Message) (string, error) {
// Edit message if we have an ID
// matrix has no editing support
- // Post normal message
- resp, err := b.mc.SendText(channel, msg.Username+msg.Text)
+ // Post normal message with HTML support (eg riot.im)
+ resp, err := b.mc.SendHTML(channel, msg.Text, html.EscapeString(msg.Username)+helper.ParseMarkdown(msg.Text))
if err != nil {
return "", err
}