mirror of
https://github.com/42wim/matterbridge.git
synced 2024-11-24 19:52:03 -08:00
Switch to upstream gomatrix (#1219)
Signed-off-by: Tilo Spannagel <development@tilosp.de>
This commit is contained in:
parent
a0741d99b8
commit
f9928c9e25
@ -14,7 +14,7 @@ import (
|
|||||||
"github.com/42wim/matterbridge/bridge"
|
"github.com/42wim/matterbridge/bridge"
|
||||||
"github.com/42wim/matterbridge/bridge/config"
|
"github.com/42wim/matterbridge/bridge/config"
|
||||||
"github.com/42wim/matterbridge/bridge/helper"
|
"github.com/42wim/matterbridge/bridge/helper"
|
||||||
matrix "github.com/matterbridge/gomatrix"
|
matrix "github.com/matrix-org/gomatrix"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Bmatrix struct {
|
type Bmatrix struct {
|
||||||
@ -52,6 +52,7 @@ func (b *Bmatrix) Connect() error {
|
|||||||
Type: "m.login.password",
|
Type: "m.login.password",
|
||||||
User: b.GetString("Login"),
|
User: b.GetString("Login"),
|
||||||
Password: b.GetString("Password"),
|
Password: b.GetString("Password"),
|
||||||
|
Identifier: matrix.NewUserIdentifier(b.GetString("Login")),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -166,7 +167,7 @@ func (b *Bmatrix) Send(msg config.Message) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Post normal message with HTML support (eg riot.im)
|
// 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 {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
@ -370,13 +371,29 @@ func (b *Bmatrix) handleUploadFile(msg *config.Message, channel string, fi *conf
|
|||||||
}
|
}
|
||||||
case strings.Contains(mtype, "application"):
|
case strings.Contains(mtype, "application"):
|
||||||
b.Log.Debugf("sendFile %s", res.ContentURI)
|
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 {
|
if err != nil {
|
||||||
b.Log.Errorf("sendFile failed: %#v", err)
|
b.Log.Errorf("sendFile failed: %#v", err)
|
||||||
}
|
}
|
||||||
case strings.Contains(mtype, "audio"):
|
case strings.Contains(mtype, "audio"):
|
||||||
b.Log.Debugf("sendAudio %s", res.ContentURI)
|
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 {
|
if err != nil {
|
||||||
b.Log.Errorf("sendAudio failed: %#v", err)
|
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
|
// getAvatarURL returns the avatar URL of the specified sender
|
||||||
func (b *Bmatrix) getAvatarURL(sender string) string {
|
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 {
|
if err != nil {
|
||||||
b.Log.Errorf("getAvatarURL failed: %s", err)
|
b.Log.Errorf("getAvatarURL failed: %s", err)
|
||||||
return ""
|
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 != "" {
|
if url != "" {
|
||||||
url += "?width=37&height=37&method=crop"
|
url += "?width=37&height=37&method=crop"
|
||||||
}
|
}
|
||||||
|
2
go.mod
2
go.mod
@ -20,11 +20,11 @@ require (
|
|||||||
github.com/keybase/go-keybase-chat-bot v0.0.0-20200505163032-5cacf52379da
|
github.com/keybase/go-keybase-chat-bot v0.0.0-20200505163032-5cacf52379da
|
||||||
github.com/labstack/echo/v4 v4.1.16
|
github.com/labstack/echo/v4 v4.1.16
|
||||||
github.com/lrstanley/girc v0.0.0-20190801035559-4fc93959e1a7
|
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/Rocket.Chat.Go.SDK v0.0.0-20200411204219-d5c18ce75048
|
||||||
github.com/matterbridge/discordgo v0.21.2-0.20200718144317-01fe5db6c78d
|
github.com/matterbridge/discordgo v0.21.2-0.20200718144317-01fe5db6c78d
|
||||||
github.com/matterbridge/emoji v2.1.1-0.20191117213217-af507f6b02db+incompatible
|
github.com/matterbridge/emoji v2.1.1-0.20191117213217-af507f6b02db+incompatible
|
||||||
github.com/matterbridge/go-xmpp v0.0.0-20200418225040-c8a3a57b4050
|
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/gozulipbot v0.0.0-20200820220548-be5824faa913
|
||||||
github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba
|
github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba
|
||||||
github.com/mattermost/mattermost-server/v5 v5.25.2
|
github.com/mattermost/mattermost-server/v5 v5.25.2
|
||||||
|
4
go.sum
4
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.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||||
github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
|
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/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 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/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=
|
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/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 h1:kWkP1lXpkvtoNL08jkP3XQH/zvDOEXJpdCJd/DlIvMw=
|
||||||
github.com/matterbridge/go-xmpp v0.0.0-20200418225040-c8a3a57b4050/go.mod h1:ECDRehsR9TYTKCAsRS8/wLeOk6UUqDydw47ln7wG41Q=
|
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 h1:5UGr9fLsvAvhjP6i5XJmd0ZIwYVR2gZCzU1lJZ7wfLY=
|
||||||
github.com/matterbridge/gozulipbot v0.0.0-20200820220548-be5824faa913/go.mod h1:yAjnZ34DuDyPHMPHHjOsTk/FefW4JJjoMMCGt/8uuQA=
|
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=
|
github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba h1:XleOY4IjAEIcxAh+IFwT5JT5Ze3RHiYz6m+4ZfZ0rc0=
|
||||||
|
21
vendor/github.com/matrix-org/gomatrix/.golangci.yml
generated
vendored
Normal file
21
vendor/github.com/matrix-org/gomatrix/.golangci.yml
generated
vendored
Normal file
@ -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
|
7
vendor/github.com/matrix-org/gomatrix/.travis.yml
generated
vendored
Normal file
7
vendor/github.com/matrix-org/gomatrix/.travis.yml
generated
vendored
Normal file
@ -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
|
@ -55,10 +55,7 @@ func (e HTTPError) Error() string {
|
|||||||
|
|
||||||
// BuildURL builds a URL with the Client's homserver/prefix/access_token set already.
|
// BuildURL builds a URL with the Client's homserver/prefix/access_token set already.
|
||||||
func (cli *Client) BuildURL(urlPath ...string) string {
|
func (cli *Client) BuildURL(urlPath ...string) string {
|
||||||
ps := []string{cli.Prefix}
|
ps := append([]string{cli.Prefix}, urlPath...)
|
||||||
for _, p := range urlPath {
|
|
||||||
ps = append(ps, p)
|
|
||||||
}
|
|
||||||
return cli.BuildBaseURL(ps...)
|
return cli.BuildBaseURL(ps...)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,7 +354,7 @@ func (cli *Client) Login(req *ReqLogin) (resp *RespLogin, err error) {
|
|||||||
return
|
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.
|
// This does not clear the credentials from the client instance. See ClearCredentials() instead.
|
||||||
func (cli *Client) Logout() (resp *RespLogout, err error) {
|
func (cli *Client) Logout() (resp *RespLogout, err error) {
|
||||||
urlPath := cli.BuildURL("logout")
|
urlPath := cli.BuildURL("logout")
|
||||||
@ -365,6 +362,14 @@ func (cli *Client) Logout() (resp *RespLogout, err error) {
|
|||||||
return
|
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
|
// 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) {
|
func (cli *Client) Versions() (resp *RespVersions, err error) {
|
||||||
urlPath := cli.BuildBaseURL("_matrix", "client", "versions")
|
urlPath := cli.BuildBaseURL("_matrix", "client", "versions")
|
||||||
@ -475,21 +480,6 @@ func (cli *Client) GetAvatarURL() (string, error) {
|
|||||||
return s.AvatarURL, nil
|
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
|
// 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 {
|
func (cli *Client) SetAvatarURL(url string) error {
|
||||||
urlPath := cli.BuildURL("profile", cli.UserID, "avatar_url")
|
urlPath := cli.BuildURL("profile", cli.UserID, "avatar_url")
|
||||||
@ -504,6 +494,29 @@ func (cli *Client) SetAvatarURL(url string) error {
|
|||||||
return nil
|
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
|
// 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.
|
// 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) {
|
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
|
// See http://matrix.org/docs/spec/client_server/r0.2.0.html#m-text
|
||||||
func (cli *Client) SendText(roomID, text string) (*RespSendEvent, error) {
|
func (cli *Client) SendText(roomID, text string) (*RespSendEvent, error) {
|
||||||
return cli.SendMessageEvent(roomID, "m.room.message",
|
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",
|
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
|
// 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
|
// 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
|
// See http://matrix.org/docs/spec/client_server/r0.2.0.html#m-notice
|
||||||
func (cli *Client) SendNotice(roomID, text string) (*RespSendEvent, error) {
|
func (cli *Client) SendNotice(roomID, text string) (*RespSendEvent, error) {
|
||||||
return cli.SendMessageEvent(roomID, "m.room.message",
|
return cli.SendMessageEvent(roomID, "m.room.message",
|
||||||
TextMessage{"m.notice", text, "", ""})
|
TextMessage{MsgType: "m.notice", Body: 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})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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
|
// 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
|
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
|
// 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{
|
// resp, err := cli.CreateRoom(&gomatrix.ReqCreateRoom{
|
||||||
// Preset: "public_chat",
|
// Preset: "public_chat",
|
@ -45,8 +45,8 @@ func (event *Event) MessageType() (msgtype string, ok bool) {
|
|||||||
type TextMessage struct {
|
type TextMessage struct {
|
||||||
MsgType string `json:"msgtype"`
|
MsgType string `json:"msgtype"`
|
||||||
Body string `json:"body"`
|
Body string `json:"body"`
|
||||||
Format string `json:"format,omitempty"`
|
FormattedBody string `json:"formatted_body"`
|
||||||
FormattedBody string `json:"formatted_body,omitempty"`
|
Format string `json:"format"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ThumbnailInfo contains info about an thumbnail image - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-image
|
// 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"`
|
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
|
// VideoMessage is an m.video - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-video
|
||||||
type VideoMessage struct {
|
type VideoMessage struct {
|
||||||
MsgType string `json:"msgtype"`
|
MsgType string `json:"msgtype"`
|
||||||
@ -109,22 +94,6 @@ type ImageMessage struct {
|
|||||||
Info ImageInfo `json:"info"`
|
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.
|
// An HTMLMessage is the contents of a Matrix HTML formated message event.
|
||||||
type HTMLMessage struct {
|
type HTMLMessage struct {
|
||||||
Body string `json:"body"`
|
Body string `json:"body"`
|
||||||
@ -133,6 +102,47 @@ type HTMLMessage struct {
|
|||||||
FormattedBody string `json:"formatted_body"`
|
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("<[^<]+?>")
|
var htmlRegex = regexp.MustCompile("<[^<]+?>")
|
||||||
|
|
||||||
// GetHTMLMessage returns an HTMLMessage with the body set to a stripped version of the provided HTML, in addition
|
// GetHTMLMessage returns an HTMLMessage with the body set to a stripped version of the provided HTML, in addition
|
3
vendor/github.com/matrix-org/gomatrix/go.mod
generated
vendored
Normal file
3
vendor/github.com/matrix-org/gomatrix/go.mod
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module github.com/matrix-org/gomatrix
|
||||||
|
|
||||||
|
go 1.12
|
69
vendor/github.com/matrix-org/gomatrix/identifier.go
generated
vendored
Normal file
69
vendor/github.com/matrix-org/gomatrix/identifier.go
generated
vendored
Normal file
@ -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,
|
||||||
|
}
|
||||||
|
}
|
@ -10,9 +10,10 @@ type ReqRegister struct {
|
|||||||
Auth interface{} `json:"auth,omitempty"`
|
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 ReqLogin struct {
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
|
Identifier Identifier `json:"identifier,omitempty"`
|
||||||
Password string `json:"password,omitempty"`
|
Password string `json:"password,omitempty"`
|
||||||
Medium string `json:"medium,omitempty"`
|
Medium string `json:"medium,omitempty"`
|
||||||
User string `json:"user,omitempty"`
|
User string `json:"user,omitempty"`
|
@ -113,6 +113,14 @@ type RespUserDisplayName struct {
|
|||||||
DisplayName string `json:"displayname"`
|
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
|
// 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 {
|
type RespRegister struct {
|
||||||
AccessToken string `json:"access_token"`
|
AccessToken string `json:"access_token"`
|
||||||
@ -122,17 +130,31 @@ type RespRegister struct {
|
|||||||
UserID string `json:"user_id"`
|
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 {
|
type RespLogin struct {
|
||||||
AccessToken string `json:"access_token"`
|
AccessToken string `json:"access_token"`
|
||||||
DeviceID string `json:"device_id"`
|
DeviceID string `json:"device_id"`
|
||||||
HomeServer string `json:"home_server"`
|
HomeServer string `json:"home_server"`
|
||||||
UserID string `json:"user_id"`
|
UserID string `json:"user_id"`
|
||||||
|
WellKnown DiscoveryInformation `json:"well_known"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// RespLogout is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-logout
|
// 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.6.0.html#post-matrix-client-r0-logout
|
||||||
type RespLogout struct{}
|
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
|
// 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 {
|
type RespCreateRoom struct {
|
||||||
RoomID string `json:"room_id"`
|
RoomID string `json:"room_id"`
|
||||||
@ -167,6 +189,9 @@ type RespSync struct {
|
|||||||
Limited bool `json:"limited"`
|
Limited bool `json:"limited"`
|
||||||
PrevBatch string `json:"prev_batch"`
|
PrevBatch string `json:"prev_batch"`
|
||||||
} `json:"timeline"`
|
} `json:"timeline"`
|
||||||
|
Ephemeral struct {
|
||||||
|
Events []Event `json:"events"`
|
||||||
|
} `json:"ephemeral"`
|
||||||
} `json:"join"`
|
} `json:"join"`
|
||||||
Invite map[string]struct {
|
Invite map[string]struct {
|
||||||
State struct {
|
State struct {
|
@ -31,8 +31,8 @@ func (room Room) UpdateState(event *Event) {
|
|||||||
|
|
||||||
// GetStateEvent returns the state event for the given type/state_key combo, or nil.
|
// GetStateEvent returns the state event for the given type/state_key combo, or nil.
|
||||||
func (room Room) GetStateEvent(eventType string, stateKey string) *Event {
|
func (room Room) GetStateEvent(eventType string, stateKey string) *Event {
|
||||||
stateEventMap, _ := room.State[eventType]
|
stateEventMap := room.State[eventType]
|
||||||
event, _ := stateEventMap[stateKey]
|
event := stateEventMap[stateKey]
|
||||||
return event
|
return event
|
||||||
}
|
}
|
||||||
|
|
@ -64,6 +64,10 @@ func (s *DefaultSyncer) ProcessResponse(res *RespSync, since string) (err error)
|
|||||||
event.RoomID = roomID
|
event.RoomID = roomID
|
||||||
s.notifyListeners(&event)
|
s.notifyListeners(&event)
|
||||||
}
|
}
|
||||||
|
for _, event := range roomData.Ephemeral.Events {
|
||||||
|
event.RoomID = roomID
|
||||||
|
s.notifyListeners(&event)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for roomID, roomData := range res.Rooms.Invite {
|
for roomID, roomData := range res.Rooms.Invite {
|
||||||
room := s.getOrCreateRoom(roomID)
|
room := s.getOrCreateRoom(roomID)
|
9
vendor/github.com/matterbridge/gomatrix/.travis.yml
generated
vendored
9
vendor/github.com/matterbridge/gomatrix/.travis.yml
generated
vendored
@ -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
|
|
4
vendor/modules.txt
vendored
4
vendor/modules.txt
vendored
@ -101,6 +101,8 @@ github.com/labstack/gommon/random
|
|||||||
github.com/lrstanley/girc
|
github.com/lrstanley/girc
|
||||||
# github.com/magiconair/properties v1.8.1
|
# github.com/magiconair/properties v1.8.1
|
||||||
github.com/magiconair/properties
|
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 v0.0.0-20200411204219-d5c18ce75048
|
||||||
github.com/matterbridge/Rocket.Chat.Go.SDK/models
|
github.com/matterbridge/Rocket.Chat.Go.SDK/models
|
||||||
github.com/matterbridge/Rocket.Chat.Go.SDK/realtime
|
github.com/matterbridge/Rocket.Chat.Go.SDK/realtime
|
||||||
@ -111,8 +113,6 @@ github.com/matterbridge/discordgo
|
|||||||
github.com/matterbridge/emoji
|
github.com/matterbridge/emoji
|
||||||
# github.com/matterbridge/go-xmpp v0.0.0-20200418225040-c8a3a57b4050
|
# github.com/matterbridge/go-xmpp v0.0.0-20200418225040-c8a3a57b4050
|
||||||
github.com/matterbridge/go-xmpp
|
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 v0.0.0-20200820220548-be5824faa913
|
||||||
github.com/matterbridge/gozulipbot
|
github.com/matterbridge/gozulipbot
|
||||||
# github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba
|
# github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba
|
||||||
|
Loading…
Reference in New Issue
Block a user