diff --git a/client.go b/client.go index 90a07c6..562b2c4 100644 --- a/client.go +++ b/client.go @@ -486,6 +486,17 @@ func (cli *Client) SendVideo(roomID, body, url string) (*RespSendEvent, error) { }) } +// SendFile send an m.room.message event intor the given room with a msgtyope of m.file +// See https://matrix.org/docs/spec/client_server/r0.2.0.html#m-file +func (cli *Client) SendFile(roomID, body, url string) (*RespSendEvent, error) { + return cli.SendMessageEvent(roomID, "m.room.message", + FileMessage{ + MsgType: "m.file", + Body: body, + URL: url, + }) +} + // 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) { diff --git a/events.go b/events.go index 7427740..deed4ad 100644 --- a/events.go +++ b/events.go @@ -87,6 +87,20 @@ type HTMLMessage struct { FormattedBody string `json:"formatted_body"` } +// An FileMessage is the contents of a MATRIX File upload +type FileMessage struct { + Body string `json:"body"` + MsgType string `json:"msgtype"` + URL string `json:"url"` + Info FileInfo `json:"info"` +} + +// FileInfo contains information about a file +type FileInfo struct { + MimeType string `json:"mimetype"` + Size int64 `json:"size"` +} + 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/responses.go b/responses.go index fe0eeb3..a4ba38e 100644 --- a/responses.go +++ b/responses.go @@ -168,6 +168,7 @@ type RespSync struct { } `json:"rooms"` } +// RespTurnServer have information about the Rurtn Server Authentication type RespTurnServer struct { Username string `json:"username"` Password string `json:"password"`