Refactor and update RocketChat bridge

* Add support for editing/deleting messages
* Add support for uploading files
* Add support for avatars
* Use the Rocket.Chat.Go.SDK
* Use the rest and streaming api
This commit is contained in:
Wim
2019-02-10 17:00:11 +01:00
parent 2cfd880cdb
commit 6ebd5cbbd8
53 changed files with 6203 additions and 45 deletions

View File

@@ -0,0 +1,41 @@
package realtime
import (
"fmt"
"github.com/gopackage/ddp"
)
// Subscribes to stream-notify-logged
// Returns a buffered channel
//
// https://rocket.chat/docs/developer-guides/realtime-api/subscriptions/stream-room-messages/
func (c *Client) Sub(name string, args ...interface{}) (chan string, error) {
if args == nil {
//log.Println("no args passed")
if err := c.ddp.Sub(name); err != nil {
return nil, err
}
} else {
if err := c.ddp.Sub(name, args[0], false); err != nil {
return nil, err
}
}
msgChannel := make(chan string, default_buffer_size)
c.ddp.CollectionByName("stream-room-messages").AddUpdateListener(genericExtractor{msgChannel, "update"})
return msgChannel, nil
}
type genericExtractor struct {
messageChannel chan string
operation string
}
func (u genericExtractor) CollectionUpdate(collection, operation, id string, doc ddp.Update) {
if operation == u.operation {
u.messageChannel <- fmt.Sprintf("%s -> update", collection)
}
}