Update vendor (#1330)

This commit is contained in:
Wim
2020-12-06 23:16:02 +01:00
committed by GitHub
parent 4913766d58
commit 0d7315249d
28 changed files with 586 additions and 339 deletions

View File

@@ -66,6 +66,9 @@ type Attachment struct {
AudioURL string `json:"audio_url,omitempty"`
VideoURL string `json:"video_url,omitempty"`
Actions []AttachmentAction `json:"actions,omitempty"`
ActionButtonsAlignment AttachmentActionButtonsAlignment `json:"button_alignment,omitempty"`
Fields []AttachmentField `json:"fields,omitempty"`
}
@@ -77,3 +80,37 @@ type AttachmentField struct {
Title string `json:"title"`
Value string `json:"value"`
}
type AttachmentActionType string
const (
AttachmentActionTypeButton AttachmentActionType = "button"
)
// AttachmentAction are action buttons on message attachments
type AttachmentAction struct {
Type AttachmentActionType `json:"type"`
Text string `json:"text"`
Url string `json:"url"`
ImageURL string `json:"image_url"`
IsWebView bool `json:"is_webview"`
WebviewHeightRatio string `json:"webview_height_ratio"`
Msg string `json:"msg"`
MsgInChatWindow bool `json:"msg_in_chat_window"`
MsgProcessingType MessageProcessingType `json:"msg_processing_type"`
}
// AttachmentActionButtonAlignment configures how the actions buttons will be aligned
type AttachmentActionButtonsAlignment string
const (
ActionButtonAlignVertical AttachmentActionButtonsAlignment = "vertical"
ActionButtonAlignHorizontal AttachmentActionButtonsAlignment = "horizontal"
)
type MessageProcessingType string
const (
ProcessingTypeSendMessage MessageProcessingType = "sendMessage"
ProcessingTypeRespondWithMessage MessageProcessingType = "respondWithMessage"
)

View File

@@ -14,6 +14,7 @@ type CreateUserRequest struct {
Email string `json:"email"`
Password string `json:"password"`
Username string `json:"username"`
Roles []string `json:"roles,omitempty"`
CustomFields map[string]string `json:"customFields,omitempty"`
}

View File

@@ -72,6 +72,7 @@ func (c *Client) GetChannelSubscriptions() ([]models.ChannelSubscription, error)
DisplayName: stringOrZero(sub.Path("fname").Data()),
Open: sub.Path("open").Data().(bool),
Type: stringOrZero(sub.Path("t").Data()),
RoomId: stringOrZero(sub.Path("rid").Data()),
User: models.User{
ID: stringOrZero(sub.Path("u._id").Data()),
UserName: stringOrZero(sub.Path("u.username").Data()),

View File

@@ -2,6 +2,7 @@ package realtime
import (
"fmt"
"log"
"strconv"
"time"
@@ -16,27 +17,54 @@ const (
default_buffer_size = 100
)
var messageListenerAdded = false
// NewMessage creates basic message with an ID, a RoomID, and a Msg
// Takes channel and text
func (c *Client) NewMessage(channel *models.Channel, text string) *models.Message {
return &models.Message{
ID: c.newRandomId(),
RoomID: channel.ID,
Msg: text,
}
}
// LoadHistory loads history
// Takes roomId
// Takes roomID
//
// https://rocket.chat/docs/developer-guides/realtime-api/method-calls/load-history
func (c *Client) LoadHistory(roomId string) error {
_, err := c.ddp.Call("loadHistory", roomId)
func (c *Client) LoadHistory(roomID string) ([]models.Message, error) {
m, err := c.ddp.Call("loadHistory", roomID)
if err != nil {
return err
return nil, err
}
return nil
history := m.(map[string]interface{})
document, _ := gabs.Consume(history["messages"])
msgs, err := document.Children()
if err != nil {
log.Printf("response is in an unexpected format: %v", err)
return make([]models.Message, 0), nil
}
messages := make([]models.Message, len(msgs))
for i, arg := range msgs {
messages[i] = *getMessageFromDocument(arg)
}
// log.Println(messages)
return messages, nil
}
// SendMessage sends message to channel
// takes channel and message
// takes message
//
// https://rocket.chat/docs/developer-guides/realtime-api/method-calls/send-message
func (c *Client) SendMessage(m *models.Message) (*models.Message, error) {
m.ID = c.newRandomId()
rawResponse, err := c.ddp.Call("sendMessage", m)
func (c *Client) SendMessage(message *models.Message) (*models.Message, error) {
rawResponse, err := c.ddp.Call("sendMessage", message)
if err != nil {
return nil, err
}
@@ -158,8 +186,10 @@ func (c *Client) SubscribeToMessageStream(channel *models.Channel, msgChannel ch
return err
}
// msgChannel := make(chan models.Message, default_buffer_size)
c.ddp.CollectionByName("stream-room-messages").AddUpdateListener(messageExtractor{msgChannel, "update"})
if !messageListenerAdded {
c.ddp.CollectionByName("stream-room-messages").AddUpdateListener(messageExtractor{msgChannel, "update"})
messageListenerAdded = true
}
return nil
}

View File

@@ -56,9 +56,17 @@ func (c *Client) LeaveChannel(channel *models.Channel) error {
// https://rocket.chat/docs/developer-guides/rest-api/channels/info
func (c *Client) GetChannelInfo(channel *models.Channel) (*models.Channel, error) {
response := new(ChannelResponse)
if err := c.Get("channels.info", url.Values{"roomId": []string{channel.ID}}, response); err != nil {
return nil, err
switch {
case channel.Name != "" && channel.ID == "":
if err := c.Get("channels.info", url.Values{"roomName": []string{channel.Name}}, response); err != nil {
return nil, err
}
default:
if err := c.Get("channels.info", url.Values{"roomId": []string{channel.ID}}, response); err != nil {
return nil, err
}
}
return &response.Channel, nil
}

View File

@@ -0,0 +1,33 @@
package rest
import (
"bytes"
"encoding/json"
"github.com/matterbridge/Rocket.Chat.Go.SDK/models"
)
type UpdatePermissionsRequest struct {
Permissions []models.Permission `json:"permissions"`
}
type UpdatePermissionsResponse struct {
Status
Permissions []models.Permission `json:"permissions"`
}
// UpdatePermissions updates permissions
//
// https://rocket.chat/docs/developer-guides/rest-api/permissions/update/
func (c *Client) UpdatePermissions(req *UpdatePermissionsRequest) (*UpdatePermissionsResponse, error) {
body, err := json.Marshal(req)
if err != nil {
return nil, err
}
response := new(UpdatePermissionsResponse)
if err := c.Post("permissions.update", bytes.NewBuffer(body), response); err != nil {
return nil, err
}
return response, nil
}