summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bridge/matrix/matrix.go41
-rw-r--r--go.mod2
-rw-r--r--go.sum4
-rw-r--r--vendor/github.com/matrix-org/gomatrix/.gitignore (renamed from vendor/github.com/matterbridge/gomatrix/.gitignore)0
-rw-r--r--vendor/github.com/matrix-org/gomatrix/.golangci.yml21
-rw-r--r--vendor/github.com/matrix-org/gomatrix/.travis.yml7
-rw-r--r--vendor/github.com/matrix-org/gomatrix/LICENSE (renamed from vendor/github.com/matterbridge/gomatrix/LICENSE)0
-rw-r--r--vendor/github.com/matrix-org/gomatrix/README.md (renamed from vendor/github.com/matterbridge/gomatrix/README.md)0
-rw-r--r--vendor/github.com/matrix-org/gomatrix/client.go (renamed from vendor/github.com/matterbridge/gomatrix/client.go)104
-rw-r--r--vendor/github.com/matrix-org/gomatrix/events.go (renamed from vendor/github.com/matterbridge/gomatrix/events.go)76
-rw-r--r--vendor/github.com/matrix-org/gomatrix/filter.go (renamed from vendor/github.com/matterbridge/gomatrix/filter.go)0
-rw-r--r--vendor/github.com/matrix-org/gomatrix/go.mod3
-rw-r--r--vendor/github.com/matrix-org/gomatrix/identifier.go69
-rw-r--r--vendor/github.com/matrix-org/gomatrix/requests.go (renamed from vendor/github.com/matterbridge/gomatrix/requests.go)19
-rw-r--r--vendor/github.com/matrix-org/gomatrix/responses.go (renamed from vendor/github.com/matterbridge/gomatrix/responses.go)37
-rw-r--r--vendor/github.com/matrix-org/gomatrix/room.go (renamed from vendor/github.com/matterbridge/gomatrix/room.go)4
-rw-r--r--vendor/github.com/matrix-org/gomatrix/store.go (renamed from vendor/github.com/matterbridge/gomatrix/store.go)0
-rw-r--r--vendor/github.com/matrix-org/gomatrix/sync.go (renamed from vendor/github.com/matterbridge/gomatrix/sync.go)4
-rw-r--r--vendor/github.com/matrix-org/gomatrix/tags.go (renamed from vendor/github.com/matterbridge/gomatrix/tags.go)0
-rw-r--r--vendor/github.com/matrix-org/gomatrix/userids.go (renamed from vendor/github.com/matterbridge/gomatrix/userids.go)0
-rw-r--r--vendor/github.com/matterbridge/gomatrix/.travis.yml9
-rw-r--r--vendor/modules.txt4
22 files changed, 272 insertions, 132 deletions
diff --git a/bridge/matrix/matrix.go b/bridge/matrix/matrix.go
index c2305bd5..ce032542 100644
--- a/bridge/matrix/matrix.go
+++ b/bridge/matrix/matrix.go
@@ -14,7 +14,7 @@ import (
"github.com/42wim/matterbridge/bridge"
"github.com/42wim/matterbridge/bridge/config"
"github.com/42wim/matterbridge/bridge/helper"
- matrix "github.com/matterbridge/gomatrix"
+ matrix "github.com/matrix-org/gomatrix"
)
type Bmatrix struct {
@@ -49,9 +49,10 @@ func (b *Bmatrix) Connect() error {
return err
}
resp, err := b.mc.Login(&matrix.ReqLogin{
- Type: "m.login.password",
- User: b.GetString("Login"),
- Password: b.GetString("Password"),
+ Type: "m.login.password",
+ User: b.GetString("Login"),
+ Password: b.GetString("Password"),
+ Identifier: matrix.NewUserIdentifier(b.GetString("Login")),
})
if err != nil {
return err
@@ -166,7 +167,7 @@ func (b *Bmatrix) Send(msg config.Message) (string, error) {
}
// Post normal message with HTML support (eg riot.im)
- resp, err := b.mc.SendHTML(channel, plainUsername+msg.Text, username+helper.ParseMarkdown(msg.Text))
+ resp, err := b.mc.SendFormattedText(channel, plainUsername+msg.Text, username+helper.ParseMarkdown(msg.Text))
if err != nil {
return "", err
}
@@ -370,13 +371,29 @@ func (b *Bmatrix) handleUploadFile(msg *config.Message, channel string, fi *conf
}
case strings.Contains(mtype, "application"):
b.Log.Debugf("sendFile %s", res.ContentURI)
- _, err = b.mc.SendFile(channel, fi.Name, res.ContentURI, mtype, uint(len(*fi.Data)))
+ _, err = b.mc.SendMessageEvent(channel, "m.room.message", matrix.FileMessage{
+ MsgType: "m.file",
+ Body: fi.Name,
+ URL: res.ContentURI,
+ Info: matrix.FileInfo{
+ Mimetype: mtype,
+ Size: uint(len(*fi.Data)),
+ },
+ })
if err != nil {
b.Log.Errorf("sendFile failed: %#v", err)
}
case strings.Contains(mtype, "audio"):
b.Log.Debugf("sendAudio %s", res.ContentURI)
- _, err = b.mc.SendAudio(channel, fi.Name, res.ContentURI, mtype, uint(len(*fi.Data)))
+ _, err = b.mc.SendMessageEvent(channel, "m.room.message", matrix.AudioMessage{
+ MsgType: "m.audio",
+ Body: fi.Name,
+ URL: res.ContentURI,
+ Info: matrix.AudioInfo{
+ Mimetype: mtype,
+ Size: uint(len(*fi.Data)),
+ },
+ })
if err != nil {
b.Log.Errorf("sendAudio failed: %#v", err)
}
@@ -402,12 +419,18 @@ func (b *Bmatrix) containsAttachment(content map[string]interface{}) bool {
// getAvatarURL returns the avatar URL of the specified sender
func (b *Bmatrix) getAvatarURL(sender string) string {
- mxcURL, err := b.mc.GetSenderAvatarURL(sender)
+ urlPath := b.mc.BuildURL("profile", sender, "avatar_url")
+
+ s := struct {
+ AvatarURL string `json:"avatar_url"`
+ }{}
+
+ err := b.mc.MakeRequest("GET", urlPath, nil, &s)
if err != nil {
b.Log.Errorf("getAvatarURL failed: %s", err)
return ""
}
- url := strings.ReplaceAll(mxcURL, "mxc://", b.GetString("Server")+"/_matrix/media/r0/thumbnail/")
+ url := strings.ReplaceAll(s.AvatarURL, "mxc://", b.GetString("Server")+"/_matrix/media/r0/thumbnail/")
if url != "" {
url += "?width=37&height=37&method=crop"
}
diff --git a/go.mod b/go.mod
index af556d13..bfc4a3ba 100644
--- a/go.mod
+++ b/go.mod
@@ -20,11 +20,11 @@ require (
github.com/keybase/go-keybase-chat-bot v0.0.0-20200505163032-5cacf52379da
github.com/labstack/echo/v4 v4.1.16
github.com/lrstanley/girc v0.0.0-20190801035559-4fc93959e1a7
+ github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd
github.com/matterbridge/Rocket.Chat.Go.SDK v0.0.0-20200411204219-d5c18ce75048
github.com/matterbridge/discordgo v0.21.2-0.20200718144317-01fe5db6c78d
github.com/matterbridge/emoji v2.1.1-0.20191117213217-af507f6b02db+incompatible
github.com/matterbridge/go-xmpp v0.0.0-20200418225040-c8a3a57b4050
- github.com/matterbridge/gomatrix v0.0.0-20200209224845-c2104d7936a6
github.com/matterbridge/gozulipbot v0.0.0-20200820220548-be5824faa913
github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba
github.com/mattermost/mattermost-server/v5 v5.25.2
diff --git a/go.sum b/go.sum
index 389094b9..3e236608 100644
--- a/go.sum
+++ b/go.sum
@@ -344,6 +344,8 @@ github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
github.com/marstr/guid v0.0.0-20170427235115-8bdf7d1a087c/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho=
+github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd h1:xVrqJK3xHREMNjwjljkAUaadalWc0rRbmVuQatzmgwg=
+github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd/go.mod h1:/gBX06Kw0exX1HrwmoBibFA98yBk/jxKpGVeyQbff+s=
github.com/matterbridge/Rocket.Chat.Go.SDK v0.0.0-20200411204219-d5c18ce75048 h1:B9HaistmV+MD8/33BXmZe1zPIn+RImAFVXNNSOrwU2E=
github.com/matterbridge/Rocket.Chat.Go.SDK v0.0.0-20200411204219-d5c18ce75048/go.mod h1:c6MxwqHD+0HvtAJjsHMIdPCiAwGiQwPRPTp69ACMg8A=
github.com/matterbridge/discordgo v0.21.2-0.20200718144317-01fe5db6c78d h1:NBckP4nw7qVspbt7cOZYsrOrEbq7tATdMjSjc1hW63A=
@@ -352,8 +354,6 @@ github.com/matterbridge/emoji v2.1.1-0.20191117213217-af507f6b02db+incompatible
github.com/matterbridge/emoji v2.1.1-0.20191117213217-af507f6b02db+incompatible/go.mod h1:igE6rUAn3jai2wCdsjFHfhUoekjrFthoEjFObKKwSb4=
github.com/matterbridge/go-xmpp v0.0.0-20200418225040-c8a3a57b4050 h1:kWkP1lXpkvtoNL08jkP3XQH/zvDOEXJpdCJd/DlIvMw=
github.com/matterbridge/go-xmpp v0.0.0-20200418225040-c8a3a57b4050/go.mod h1:ECDRehsR9TYTKCAsRS8/wLeOk6UUqDydw47ln7wG41Q=
-github.com/matterbridge/gomatrix v0.0.0-20200209224845-c2104d7936a6 h1:Kl65VJv38HjYFnnwH+MP6Z8hcJT5UHuSpHVU5vW1HH0=
-github.com/matterbridge/gomatrix v0.0.0-20200209224845-c2104d7936a6/go.mod h1:+jWeaaUtXQbBRdKYWfjW6JDDYiI2XXE+3NnTjW5kg8g=
github.com/matterbridge/gozulipbot v0.0.0-20200820220548-be5824faa913 h1:5UGr9fLsvAvhjP6i5XJmd0ZIwYVR2gZCzU1lJZ7wfLY=
github.com/matterbridge/gozulipbot v0.0.0-20200820220548-be5824faa913/go.mod h1:yAjnZ34DuDyPHMPHHjOsTk/FefW4JJjoMMCGt/8uuQA=
github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba h1:XleOY4IjAEIcxAh+IFwT5JT5Ze3RHiYz6m+4ZfZ0rc0=
diff --git a/vendor/github.com/matterbridge/gomatrix/.gitignore b/vendor/github.com/matrix-org/gomatrix/.gitignore
index daf913b1..daf913b1 100644
--- a/vendor/github.com/matterbridge/gomatrix/.gitignore
+++ b/vendor/github.com/matrix-org/gomatrix/.gitignore
diff --git a/vendor/github.com/matrix-org/gomatrix/.golangci.yml b/vendor/github.com/matrix-org/gomatrix/.golangci.yml
new file mode 100644
index 00000000..15eb6ef7
--- /dev/null
+++ b/vendor/github.com/matrix-org/gomatrix/.golangci.yml
@@ -0,0 +1,21 @@
+run:
+ timeout: 5m
+ linters:
+ enable:
+ - vet
+ - vetshadow
+ - typecheck
+ - deadcode
+ - gocyclo
+ - golint
+ - varcheck
+ - structcheck
+ - maligned
+ - ineffassign
+ - misspell
+ - unparam
+ - goimports
+ - goconst
+ - unconvert
+ - errcheck
+ - interfacer
diff --git a/vendor/github.com/matrix-org/gomatrix/.travis.yml b/vendor/github.com/matrix-org/gomatrix/.travis.yml
new file mode 100644
index 00000000..46997ab6
--- /dev/null
+++ b/vendor/github.com/matrix-org/gomatrix/.travis.yml
@@ -0,0 +1,7 @@
+language: go
+go:
+ - 1.13.10
+install:
+ - go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.24.0
+ - go build
+script: ./hooks/pre-commit
diff --git a/vendor/github.com/matterbridge/gomatrix/LICENSE b/vendor/github.com/matrix-org/gomatrix/LICENSE
index 8dada3ed..8dada3ed 100644
--- a/vendor/github.com/matterbridge/gomatrix/LICENSE
+++ b/vendor/github.com/matrix-org/gomatrix/LICENSE
diff --git a/vendor/github.com/matterbridge/gomatrix/README.md b/vendor/github.com/matrix-org/gomatrix/README.md
index ea9109ad..ea9109ad 100644
--- a/vendor/github.com/matterbridge/gomatrix/README.md
+++ b/vendor/github.com/matrix-org/gomatrix/README.md
diff --git a/vendor/github.com/matterbridge/gomatrix/client.go b/vendor/github.com/matrix-org/gomatrix/client.go
index 6dda4bc4..fd77fce0 100644
--- a/vendor/github.com/matterbridge/gomatrix/client.go
+++ b/vendor/github.com/matrix-org/gomatrix/client.go
@@ -55,10 +55,7 @@ func (e HTTPError) Error() string {
// BuildURL builds a URL with the Client's homserver/prefix/access_token set already.
func (cli *Client) BuildURL(urlPath ...string) string {
- ps := []string{cli.Prefix}
- for _, p := range urlPath {
- ps = append(ps, p)
- }
+ ps := append([]string{cli.Prefix}, urlPath...)
return cli.BuildBaseURL(ps...)
}
@@ -357,7 +354,7 @@ func (cli *Client) Login(req *ReqLogin) (resp *RespLogin, err error) {
return
}
-// Logout the current user. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-logout
+// Logout the current user. See http://matrix.org/docs/spec/client_server/r0.6.0.html#post-matrix-client-r0-logout
// This does not clear the credentials from the client instance. See ClearCredentials() instead.
func (cli *Client) Logout() (resp *RespLogout, err error) {
urlPath := cli.BuildURL("logout")
@@ -365,6 +362,14 @@ func (cli *Client) Logout() (resp *RespLogout, err error) {
return
}
+// LogoutAll logs the current user out on all devices. See https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-client-r0-logout-all
+// This does not clear the credentials from the client instance. See ClearCredentails() instead.
+func (cli *Client) LogoutAll() (resp *RespLogoutAll, err error) {
+ urlPath := cli.BuildURL("logout/all")
+ err = cli.MakeRequest("POST", urlPath, nil, &resp)
+ return
+}
+
// Versions returns the list of supported Matrix versions on this homeserver. See http://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-versions
func (cli *Client) Versions() (resp *RespVersions, err error) {
urlPath := cli.BuildBaseURL("_matrix", "client", "versions")
@@ -475,21 +480,6 @@ func (cli *Client) GetAvatarURL() (string, error) {
return s.AvatarURL, nil
}
-// GetAvatarURL gets the user's avatar URL. See http://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-profile-userid-avatar-url
-func (cli *Client) GetSenderAvatarURL(sender string) (string, error) {
- urlPath := cli.BuildURL("profile", sender, "avatar_url")
- s := struct {
- AvatarURL string `json:"avatar_url"`
- }{}
-
- err := cli.MakeRequest("GET", urlPath, nil, &s)
- if err != nil {
- return "", err
- }
-
- return s.AvatarURL, nil
-}
-
// SetAvatarURL sets the user's avatar URL. See http://matrix.org/docs/spec/client_server/r0.2.0.html#put-matrix-client-r0-profile-userid-avatar-url
func (cli *Client) SetAvatarURL(url string) error {
urlPath := cli.BuildURL("profile", cli.UserID, "avatar_url")
@@ -504,6 +494,29 @@ func (cli *Client) SetAvatarURL(url string) error {
return nil
}
+// GetStatus returns the status of the user from the specified MXID. See https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-presence-userid-status
+func (cli *Client) GetStatus(mxid string) (resp *RespUserStatus, err error) {
+ urlPath := cli.BuildURL("presence", mxid, "status")
+ err = cli.MakeRequest("GET", urlPath, nil, &resp)
+ return
+}
+
+// GetOwnStatus returns the user's status. See https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-presence-userid-status
+func (cli *Client) GetOwnStatus() (resp *RespUserStatus, err error) {
+ return cli.GetStatus(cli.UserID)
+}
+
+// SetStatus sets the user's status. See https://matrix.org/docs/spec/client_server/r0.6.0#put-matrix-client-r0-presence-userid-status
+func (cli *Client) SetStatus(presence, status string) (err error) {
+ urlPath := cli.BuildURL("presence", cli.UserID, "status")
+ s := struct {
+ Presence string `json:"presence"`
+ StatusMsg string `json:"status_msg"`
+ }{presence, status}
+ err = cli.MakeRequest("PUT", urlPath, &s, nil)
+ return
+}
+
// SendMessageEvent sends a message event into a room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#put-matrix-client-r0-rooms-roomid-send-eventtype-txnid
// contentJSON should be a pointer to something that can be encoded as JSON using json.Marshal.
func (cli *Client) SendMessageEvent(roomID string, eventType string, contentJSON interface{}) (resp *RespSendEvent, err error) {
@@ -525,12 +538,14 @@ func (cli *Client) SendStateEvent(roomID, eventType, stateKey string, contentJSO
// See http://matrix.org/docs/spec/client_server/r0.2.0.html#m-text
func (cli *Client) SendText(roomID, text string) (*RespSendEvent, error) {
return cli.SendMessageEvent(roomID, "m.room.message",
- TextMessage{"m.text", text, "", ""})
+ TextMessage{MsgType: "m.text", Body: text})
}
-func (cli *Client) SendHTML(roomID, textclear, text string) (*RespSendEvent, error) {
+// SendFormattedText sends an m.room.message event into the given room with a msgtype of m.text, supports a subset of HTML for formatting.
+// See https://matrix.org/docs/spec/client_server/r0.6.0#m-text
+func (cli *Client) SendFormattedText(roomID, text, formattedText string) (*RespSendEvent, error) {
return cli.SendMessageEvent(roomID, "m.room.message",
- TextMessage{"m.text", textclear, "org.matrix.custom.html", text})
+ TextMessage{MsgType: "m.text", Body: text, FormattedBody: formattedText, Format: "org.matrix.custom.html"})
}
// SendImage sends an m.room.message event into the given room with a msgtype of m.image
@@ -555,46 +570,11 @@ func (cli *Client) SendVideo(roomID, body, url string) (*RespSendEvent, error) {
})
}
-// SendAudio sends an m.room.message event into the given room with a msgtype of m.audio
-// See https://matrix.org/docs/spec/client_server/r0.2.0.html#m-audio
-func (cli *Client) SendAudio(roomID, body, url, mimetype string, size uint) (*RespSendEvent, error) {
- return cli.SendMessageEvent(roomID, "m.room.message",
- AudioMessage{
- MsgType: "m.audio",
- Body: body,
- URL: url,
- Info: AudioInfo{
- Size: size,
- Mimetype: mimetype,
- },
- })
-}
-
-// SendFile sends an m.room.message event into the given room with a msgtype of m.file
-// See https://matrix.org/docs/spec/client_server/r0.2.0.html#m-file
-func (cli *Client) SendFile(roomID, body, url, mimetype string, size uint) (*RespSendEvent, error) {
- return cli.SendMessageEvent(roomID, "m.room.message",
- FileMessage{
- MsgType: "m.file",
- Body: body,
- URL: url,
- Info: FileInfo{
- Size: size,
- Mimetype: mimetype,
- },
- })
-}
-
// SendNotice sends an m.room.message event into the given room with a msgtype of m.notice
// See http://matrix.org/docs/spec/client_server/r0.2.0.html#m-notice
func (cli *Client) SendNotice(roomID, text string) (*RespSendEvent, error) {
return cli.SendMessageEvent(roomID, "m.room.message",
- TextMessage{"m.notice", text, "", ""})
-}
-
-func (cli *Client) SendNoticeHTML(roomID, textclear, text string) (*RespSendEvent, error) {
- return cli.SendMessageEvent(roomID, "m.room.message",
- TextMessage{"m.notice", textclear, "org.matrix.custom.html", text})
+ TextMessage{MsgType: "m.notice", Body: text})
}
// RedactEvent redacts the given event. See http://matrix.org/docs/spec/client_server/r0.2.0.html#put-matrix-client-r0-rooms-roomid-redact-eventid-txnid
@@ -605,6 +585,12 @@ func (cli *Client) RedactEvent(roomID, eventID string, req *ReqRedact) (resp *Re
return
}
+// MarkRead marks eventID in roomID as read, signifying the event, and all before it have been read. See https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-client-r0-rooms-roomid-receipt-receipttype-eventid
+func (cli *Client) MarkRead(roomID, eventID string) error {
+ urlPath := cli.BuildURL("rooms", roomID, "receipt", "m.read", eventID)
+ return cli.MakeRequest("POST", urlPath, nil, nil)
+}
+
// CreateRoom creates a new Matrix room. See https://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-createroom
// resp, err := cli.CreateRoom(&gomatrix.ReqCreateRoom{
// Preset: "public_chat",
diff --git a/vendor/github.com/matterbridge/gomatrix/events.go b/vendor/github.com/matrix-org/gomatrix/events.go
index 2ebbedca..cbc70a82 100644
--- a/vendor/github.com/matterbridge/gomatrix/events.go
+++ b/vendor/github.com/matrix-org/gomatrix/events.go
@@ -45,8 +45,8 @@ func (event *Event) MessageType() (msgtype string, ok bool) {
type TextMessage struct {
MsgType string `json:"msgtype"`
Body string `json:"body"`
- Format string `json:"format,omitempty"`
- FormattedBody string `json:"formatted_body,omitempty"`
+ FormattedBody string `json:"formatted_body"`
+ Format string `json:"format"`
}
// ThumbnailInfo contains info about an thumbnail image - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-image
@@ -78,21 +78,6 @@ type VideoInfo struct {
Size uint `json:"size,omitempty"`
}
-// AudioInfo contains info about a file - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-audio
-type AudioInfo struct {
- Mimetype string `json:"mimetype,omitempty"`
- Size uint `json:"size,omitempty"`
- Duration uint `json:"duration,omitempty"`
-}
-
-// FileInfo contains info about a file - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-file
-type FileInfo struct {
- Mimetype string `json:"mimetype,omitempty"`
- ThumbnailInfo ImageInfo `json:"thumbnail_info"`
- ThumbnailURL string `json:"thumbnail_url,omitempty"`
- Size uint `json:"size,omitempty"`
-}
-
// VideoMessage is an m.video - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-video
type VideoMessage struct {
MsgType string `json:"msgtype"`
@@ -109,22 +94,6 @@ type ImageMessage struct {
Info ImageInfo `json:"info"`
}
-// AudioMessage is an m.audio event
-type AudioMessage struct {
- MsgType string `json:"msgtype"`
- Body string `json:"body"`
- URL string `json:"url"`
- Info AudioInfo `json:"info"`
-}
-
-// FileMessage is a m.file event
-type FileMessage struct {
- MsgType string `json:"msgtype"`
- Body string `json:"body"`
- URL string `json:"url"`
- Info FileInfo `json:"info"`
-}
-
// An HTMLMessage is the contents of a Matrix HTML formated message event.
type HTMLMessage struct {
Body string `json:"body"`
@@ -133,6 +102,47 @@ type HTMLMessage struct {
FormattedBody string `json:"formatted_body"`
}
+// FileInfo contains info about an file - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-file
+type FileInfo struct {
+ Mimetype string `json:"mimetype,omitempty"`
+ Size uint `json:"size,omitempty"` //filesize in bytes
+}
+
+// FileMessage is an m.file event - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-file
+type FileMessage struct {
+ MsgType string `json:"msgtype"`
+ Body string `json:"body"`
+ URL string `json:"url"`
+ Filename string `json:"filename"`
+ Info FileInfo `json:"info,omitempty"`
+ ThumbnailURL string `json:"thumbnail_url,omitempty"`
+ ThumbnailInfo ImageInfo `json:"thumbnail_info,omitempty"`
+}
+
+// LocationMessage is an m.location event - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-location
+type LocationMessage struct {
+ MsgType string `json:"msgtype"`
+ Body string `json:"body"`
+ GeoURI string `json:"geo_uri"`
+ ThumbnailURL string `json:"thumbnail_url,omitempty"`
+ ThumbnailInfo ImageInfo `json:"thumbnail_info,omitempty"`
+}
+
+// AudioInfo contains info about an file - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-audio
+type AudioInfo struct {
+ Mimetype string `json:"mimetype,omitempty"`
+ Size uint `json:"size,omitempty"` //filesize in bytes
+ Duration uint `json:"duration,omitempty"` //audio duration in ms
+}
+
+// AudioMessage is an m.audio event - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-audio
+type AudioMessage struct {
+ MsgType string `json:"msgtype"`
+ Body string `json:"body"`
+ URL string `json:"url"`
+ Info AudioInfo `json:"info,omitempty"`
+}
+
var htmlRegex = regexp.MustCompile("<[^<]+?>")
// GetHTMLMessage returns an HTMLMessage with the body set to a stripped version of the provided HTML, in addition
diff --git a/vendor/github.com/matterbridge/gomatrix/filter.go b/vendor/github.com/matrix-org/gomatrix/filter.go
index 2a0c37fa..2a0c37fa 100644
--- a/vendor/github.com/matterbridge/gomatrix/filter.go
+++ b/vendor/github.com/matrix-org/gomatrix/filter.go
diff --git a/vendor/github.com/matrix-org/gomatrix/go.mod b/vendor/github.com/matrix-org/gomatrix/go.mod
new file mode 100644
index 00000000..18e69bf1
--- /dev/null
+++ b/vendor/github.com/matrix-org/gomatrix/go.mod
@@ -0,0 +1,3 @@
+module github.com/matrix-org/gomatrix
+
+go 1.12
diff --git a/vendor/github.com/matrix-org/gomatrix/identifier.go b/vendor/github.com/matrix-org/gomatrix/identifier.go
new file mode 100644
index 00000000..4a61d080
--- /dev/null
+++ b/vendor/github.com/matrix-org/gomatrix/identifier.go
@@ -0,0 +1,69 @@
+package gomatrix
+
+// Identifier is the interface for https://matrix.org/docs/spec/client_server/r0.6.0#identifier-types
+type Identifier interface {
+ // Returns the identifier type
+ // https://matrix.org/docs/spec/client_server/r0.6.0#identifier-types
+ Type() string
+}
+
+// UserIdentifier is the Identifier for https://matrix.org/docs/spec/client_server/r0.6.0#matrix-user-id
+type UserIdentifier struct {
+ IDType string `json:"type"` // Set by NewUserIdentifer
+ User string `json:"user"`
+}
+
+// Type implements the Identifier interface
+func (i UserIdentifier) Type() string {
+ return "m.id.user"
+}
+
+// NewUserIdentifier creates a new UserIdentifier with IDType set to "m.id.user"
+func NewUserIdentifier(user string) UserIdentifier {
+ return UserIdentifier{
+ IDType: "m.id.user",
+ User: user,
+ }
+}
+
+// ThirdpartyIdentifier is the Identifier for https://matrix.org/docs/spec/client_server/r0.6.0#third-party-id
+type ThirdpartyIdentifier struct {
+ IDType string `json:"type"` // Set by NewThirdpartyIdentifier
+ Medium string `json:"medium"`
+ Address string `json:"address"`
+}
+
+// Type implements the Identifier interface
+func (i ThirdpartyIdentifier) Type() string {
+ return "m.id.thirdparty"
+}
+
+// NewThirdpartyIdentifier creates a new UserIdentifier with IDType set to "m.id.user"
+func NewThirdpartyIdentifier(medium, address string) ThirdpartyIdentifier {
+ return ThirdpartyIdentifier{
+ IDType: "m.id.thirdparty",
+ Medium: medium,
+ Address: address,
+ }
+}
+
+// PhoneIdentifier is the Identifier for https://matrix.org/docs/spec/client_server/r0.6.0#phone-number
+type PhoneIdentifier struct {
+ IDType string `json:"type"` // Set by NewPhoneIdentifier
+ Country string `json:"country"`
+ Phone string `json:"phone"`
+}
+
+// Type implements the Identifier interface
+func (i PhoneIdentifier) Type() string {
+ return "m.id.phone"
+}
+
+// NewPhoneIdentifier creates a new UserIdentifier with IDType set to "m.id.user"
+func NewPhoneIdentifier(country, phone string) PhoneIdentifier {
+ return PhoneIdentifier{
+ IDType: "m.id.phone",
+ Country: country,
+ Phone: phone,
+ }
+}
diff --git a/vendor/github.com/matterbridge/gomatrix/requests.go b/vendor/github.com/matrix-org/gomatrix/requests.go
index af99a226..31c426d4 100644
--- a/vendor/github.com/matterbridge/gomatrix/requests.go
+++ b/vendor/github.com/matrix-org/gomatrix/requests.go
@@ -10,16 +10,17 @@ type ReqRegister struct {
Auth interface{} `json:"auth,omitempty"`
}
-// ReqLogin is the JSON request for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-login
+// ReqLogin is the JSON request for http://matrix.org/docs/spec/client_server/r0.6.0.html#post-matrix-client-r0-login
type ReqLogin struct {
- Type string `json:"type"`
- Password string `json:"password,omitempty"`
- Medium string `json:"medium,omitempty"`
- User string `json:"user,omitempty"`
- Address string `json:"address,omitempty"`
- Token string `json:"token,omitempty"`
- DeviceID string `json:"device_id,omitempty"`
- InitialDeviceDisplayName string `json:"initial_device_display_name,omitempty"`
+ Type string `json:"type"`
+ Identifier Identifier `json:"identifier,omitempty"`
+ Password string `json:"password,omitempty"`
+ Medium string `json:"medium,omitempty"`
+ User string `json:"user,omitempty"`
+ Address string `json:"address,omitempty"`
+ Token string `json:"token,omitempty"`
+ DeviceID string `json:"device_id,omitempty"`
+ InitialDeviceDisplayName string `json:"initial_device_display_name,omitempty"`
}
// ReqCreateRoom is the JSON request for https://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-createroom
diff --git a/vendor/github.com/matterbridge/gomatrix/responses.go b/vendor/github.com/matrix-org/gomatrix/responses.go
index effb6096..f488e69e 100644
--- a/vendor/github.com/matterbridge/gomatrix/responses.go
+++ b/vendor/github.com/matrix-org/gomatrix/responses.go
@@ -113,6 +113,14 @@ type RespUserDisplayName struct {
DisplayName string `json:"displayname"`
}
+// RespUserStatus is the JSON response for https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-presence-userid-status
+type RespUserStatus struct {
+ Presence string `json:"presence"`
+ StatusMsg string `json:"status_msg"`
+ LastActiveAgo int `json:"last_active_ago"`
+ CurrentlyActive bool `json:"currently_active"`
+}
+
// RespRegister is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-register
type RespRegister struct {
AccessToken string `json:"access_token"`
@@ -122,17 +130,31 @@ type RespRegister struct {
UserID string `json:"user_id"`
}
-// RespLogin is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-login
+// RespLogin is the JSON response for http://matrix.org/docs/spec/client_server/r0.6.0.html#post-matrix-client-r0-login
type RespLogin struct {
- AccessToken string `json:"access_token"`
- DeviceID string `json:"device_id"`
- HomeServer string `json:"home_server"`
- UserID string `json:"user_id"`
+ AccessToken string `json:"access_token"`
+ DeviceID string `json:"device_id"`
+ HomeServer string `json:"home_server"`
+ UserID string `json:"user_id"`
+ WellKnown DiscoveryInformation `json:"well_known"`
+}
+
+// DiscoveryInformation is the JSON Response for https://matrix.org/docs/spec/client_server/r0.6.0#get-well-known-matrix-client and a part of the JSON Response for https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-client-r0-login
+type DiscoveryInformation struct {
+ Homeserver struct {
+ BaseURL string `json:"base_url"`
+ } `json:"m.homeserver"`
+ IdentityServer struct {
+ BaseURL string `json:"base_url"`
+ } `json:"m.identitiy_server"`
}
-// RespLogout is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-logout
+// RespLogout is the JSON response for http://matrix.org/docs/spec/client_server/r0.6.0.html#post-matrix-client-r0-logout
type RespLogout struct{}
+// RespLogoutAll is the JSON response for https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-client-r0-logout-all
+type RespLogoutAll struct{}
+
// RespCreateRoom is the JSON response for https://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-createroom
type RespCreateRoom struct {
RoomID string `json:"room_id"`
@@ -167,6 +189,9 @@ type RespSync struct {
Limited bool `json:"limited"`
PrevBatch string `json:"prev_batch"`
} `json:"timeline"`
+ Ephemeral struct {
+ Events []Event `json:"events"`
+ } `json:"ephemeral"`
} `json:"join"`
Invite map[string]struct {
State struct {
diff --git a/vendor/github.com/matterbridge/gomatrix/room.go b/vendor/github.com/matrix-org/gomatrix/room.go
index d1d22868..364deab2 100644
--- a/vendor/github.com/matterbridge/gomatrix/room.go
+++ b/vendor/github.com/matrix-org/gomatrix/room.go
@@ -31,8 +31,8 @@ func (room Room) UpdateState(event *Event) {
// GetStateEvent returns the state event for the given type/state_key combo, or nil.
func (room Room) GetStateEvent(eventType string, stateKey string) *Event {
- stateEventMap, _ := room.State[eventType]
- event, _ := stateEventMap[stateKey]
+ stateEventMap := room.State[eventType]
+ event := stateEventMap[stateKey]
return event
}
diff --git a/vendor/github.com/matterbridge/gomatrix/store.go b/vendor/github.com/matrix-org/gomatrix/store.go
index 6dc687e5..6dc687e5 100644
--- a/vendor/github.com/matterbridge/gomatrix/store.go
+++ b/vendor/github.com/matrix-org/gomatrix/store.go
diff --git a/vendor/github.com/matterbridge/gomatrix/sync.go b/vendor/github.com/matrix-org/gomatrix/sync.go
index c4bea48c..ac326c3a 100644
--- a/vendor/github.com/matterbridge/gomatrix/sync.go
+++ b/vendor/github.com/matrix-org/gomatrix/sync.go
@@ -64,6 +64,10 @@ func (s *DefaultSyncer) ProcessResponse(res *RespSync, since string) (err error)
event.RoomID = roomID
s.notifyListeners(&event)
}
+ for _, event := range roomData.Ephemeral.Events {
+ event.RoomID = roomID
+ s.notifyListeners(&event)
+ }
}
for roomID, roomData := range res.Rooms.Invite {
room := s.getOrCreateRoom(roomID)
diff --git a/vendor/github.com/matterbridge/gomatrix/tags.go b/vendor/github.com/matrix-org/gomatrix/tags.go
index 956fb11e..956fb11e 100644
--- a/vendor/github.com/matterbridge/gomatrix/tags.go
+++ b/vendor/github.com/matrix-org/gomatrix/tags.go
diff --git a/vendor/github.com/matterbridge/gomatrix/userids.go b/vendor/github.com/matrix-org/gomatrix/userids.go
index 70002c5b..70002c5b 100644
--- a/vendor/github.com/matterbridge/gomatrix/userids.go
+++ b/vendor/github.com/matrix-org/gomatrix/userids.go
diff --git a/vendor/github.com/matterbridge/gomatrix/.travis.yml b/vendor/github.com/matterbridge/gomatrix/.travis.yml
deleted file mode 100644
index 13585d41..00000000
--- a/vendor/github.com/matterbridge/gomatrix/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: go
-go:
- - 1.10.x
-install:
- - go get github.com/golang/lint/golint
- - go get github.com/fzipp/gocyclo
- - go get github.com/client9/misspell/...
- - go get github.com/gordonklaus/ineffassign
-script: ./hooks/pre-commit
diff --git a/vendor/modules.txt b/vendor/modules.txt
index f52c5255..cd3e7000 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -101,6 +101,8 @@ github.com/labstack/gommon/random
github.com/lrstanley/girc
# github.com/magiconair/properties v1.8.1
github.com/magiconair/properties
+# github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd
+github.com/matrix-org/gomatrix
# github.com/matterbridge/Rocket.Chat.Go.SDK v0.0.0-20200411204219-d5c18ce75048
github.com/matterbridge/Rocket.Chat.Go.SDK/models
github.com/matterbridge/Rocket.Chat.Go.SDK/realtime
@@ -111,8 +113,6 @@ github.com/matterbridge/discordgo
github.com/matterbridge/emoji
# github.com/matterbridge/go-xmpp v0.0.0-20200418225040-c8a3a57b4050
github.com/matterbridge/go-xmpp
-# github.com/matterbridge/gomatrix v0.0.0-20200209224845-c2104d7936a6
-github.com/matterbridge/gomatrix
# github.com/matterbridge/gozulipbot v0.0.0-20200820220548-be5824faa913
github.com/matterbridge/gozulipbot
# github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba