mirror of
https://github.com/cwinfo/matterbridge.git
synced 2024-11-22 15:10:28 +00:00
Update vendor matterbridge/gomatrix fork (#928)
This commit is contained in:
parent
bad3b83d33
commit
0b9bc18236
2
go.mod
2
go.mod
@ -26,7 +26,7 @@ require (
|
|||||||
github.com/lrstanley/girc v0.0.0-20190801035559-4fc93959e1a7
|
github.com/lrstanley/girc v0.0.0-20190801035559-4fc93959e1a7
|
||||||
github.com/matterbridge/Rocket.Chat.Go.SDK v0.0.0-20190210153444-cc9d05784d5d
|
github.com/matterbridge/Rocket.Chat.Go.SDK v0.0.0-20190210153444-cc9d05784d5d
|
||||||
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91
|
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91
|
||||||
github.com/matterbridge/gomatrix v0.0.0-20190102230110-6f9631ca6dea
|
github.com/matterbridge/gomatrix v0.0.0-20191026211822-6fc7accd00ca
|
||||||
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18
|
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18
|
||||||
github.com/matterbridge/logrus-prefixed-formatter v0.0.0-20180806162718-01618749af61
|
github.com/matterbridge/logrus-prefixed-formatter v0.0.0-20180806162718-01618749af61
|
||||||
github.com/mattermost/mattermost-server v5.5.0+incompatible
|
github.com/mattermost/mattermost-server v5.5.0+incompatible
|
||||||
|
4
go.sum
4
go.sum
@ -125,8 +125,8 @@ github.com/matterbridge/discordgo v0.0.0-20190818085008-57c6e0fc2f40 h1:OJmjOa1r
|
|||||||
github.com/matterbridge/discordgo v0.0.0-20190818085008-57c6e0fc2f40/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q=
|
github.com/matterbridge/discordgo v0.0.0-20190818085008-57c6e0fc2f40/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q=
|
||||||
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91 h1:KzDEcy8eDbTx881giW8a6llsAck3e2bJvMyKvh1IK+k=
|
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91 h1:KzDEcy8eDbTx881giW8a6llsAck3e2bJvMyKvh1IK+k=
|
||||||
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91/go.mod h1:ECDRehsR9TYTKCAsRS8/wLeOk6UUqDydw47ln7wG41Q=
|
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91/go.mod h1:ECDRehsR9TYTKCAsRS8/wLeOk6UUqDydw47ln7wG41Q=
|
||||||
github.com/matterbridge/gomatrix v0.0.0-20190102230110-6f9631ca6dea h1:kaADGqpK4gGO2BpzEyJrBxq2Jc57Rsar4i2EUxcACUc=
|
github.com/matterbridge/gomatrix v0.0.0-20191026211822-6fc7accd00ca h1:3ypqEpFpt6vg5Sv2xxA8/v4WiSOnWMXW7DqxTxpM4XI=
|
||||||
github.com/matterbridge/gomatrix v0.0.0-20190102230110-6f9631ca6dea/go.mod h1:+jWeaaUtXQbBRdKYWfjW6JDDYiI2XXE+3NnTjW5kg8g=
|
github.com/matterbridge/gomatrix v0.0.0-20191026211822-6fc7accd00ca/go.mod h1:+jWeaaUtXQbBRdKYWfjW6JDDYiI2XXE+3NnTjW5kg8g=
|
||||||
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18 h1:fLhwXtWGtfTgZVxHG1lcKjv+re7dRwyyuYFNu69xdho=
|
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18 h1:fLhwXtWGtfTgZVxHG1lcKjv+re7dRwyyuYFNu69xdho=
|
||||||
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18/go.mod h1:yAjnZ34DuDyPHMPHHjOsTk/FefW4JJjoMMCGt/8uuQA=
|
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18/go.mod h1:yAjnZ34DuDyPHMPHHjOsTk/FefW4JJjoMMCGt/8uuQA=
|
||||||
github.com/matterbridge/logrus-prefixed-formatter v0.0.0-20180806162718-01618749af61 h1:R/MgM/eUyRBQx2FiH6JVmXck8PaAuKfe2M1tWIzW7nE=
|
github.com/matterbridge/logrus-prefixed-formatter v0.0.0-20180806162718-01618749af61 h1:R/MgM/eUyRBQx2FiH6JVmXck8PaAuKfe2M1tWIzW7nE=
|
||||||
|
2
vendor/github.com/matterbridge/gomatrix/.travis.yml
generated
vendored
2
vendor/github.com/matterbridge/gomatrix/.travis.yml
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
language: go
|
language: go
|
||||||
go:
|
go:
|
||||||
- 1.8
|
- 1.10.x
|
||||||
install:
|
install:
|
||||||
- go get github.com/golang/lint/golint
|
- go get github.com/golang/lint/golint
|
||||||
- go get github.com/fzipp/gocyclo
|
- go get github.com/fzipp/gocyclo
|
||||||
|
157
vendor/github.com/matterbridge/gomatrix/client.go
generated
vendored
157
vendor/github.com/matterbridge/gomatrix/client.go
generated
vendored
@ -13,6 +13,7 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"path"
|
"path"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -38,6 +39,7 @@ type Client struct {
|
|||||||
|
|
||||||
// HTTPError An HTTP Error response, which may wrap an underlying native Go Error.
|
// HTTPError An HTTP Error response, which may wrap an underlying native Go Error.
|
||||||
type HTTPError struct {
|
type HTTPError struct {
|
||||||
|
Contents []byte
|
||||||
WrappedError error
|
WrappedError error
|
||||||
Message string
|
Message string
|
||||||
Code int
|
Code int
|
||||||
@ -48,7 +50,7 @@ func (e HTTPError) Error() string {
|
|||||||
if e.WrappedError != nil {
|
if e.WrappedError != nil {
|
||||||
wrappedErrMsg = e.WrappedError.Error()
|
wrappedErrMsg = e.WrappedError.Error()
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("msg=%s code=%d wrapped=%s", e.Message, e.Code, wrappedErrMsg)
|
return fmt.Sprintf("contents=%v msg=%s code=%d wrapped=%s", e.Contents, e.Message, e.Code, wrappedErrMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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.
|
||||||
@ -68,6 +70,10 @@ func (cli *Client) BuildBaseURL(urlPath ...string) string {
|
|||||||
parts := []string{hsURL.Path}
|
parts := []string{hsURL.Path}
|
||||||
parts = append(parts, urlPath...)
|
parts = append(parts, urlPath...)
|
||||||
hsURL.Path = path.Join(parts...)
|
hsURL.Path = path.Join(parts...)
|
||||||
|
// Manually add the trailing slash back to the end of the path if it's explicitly needed
|
||||||
|
if strings.HasSuffix(urlPath[len(urlPath)-1], "/") {
|
||||||
|
hsURL.Path = hsURL.Path + "/"
|
||||||
|
}
|
||||||
query := hsURL.Query()
|
query := hsURL.Query()
|
||||||
if cli.AccessToken != "" {
|
if cli.AccessToken != "" {
|
||||||
query.Set("access_token", cli.AccessToken)
|
query.Set("access_token", cli.AccessToken)
|
||||||
@ -178,27 +184,27 @@ func (cli *Client) StopSync() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MakeRequest makes a JSON HTTP request to the given URL.
|
// MakeRequest makes a JSON HTTP request to the given URL.
|
||||||
// If "resBody" is not nil, the response body will be json.Unmarshalled into it.
|
// The response body will be stream decoded into an interface. This will automatically stop if the response
|
||||||
|
// body is nil.
|
||||||
//
|
//
|
||||||
// Returns the HTTP body as bytes on 2xx with a nil error. Returns an error if the response is not 2xx along
|
// Returns an error if the response is not 2xx along with the HTTP body bytes if it got that far. This error is
|
||||||
// with the HTTP body bytes if it got that far. This error is an HTTPError which includes the returned
|
// an HTTPError which includes the returned HTTP status code, byte contents of the response body and possibly a
|
||||||
// HTTP status code and possibly a RespError as the WrappedError, if the HTTP body could be decoded as a RespError.
|
// RespError as the WrappedError, if the HTTP body could be decoded as a RespError.
|
||||||
func (cli *Client) MakeRequest(method string, httpURL string, reqBody interface{}, resBody interface{}) ([]byte, error) {
|
func (cli *Client) MakeRequest(method string, httpURL string, reqBody interface{}, resBody interface{}) error {
|
||||||
var req *http.Request
|
var req *http.Request
|
||||||
var err error
|
var err error
|
||||||
if reqBody != nil {
|
if reqBody != nil {
|
||||||
var jsonStr []byte
|
buf := new(bytes.Buffer)
|
||||||
jsonStr, err = json.Marshal(reqBody)
|
if err := json.NewEncoder(buf).Encode(reqBody); err != nil {
|
||||||
if err != nil {
|
return err
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
req, err = http.NewRequest(method, httpURL, bytes.NewBuffer(jsonStr))
|
req, err = http.NewRequest(method, httpURL, buf)
|
||||||
} else {
|
} else {
|
||||||
req, err = http.NewRequest(method, httpURL, nil)
|
req, err = http.NewRequest(method, httpURL, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
req.Header.Set("Content-Type", "application/json")
|
req.Header.Set("Content-Type", "application/json")
|
||||||
res, err := cli.Client.Do(req)
|
res, err := cli.Client.Do(req)
|
||||||
@ -206,10 +212,14 @@ func (cli *Client) MakeRequest(method string, httpURL string, reqBody interface{
|
|||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
contents, err := ioutil.ReadAll(res.Body)
|
|
||||||
if res.StatusCode/100 != 2 { // not 2xx
|
if res.StatusCode/100 != 2 { // not 2xx
|
||||||
|
contents, err := ioutil.ReadAll(res.Body)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
var wrap error
|
var wrap error
|
||||||
var respErr RespError
|
var respErr RespError
|
||||||
if _ = json.Unmarshal(contents, &respErr); respErr.ErrCode != "" {
|
if _ = json.Unmarshal(contents, &respErr); respErr.ErrCode != "" {
|
||||||
@ -223,29 +233,25 @@ func (cli *Client) MakeRequest(method string, httpURL string, reqBody interface{
|
|||||||
msg = msg + ": " + string(contents)
|
msg = msg + ": " + string(contents)
|
||||||
}
|
}
|
||||||
|
|
||||||
return contents, HTTPError{
|
return HTTPError{
|
||||||
|
Contents: contents,
|
||||||
Code: res.StatusCode,
|
Code: res.StatusCode,
|
||||||
Message: msg,
|
Message: msg,
|
||||||
WrappedError: wrap,
|
WrappedError: wrap,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
if resBody != nil && res.Body != nil {
|
||||||
|
return json.NewDecoder(res.Body).Decode(&resBody)
|
||||||
}
|
}
|
||||||
|
|
||||||
if resBody != nil {
|
return nil
|
||||||
if err = json.Unmarshal(contents, &resBody); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return contents, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateFilter makes an HTTP request according to http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-user-userid-filter
|
// CreateFilter makes an HTTP request according to http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-user-userid-filter
|
||||||
func (cli *Client) CreateFilter(filter json.RawMessage) (resp *RespCreateFilter, err error) {
|
func (cli *Client) CreateFilter(filter json.RawMessage) (resp *RespCreateFilter, err error) {
|
||||||
urlPath := cli.BuildURL("user", cli.UserID, "filter")
|
urlPath := cli.BuildURL("user", cli.UserID, "filter")
|
||||||
_, err = cli.MakeRequest("POST", urlPath, &filter, &resp)
|
err = cli.MakeRequest("POST", urlPath, &filter, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -267,13 +273,12 @@ func (cli *Client) SyncRequest(timeout int, since, filterID string, fullState bo
|
|||||||
query["full_state"] = "true"
|
query["full_state"] = "true"
|
||||||
}
|
}
|
||||||
urlPath := cli.BuildURLWithQuery([]string{"sync"}, query)
|
urlPath := cli.BuildURLWithQuery([]string{"sync"}, query)
|
||||||
_, err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cli *Client) register(u string, req *ReqRegister) (resp *RespRegister, uiaResp *RespUserInteractive, err error) {
|
func (cli *Client) register(u string, req *ReqRegister) (resp *RespRegister, uiaResp *RespUserInteractive, err error) {
|
||||||
var bodyBytes []byte
|
err = cli.MakeRequest("POST", u, req, &resp)
|
||||||
bodyBytes, err = cli.MakeRequest("POST", u, req, nil)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
httpErr, ok := err.(HTTPError)
|
httpErr, ok := err.(HTTPError)
|
||||||
if !ok { // network error
|
if !ok { // network error
|
||||||
@ -281,13 +286,10 @@ func (cli *Client) register(u string, req *ReqRegister) (resp *RespRegister, uia
|
|||||||
}
|
}
|
||||||
if httpErr.Code == 401 {
|
if httpErr.Code == 401 {
|
||||||
// body should be RespUserInteractive, if it isn't, fail with the error
|
// body should be RespUserInteractive, if it isn't, fail with the error
|
||||||
err = json.Unmarshal(bodyBytes, &uiaResp)
|
err = json.Unmarshal(httpErr.Contents, &uiaResp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
// body should be RespRegister
|
|
||||||
err = json.Unmarshal(bodyBytes, &resp)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -351,7 +353,7 @@ func (cli *Client) RegisterDummy(req *ReqRegister) (*RespRegister, error) {
|
|||||||
// This does not set credentials on this client instance. See SetCredentials() instead.
|
// This does not set credentials on this client instance. See SetCredentials() instead.
|
||||||
func (cli *Client) Login(req *ReqLogin) (resp *RespLogin, err error) {
|
func (cli *Client) Login(req *ReqLogin) (resp *RespLogin, err error) {
|
||||||
urlPath := cli.BuildURL("login")
|
urlPath := cli.BuildURL("login")
|
||||||
_, err = cli.MakeRequest("POST", urlPath, req, &resp)
|
err = cli.MakeRequest("POST", urlPath, req, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -359,14 +361,14 @@ func (cli *Client) Login(req *ReqLogin) (resp *RespLogin, err error) {
|
|||||||
// 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")
|
||||||
_, err = cli.MakeRequest("POST", urlPath, nil, &resp)
|
err = cli.MakeRequest("POST", urlPath, nil, &resp)
|
||||||
return
|
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")
|
||||||
_, err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -383,21 +385,21 @@ func (cli *Client) JoinRoom(roomIDorAlias, serverName string, content interface{
|
|||||||
} else {
|
} else {
|
||||||
urlPath = cli.BuildURL("join", roomIDorAlias)
|
urlPath = cli.BuildURL("join", roomIDorAlias)
|
||||||
}
|
}
|
||||||
_, err = cli.MakeRequest("POST", urlPath, content, &resp)
|
err = cli.MakeRequest("POST", urlPath, content, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDisplayName returns the display name of the user from the specified MXID. See https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-profile-userid-displayname
|
// GetDisplayName returns the display name of the user from the specified MXID. See https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-profile-userid-displayname
|
||||||
func (cli *Client) GetDisplayName(mxid string) (resp *RespUserDisplayName, err error) {
|
func (cli *Client) GetDisplayName(mxid string) (resp *RespUserDisplayName, err error) {
|
||||||
urlPath := cli.BuildURL("profile", mxid, "displayname")
|
urlPath := cli.BuildURL("profile", mxid, "displayname")
|
||||||
_, err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetOwnDisplayName returns the user's display name. See https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-profile-userid-displayname
|
// GetOwnDisplayName returns the user's display name. See https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-profile-userid-displayname
|
||||||
func (cli *Client) GetOwnDisplayName() (resp *RespUserDisplayName, err error) {
|
func (cli *Client) GetOwnDisplayName() (resp *RespUserDisplayName, err error) {
|
||||||
urlPath := cli.BuildURL("profile", cli.UserID, "displayname")
|
urlPath := cli.BuildURL("profile", cli.UserID, "displayname")
|
||||||
_, err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -407,18 +409,18 @@ func (cli *Client) SetDisplayName(displayName string) (err error) {
|
|||||||
s := struct {
|
s := struct {
|
||||||
DisplayName string `json:"displayname"`
|
DisplayName string `json:"displayname"`
|
||||||
}{displayName}
|
}{displayName}
|
||||||
_, err = cli.MakeRequest("PUT", urlPath, &s, nil)
|
err = cli.MakeRequest("PUT", urlPath, &s, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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
|
// 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) GetAvatarURL() (url string, err error) {
|
func (cli *Client) GetAvatarURL() (string, error) {
|
||||||
urlPath := cli.BuildURL("profile", cli.UserID, "avatar_url")
|
urlPath := cli.BuildURL("profile", cli.UserID, "avatar_url")
|
||||||
s := struct {
|
s := struct {
|
||||||
AvatarURL string `json:"avatar_url"`
|
AvatarURL string `json:"avatar_url"`
|
||||||
}{}
|
}{}
|
||||||
|
|
||||||
_, err = cli.MakeRequest("GET", urlPath, nil, &s)
|
err := cli.MakeRequest("GET", urlPath, nil, &s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
@ -427,12 +429,12 @@ func (cli *Client) GetAvatarURL() (url string, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 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) (err error) {
|
func (cli *Client) SetAvatarURL(url string) error {
|
||||||
urlPath := cli.BuildURL("profile", cli.UserID, "avatar_url")
|
urlPath := cli.BuildURL("profile", cli.UserID, "avatar_url")
|
||||||
s := struct {
|
s := struct {
|
||||||
AvatarURL string `json:"avatar_url"`
|
AvatarURL string `json:"avatar_url"`
|
||||||
}{url}
|
}{url}
|
||||||
_, err = cli.MakeRequest("PUT", urlPath, &s, nil)
|
err := cli.MakeRequest("PUT", urlPath, &s, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -445,7 +447,7 @@ func (cli *Client) SetAvatarURL(url string) (err error) {
|
|||||||
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) {
|
||||||
txnID := txnID()
|
txnID := txnID()
|
||||||
urlPath := cli.BuildURL("rooms", roomID, "send", eventType, txnID)
|
urlPath := cli.BuildURL("rooms", roomID, "send", eventType, txnID)
|
||||||
_, err = cli.MakeRequest("PUT", urlPath, contentJSON, &resp)
|
err = cli.MakeRequest("PUT", urlPath, contentJSON, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -453,7 +455,7 @@ func (cli *Client) SendMessageEvent(roomID string, eventType string, contentJSON
|
|||||||
// 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) SendStateEvent(roomID, eventType, stateKey string, contentJSON interface{}) (resp *RespSendEvent, err error) {
|
func (cli *Client) SendStateEvent(roomID, eventType, stateKey string, contentJSON interface{}) (resp *RespSendEvent, err error) {
|
||||||
urlPath := cli.BuildURL("rooms", roomID, "state", eventType, stateKey)
|
urlPath := cli.BuildURL("rooms", roomID, "state", eventType, stateKey)
|
||||||
_, err = cli.MakeRequest("PUT", urlPath, contentJSON, &resp)
|
err = cli.MakeRequest("PUT", urlPath, contentJSON, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -491,6 +493,36 @@ 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) {
|
||||||
@ -507,7 +539,7 @@ func (cli *Client) SendNoticeHTML(roomID, textclear, text string) (*RespSendEven
|
|||||||
func (cli *Client) RedactEvent(roomID, eventID string, req *ReqRedact) (resp *RespSendEvent, err error) {
|
func (cli *Client) RedactEvent(roomID, eventID string, req *ReqRedact) (resp *RespSendEvent, err error) {
|
||||||
txnID := txnID()
|
txnID := txnID()
|
||||||
urlPath := cli.BuildURL("rooms", roomID, "redact", eventID, txnID)
|
urlPath := cli.BuildURL("rooms", roomID, "redact", eventID, txnID)
|
||||||
_, err = cli.MakeRequest("PUT", urlPath, req, &resp)
|
err = cli.MakeRequest("PUT", urlPath, req, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -518,56 +550,56 @@ func (cli *Client) RedactEvent(roomID, eventID string, req *ReqRedact) (resp *Re
|
|||||||
// fmt.Println("Room:", resp.RoomID)
|
// fmt.Println("Room:", resp.RoomID)
|
||||||
func (cli *Client) CreateRoom(req *ReqCreateRoom) (resp *RespCreateRoom, err error) {
|
func (cli *Client) CreateRoom(req *ReqCreateRoom) (resp *RespCreateRoom, err error) {
|
||||||
urlPath := cli.BuildURL("createRoom")
|
urlPath := cli.BuildURL("createRoom")
|
||||||
_, err = cli.MakeRequest("POST", urlPath, req, &resp)
|
err = cli.MakeRequest("POST", urlPath, req, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// LeaveRoom leaves the given room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-leave
|
// LeaveRoom leaves the given room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-leave
|
||||||
func (cli *Client) LeaveRoom(roomID string) (resp *RespLeaveRoom, err error) {
|
func (cli *Client) LeaveRoom(roomID string) (resp *RespLeaveRoom, err error) {
|
||||||
u := cli.BuildURL("rooms", roomID, "leave")
|
u := cli.BuildURL("rooms", roomID, "leave")
|
||||||
_, err = cli.MakeRequest("POST", u, struct{}{}, &resp)
|
err = cli.MakeRequest("POST", u, struct{}{}, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// ForgetRoom forgets a room entirely. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-forget
|
// ForgetRoom forgets a room entirely. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-forget
|
||||||
func (cli *Client) ForgetRoom(roomID string) (resp *RespForgetRoom, err error) {
|
func (cli *Client) ForgetRoom(roomID string) (resp *RespForgetRoom, err error) {
|
||||||
u := cli.BuildURL("rooms", roomID, "forget")
|
u := cli.BuildURL("rooms", roomID, "forget")
|
||||||
_, err = cli.MakeRequest("POST", u, struct{}{}, &resp)
|
err = cli.MakeRequest("POST", u, struct{}{}, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// InviteUser invites a user to a room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-invite
|
// InviteUser invites a user to a room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-invite
|
||||||
func (cli *Client) InviteUser(roomID string, req *ReqInviteUser) (resp *RespInviteUser, err error) {
|
func (cli *Client) InviteUser(roomID string, req *ReqInviteUser) (resp *RespInviteUser, err error) {
|
||||||
u := cli.BuildURL("rooms", roomID, "invite")
|
u := cli.BuildURL("rooms", roomID, "invite")
|
||||||
_, err = cli.MakeRequest("POST", u, struct{}{}, &resp)
|
err = cli.MakeRequest("POST", u, req, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// InviteUserByThirdParty invites a third-party identifier to a room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#invite-by-third-party-id-endpoint
|
// InviteUserByThirdParty invites a third-party identifier to a room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#invite-by-third-party-id-endpoint
|
||||||
func (cli *Client) InviteUserByThirdParty(roomID string, req *ReqInvite3PID) (resp *RespInviteUser, err error) {
|
func (cli *Client) InviteUserByThirdParty(roomID string, req *ReqInvite3PID) (resp *RespInviteUser, err error) {
|
||||||
u := cli.BuildURL("rooms", roomID, "invite")
|
u := cli.BuildURL("rooms", roomID, "invite")
|
||||||
_, err = cli.MakeRequest("POST", u, req, &resp)
|
err = cli.MakeRequest("POST", u, req, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// KickUser kicks a user from a room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-kick
|
// KickUser kicks a user from a room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-kick
|
||||||
func (cli *Client) KickUser(roomID string, req *ReqKickUser) (resp *RespKickUser, err error) {
|
func (cli *Client) KickUser(roomID string, req *ReqKickUser) (resp *RespKickUser, err error) {
|
||||||
u := cli.BuildURL("rooms", roomID, "kick")
|
u := cli.BuildURL("rooms", roomID, "kick")
|
||||||
_, err = cli.MakeRequest("POST", u, req, &resp)
|
err = cli.MakeRequest("POST", u, req, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// BanUser bans a user from a room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-ban
|
// BanUser bans a user from a room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-ban
|
||||||
func (cli *Client) BanUser(roomID string, req *ReqBanUser) (resp *RespBanUser, err error) {
|
func (cli *Client) BanUser(roomID string, req *ReqBanUser) (resp *RespBanUser, err error) {
|
||||||
u := cli.BuildURL("rooms", roomID, "ban")
|
u := cli.BuildURL("rooms", roomID, "ban")
|
||||||
_, err = cli.MakeRequest("POST", u, req, &resp)
|
err = cli.MakeRequest("POST", u, req, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnbanUser unbans a user from a room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-unban
|
// UnbanUser unbans a user from a room. See http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-unban
|
||||||
func (cli *Client) UnbanUser(roomID string, req *ReqUnbanUser) (resp *RespUnbanUser, err error) {
|
func (cli *Client) UnbanUser(roomID string, req *ReqUnbanUser) (resp *RespUnbanUser, err error) {
|
||||||
u := cli.BuildURL("rooms", roomID, "unban")
|
u := cli.BuildURL("rooms", roomID, "unban")
|
||||||
_, err = cli.MakeRequest("POST", u, req, &resp)
|
err = cli.MakeRequest("POST", u, req, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -575,7 +607,7 @@ func (cli *Client) UnbanUser(roomID string, req *ReqUnbanUser) (resp *RespUnbanU
|
|||||||
func (cli *Client) UserTyping(roomID string, typing bool, timeout int64) (resp *RespTyping, err error) {
|
func (cli *Client) UserTyping(roomID string, typing bool, timeout int64) (resp *RespTyping, err error) {
|
||||||
req := ReqTyping{Typing: typing, Timeout: timeout}
|
req := ReqTyping{Typing: typing, Timeout: timeout}
|
||||||
u := cli.BuildURL("rooms", roomID, "typing", cli.UserID)
|
u := cli.BuildURL("rooms", roomID, "typing", cli.UserID)
|
||||||
_, err = cli.MakeRequest("PUT", u, req, &resp)
|
err = cli.MakeRequest("PUT", u, req, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -584,7 +616,7 @@ func (cli *Client) UserTyping(roomID string, typing bool, timeout int64) (resp *
|
|||||||
// See http://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-rooms-roomid-state-eventtype-statekey
|
// See http://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-rooms-roomid-state-eventtype-statekey
|
||||||
func (cli *Client) StateEvent(roomID, eventType, stateKey string, outContent interface{}) (err error) {
|
func (cli *Client) StateEvent(roomID, eventType, stateKey string, outContent interface{}) (err error) {
|
||||||
u := cli.BuildURL("rooms", roomID, "state", eventType, stateKey)
|
u := cli.BuildURL("rooms", roomID, "state", eventType, stateKey)
|
||||||
_, err = cli.MakeRequest("GET", u, nil, outContent)
|
err = cli.MakeRequest("GET", u, nil, outContent)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -625,8 +657,9 @@ func (cli *Client) UploadToContentRepo(content io.Reader, contentType string, co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil, HTTPError{
|
return nil, HTTPError{
|
||||||
Message: "Upload request failed: " + string(contents),
|
Contents: contents,
|
||||||
Code: res.StatusCode,
|
Message: "Upload request failed: " + string(contents),
|
||||||
|
Code: res.StatusCode,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var m RespMediaUpload
|
var m RespMediaUpload
|
||||||
@ -642,7 +675,7 @@ func (cli *Client) UploadToContentRepo(content io.Reader, contentType string, co
|
|||||||
// This API is primarily designed for application services which may want to efficiently look up joined members in a room.
|
// This API is primarily designed for application services which may want to efficiently look up joined members in a room.
|
||||||
func (cli *Client) JoinedMembers(roomID string) (resp *RespJoinedMembers, err error) {
|
func (cli *Client) JoinedMembers(roomID string) (resp *RespJoinedMembers, err error) {
|
||||||
u := cli.BuildURL("rooms", roomID, "joined_members")
|
u := cli.BuildURL("rooms", roomID, "joined_members")
|
||||||
_, err = cli.MakeRequest("GET", u, nil, &resp)
|
err = cli.MakeRequest("GET", u, nil, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -652,7 +685,7 @@ func (cli *Client) JoinedMembers(roomID string) (resp *RespJoinedMembers, err er
|
|||||||
// This API is primarily designed for application services which may want to efficiently look up joined rooms.
|
// This API is primarily designed for application services which may want to efficiently look up joined rooms.
|
||||||
func (cli *Client) JoinedRooms() (resp *RespJoinedRooms, err error) {
|
func (cli *Client) JoinedRooms() (resp *RespJoinedRooms, err error) {
|
||||||
u := cli.BuildURL("joined_rooms")
|
u := cli.BuildURL("joined_rooms")
|
||||||
_, err = cli.MakeRequest("GET", u, nil, &resp)
|
err = cli.MakeRequest("GET", u, nil, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -672,7 +705,7 @@ func (cli *Client) Messages(roomID, from, to string, dir rune, limit int) (resp
|
|||||||
}
|
}
|
||||||
|
|
||||||
urlPath := cli.BuildURLWithQuery([]string{"rooms", roomID, "messages"}, query)
|
urlPath := cli.BuildURLWithQuery([]string{"rooms", roomID, "messages"}, query)
|
||||||
_, err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -680,7 +713,7 @@ func (cli *Client) Messages(roomID, from, to string, dir rune, limit int) (resp
|
|||||||
// See http://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-voip-turnserver
|
// See http://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-voip-turnserver
|
||||||
func (cli *Client) TurnServer() (resp *RespTurnServer, err error) {
|
func (cli *Client) TurnServer() (resp *RespTurnServer, err error) {
|
||||||
urlPath := cli.BuildURL("voip", "turnServer")
|
urlPath := cli.BuildURL("voip", "turnServer")
|
||||||
_, err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
err = cli.MakeRequest("GET", urlPath, nil, &resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
52
vendor/github.com/matterbridge/gomatrix/events.go
generated
vendored
52
vendor/github.com/matterbridge/gomatrix/events.go
generated
vendored
@ -15,6 +15,7 @@ type Event struct {
|
|||||||
RoomID string `json:"room_id"` // The room the event was sent to. May be nil (e.g. for presence)
|
RoomID string `json:"room_id"` // The room the event was sent to. May be nil (e.g. for presence)
|
||||||
Content map[string]interface{} `json:"content"` // The JSON content of the event.
|
Content map[string]interface{} `json:"content"` // The JSON content of the event.
|
||||||
Redacts string `json:"redacts,omitempty"` // The event ID that was redacted if a m.room.redaction event
|
Redacts string `json:"redacts,omitempty"` // The event ID that was redacted if a m.room.redaction event
|
||||||
|
Unsigned map[string]interface{} `json:"unsigned"` // The unsigned portions of the event, such as age and prev_content
|
||||||
}
|
}
|
||||||
|
|
||||||
// Body returns the value of the "body" key in the event content if it is
|
// Body returns the value of the "body" key in the event content if it is
|
||||||
@ -47,22 +48,47 @@ type TextMessage struct {
|
|||||||
FormattedBody string `json:"formatted_body,omitempty"`
|
FormattedBody string `json:"formatted_body,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ImageInfo contains info about an 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
|
||||||
type ImageInfo struct {
|
type ThumbnailInfo struct {
|
||||||
Height uint `json:"h,omitempty"`
|
Height uint `json:"h,omitempty"`
|
||||||
Width uint `json:"w,omitempty"`
|
Width uint `json:"w,omitempty"`
|
||||||
Mimetype string `json:"mimetype,omitempty"`
|
Mimetype string `json:"mimetype,omitempty"`
|
||||||
Size uint `json:"size,omitempty"`
|
Size uint `json:"size,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ImageInfo contains info about an image - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-image
|
||||||
|
type ImageInfo struct {
|
||||||
|
Height uint `json:"h,omitempty"`
|
||||||
|
Width uint `json:"w,omitempty"`
|
||||||
|
Mimetype string `json:"mimetype,omitempty"`
|
||||||
|
Size uint `json:"size,omitempty"`
|
||||||
|
ThumbnailInfo ThumbnailInfo `json:"thumbnail_info,omitempty"`
|
||||||
|
ThumbnailURL string `json:"thumbnail_url,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
// VideoInfo contains info about a video - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-video
|
// VideoInfo contains info about a video - http://matrix.org/docs/spec/client_server/r0.2.0.html#m-video
|
||||||
type VideoInfo struct {
|
type VideoInfo struct {
|
||||||
|
Mimetype string `json:"mimetype,omitempty"`
|
||||||
|
ThumbnailInfo ThumbnailInfo `json:"thumbnail_info"`
|
||||||
|
ThumbnailURL string `json:"thumbnail_url,omitempty"`
|
||||||
|
Height uint `json:"h,omitempty"`
|
||||||
|
Width uint `json:"w,omitempty"`
|
||||||
|
Duration uint `json:"duration,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"`
|
Mimetype string `json:"mimetype,omitempty"`
|
||||||
ThumbnailInfo ImageInfo `json:"thumbnail_info"`
|
ThumbnailInfo ImageInfo `json:"thumbnail_info"`
|
||||||
ThumbnailURL string `json:"thumbnail_url,omitempty"`
|
ThumbnailURL string `json:"thumbnail_url,omitempty"`
|
||||||
Height uint `json:"h,omitempty"`
|
|
||||||
Width uint `json:"w,omitempty"`
|
|
||||||
Duration uint `json:"duration,omitempty"`
|
|
||||||
Size uint `json:"size,omitempty"`
|
Size uint `json:"size,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,6 +108,22 @@ 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"`
|
||||||
|
81
vendor/github.com/matterbridge/gomatrix/filter.go
generated
vendored
81
vendor/github.com/matterbridge/gomatrix/filter.go
generated
vendored
@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
package gomatrix
|
package gomatrix
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
//Filter is used by clients to specify how the server should filter responses to e.g. sync requests
|
//Filter is used by clients to specify how the server should filter responses to e.g. sync requests
|
||||||
//Specified by: https://matrix.org/docs/spec/client_server/r0.2.0.html#filtering
|
//Specified by: https://matrix.org/docs/spec/client_server/r0.2.0.html#filtering
|
||||||
type Filter struct {
|
type Filter struct {
|
||||||
@ -21,23 +23,68 @@ type Filter struct {
|
|||||||
EventFields []string `json:"event_fields,omitempty"`
|
EventFields []string `json:"event_fields,omitempty"`
|
||||||
EventFormat string `json:"event_format,omitempty"`
|
EventFormat string `json:"event_format,omitempty"`
|
||||||
Presence FilterPart `json:"presence,omitempty"`
|
Presence FilterPart `json:"presence,omitempty"`
|
||||||
Room struct {
|
Room RoomFilter `json:"room,omitempty"`
|
||||||
AccountData FilterPart `json:"account_data,omitempty"`
|
|
||||||
Ephemeral FilterPart `json:"ephemeral,omitempty"`
|
|
||||||
IncludeLeave bool `json:"include_leave,omitempty"`
|
|
||||||
NotRooms []string `json:"not_rooms,omitempty"`
|
|
||||||
Rooms []string `json:"rooms,omitempty"`
|
|
||||||
State FilterPart `json:"state,omitempty"`
|
|
||||||
Timeline FilterPart `json:"timeline,omitempty"`
|
|
||||||
} `json:"room,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type FilterPart struct {
|
// RoomFilter is used to define filtering rules for room events
|
||||||
NotRooms []string `json:"not_rooms,omitempty"`
|
type RoomFilter struct {
|
||||||
Rooms []string `json:"rooms,omitempty"`
|
AccountData FilterPart `json:"account_data,omitempty"`
|
||||||
Limit *int `json:"limit,omitempty"`
|
Ephemeral FilterPart `json:"ephemeral,omitempty"`
|
||||||
NotSenders []string `json:"not_senders,omitempty"`
|
IncludeLeave bool `json:"include_leave,omitempty"`
|
||||||
NotTypes []string `json:"not_types,omitempty"`
|
NotRooms []string `json:"not_rooms,omitempty"`
|
||||||
Senders []string `json:"senders,omitempty"`
|
Rooms []string `json:"rooms,omitempty"`
|
||||||
Types []string `json:"types,omitempty"`
|
State FilterPart `json:"state,omitempty"`
|
||||||
|
Timeline FilterPart `json:"timeline,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// FilterPart is used to define filtering rules for specific categories of events
|
||||||
|
type FilterPart struct {
|
||||||
|
NotRooms []string `json:"not_rooms,omitempty"`
|
||||||
|
Rooms []string `json:"rooms,omitempty"`
|
||||||
|
Limit int `json:"limit,omitempty"`
|
||||||
|
NotSenders []string `json:"not_senders,omitempty"`
|
||||||
|
NotTypes []string `json:"not_types,omitempty"`
|
||||||
|
Senders []string `json:"senders,omitempty"`
|
||||||
|
Types []string `json:"types,omitempty"`
|
||||||
|
ContainsURL *bool `json:"contains_url,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate checks if the filter contains valid property values
|
||||||
|
func (filter *Filter) Validate() error {
|
||||||
|
if filter.EventFormat != "client" && filter.EventFormat != "federation" {
|
||||||
|
return errors.New("Bad event_format value. Must be one of [\"client\", \"federation\"]")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DefaultFilter returns the default filter used by the Matrix server if no filter is provided in the request
|
||||||
|
func DefaultFilter() Filter {
|
||||||
|
return Filter{
|
||||||
|
AccountData: DefaultFilterPart(),
|
||||||
|
EventFields: nil,
|
||||||
|
EventFormat: "client",
|
||||||
|
Presence: DefaultFilterPart(),
|
||||||
|
Room: RoomFilter{
|
||||||
|
AccountData: DefaultFilterPart(),
|
||||||
|
Ephemeral: DefaultFilterPart(),
|
||||||
|
IncludeLeave: false,
|
||||||
|
NotRooms: nil,
|
||||||
|
Rooms: nil,
|
||||||
|
State: DefaultFilterPart(),
|
||||||
|
Timeline: DefaultFilterPart(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DefaultFilterPart returns the default filter part used by the Matrix server if no filter is provided in the request
|
||||||
|
func DefaultFilterPart() FilterPart {
|
||||||
|
return FilterPart{
|
||||||
|
NotRooms: nil,
|
||||||
|
Rooms: nil,
|
||||||
|
Limit: 20,
|
||||||
|
NotSenders: nil,
|
||||||
|
NotTypes: nil,
|
||||||
|
Senders: nil,
|
||||||
|
Types: nil,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
3
vendor/github.com/matterbridge/gomatrix/responses.go
generated
vendored
3
vendor/github.com/matterbridge/gomatrix/responses.go
generated
vendored
@ -84,7 +84,7 @@ type RespUserInteractive struct {
|
|||||||
Stages []string `json:"stages"`
|
Stages []string `json:"stages"`
|
||||||
} `json:"flows"`
|
} `json:"flows"`
|
||||||
Params map[string]interface{} `json:"params"`
|
Params map[string]interface{} `json:"params"`
|
||||||
Session string `json:"string"`
|
Session string `json:"session"`
|
||||||
Completed []string `json:"completed"`
|
Completed []string `json:"completed"`
|
||||||
ErrCode string `json:"errcode"`
|
ErrCode string `json:"errcode"`
|
||||||
Error string `json:"error"`
|
Error string `json:"error"`
|
||||||
@ -168,6 +168,7 @@ type RespSync struct {
|
|||||||
} `json:"rooms"`
|
} `json:"rooms"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RespTurnServer is the JSON response from a Turn Server
|
||||||
type RespTurnServer struct {
|
type RespTurnServer struct {
|
||||||
Username string `json:"username"`
|
Username string `json:"username"`
|
||||||
Password string `json:"password"`
|
Password string `json:"password"`
|
||||||
|
2
vendor/github.com/matterbridge/gomatrix/userids.go
generated
vendored
2
vendor/github.com/matterbridge/gomatrix/userids.go
generated
vendored
@ -125,6 +125,6 @@ func ExtractUserLocalpart(userID string) (string, error) {
|
|||||||
}
|
}
|
||||||
return strings.TrimPrefix(
|
return strings.TrimPrefix(
|
||||||
strings.SplitN(userID, ":", 2)[0], // @foo:bar:8448 => [ "@foo", "bar:8448" ]
|
strings.SplitN(userID, ":", 2)[0], // @foo:bar:8448 => [ "@foo", "bar:8448" ]
|
||||||
"@", // remove "@" prefix
|
"@", // remove "@" prefix
|
||||||
), nil
|
), nil
|
||||||
}
|
}
|
||||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -101,7 +101,7 @@ github.com/matterbridge/Rocket.Chat.Go.SDK/realtime
|
|||||||
github.com/matterbridge/Rocket.Chat.Go.SDK/rest
|
github.com/matterbridge/Rocket.Chat.Go.SDK/rest
|
||||||
# github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91
|
# github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91
|
||||||
github.com/matterbridge/go-xmpp
|
github.com/matterbridge/go-xmpp
|
||||||
# github.com/matterbridge/gomatrix v0.0.0-20190102230110-6f9631ca6dea
|
# github.com/matterbridge/gomatrix v0.0.0-20191026211822-6fc7accd00ca
|
||||||
github.com/matterbridge/gomatrix
|
github.com/matterbridge/gomatrix
|
||||||
# github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18
|
# github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18
|
||||||
github.com/matterbridge/gozulipbot
|
github.com/matterbridge/gozulipbot
|
||||||
|
Loading…
Reference in New Issue
Block a user