From ace302431c41d5bdd6ad502532a6b4784d294560 Mon Sep 17 00:00:00 2001 From: Andreas Peters Date: Wed, 6 Sep 2017 15:06:53 +0200 Subject: [PATCH] add msgtype m.file --- client.go | 11 +++++++++++ events.go | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/client.go b/client.go index 90a07c6..59fda86 100644 --- a/client.go +++ b/client.go @@ -486,6 +486,17 @@ func (cli *Client) SendVideo(roomID, body, url string) (*RespSendEvent, error) { }) } +// SendImage 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..2e92db3 100644 --- a/events.go +++ b/events.go @@ -86,6 +86,18 @@ type HTMLMessage struct { Format string `json:"format"` 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"` +} + +type FileInfo struct { + MimeType string `json:"mimetype"` + Size int64 `json:size"` +} var htmlRegex = regexp.MustCompile("<[^<]+?>")