diff options
author | Wim <wim@42.be> | 2018-01-08 22:41:38 +0100 |
---|---|---|
committer | Wim <wim@42.be> | 2018-01-09 00:07:55 +0100 |
commit | be898b44c3c057c7b70efb83f66b7bbbdd5e9276 (patch) | |
tree | 01c8983913bcae177b5e0e015de9a45abe8369a7 /vendor/github.com/matterbridge/slack/reactions.go | |
parent | 4828c434439949f62a6e219ab9947c221a06b111 (diff) | |
download | matterbridge-msglm-be898b44c3c057c7b70efb83f66b7bbbdd5e9276.tar.gz matterbridge-msglm-be898b44c3c057c7b70efb83f66b7bbbdd5e9276.tar.bz2 matterbridge-msglm-be898b44c3c057c7b70efb83f66b7bbbdd5e9276.zip |
Update vendor (slack)
Diffstat (limited to 'vendor/github.com/matterbridge/slack/reactions.go')
-rw-r--r-- | vendor/github.com/matterbridge/slack/reactions.go | 267 |
1 files changed, 0 insertions, 267 deletions
diff --git a/vendor/github.com/matterbridge/slack/reactions.go b/vendor/github.com/matterbridge/slack/reactions.go deleted file mode 100644 index 9da59241..00000000 --- a/vendor/github.com/matterbridge/slack/reactions.go +++ /dev/null @@ -1,267 +0,0 @@ -package slack - -import ( - "context" - "errors" - "net/url" - "strconv" -) - -// ItemReaction is the reactions that have happened on an item. -type ItemReaction struct { - Name string `json:"name"` - Count int `json:"count"` - Users []string `json:"users"` -} - -// ReactedItem is an item that was reacted to, and the details of the -// reactions. -type ReactedItem struct { - Item - Reactions []ItemReaction -} - -// GetReactionsParameters is the inputs to get reactions to an item. -type GetReactionsParameters struct { - Full bool -} - -// NewGetReactionsParameters initializes the inputs to get reactions to an item. -func NewGetReactionsParameters() GetReactionsParameters { - return GetReactionsParameters{ - Full: false, - } -} - -type getReactionsResponseFull struct { - Type string - M struct { - Reactions []ItemReaction - } `json:"message"` - F struct { - Reactions []ItemReaction - } `json:"file"` - FC struct { - Reactions []ItemReaction - } `json:"comment"` - SlackResponse -} - -func (res getReactionsResponseFull) extractReactions() []ItemReaction { - switch res.Type { - case "message": - return res.M.Reactions - case "file": - return res.F.Reactions - case "file_comment": - return res.FC.Reactions - } - return []ItemReaction{} -} - -const ( - DEFAULT_REACTIONS_USER = "" - DEFAULT_REACTIONS_COUNT = 100 - DEFAULT_REACTIONS_PAGE = 1 - DEFAULT_REACTIONS_FULL = false -) - -// ListReactionsParameters is the inputs to find all reactions by a user. -type ListReactionsParameters struct { - User string - Count int - Page int - Full bool -} - -// NewListReactionsParameters initializes the inputs to find all reactions -// performed by a user. -func NewListReactionsParameters() ListReactionsParameters { - return ListReactionsParameters{ - User: DEFAULT_REACTIONS_USER, - Count: DEFAULT_REACTIONS_COUNT, - Page: DEFAULT_REACTIONS_PAGE, - Full: DEFAULT_REACTIONS_FULL, - } -} - -type listReactionsResponseFull struct { - Items []struct { - Type string - Channel string - M struct { - *Message - } `json:"message"` - F struct { - *File - Reactions []ItemReaction - } `json:"file"` - FC struct { - *Comment - Reactions []ItemReaction - } `json:"comment"` - } - Paging `json:"paging"` - SlackResponse -} - -func (res listReactionsResponseFull) extractReactedItems() []ReactedItem { - items := make([]ReactedItem, len(res.Items)) - for i, input := range res.Items { - item := ReactedItem{} - item.Type = input.Type - switch input.Type { - case "message": - item.Channel = input.Channel - item.Message = input.M.Message - item.Reactions = input.M.Reactions - case "file": - item.File = input.F.File - item.Reactions = input.F.Reactions - case "file_comment": - item.File = input.F.File - item.Comment = input.FC.Comment - item.Reactions = input.FC.Reactions - } - items[i] = item - } - return items -} - -// AddReaction adds a reaction emoji to a message, file or file comment. -func (api *Client) AddReaction(name string, item ItemRef) error { - return api.AddReactionContext(context.Background(), name, item) -} - -// AddReactionContext adds a reaction emoji to a message, file or file comment with a custom context. -func (api *Client) AddReactionContext(ctx context.Context, name string, item ItemRef) error { - values := url.Values{ - "token": {api.config.token}, - } - if name != "" { - values.Set("name", name) - } - if item.Channel != "" { - values.Set("channel", string(item.Channel)) - } - if item.Timestamp != "" { - values.Set("timestamp", string(item.Timestamp)) - } - if item.File != "" { - values.Set("file", string(item.File)) - } - if item.Comment != "" { - values.Set("file_comment", string(item.Comment)) - } - response := &SlackResponse{} - if err := post(ctx, "reactions.add", values, response, api.debug); err != nil { - return err - } - if !response.Ok { - return errors.New(response.Error) - } - return nil -} - -// RemoveReaction removes a reaction emoji from a message, file or file comment. -func (api *Client) RemoveReaction(name string, item ItemRef) error { - return api.RemoveReactionContext(context.Background(), name, item) -} - -// RemoveReactionContext removes a reaction emoji from a message, file or file comment with a custom context. -func (api *Client) RemoveReactionContext(ctx context.Context, name string, item ItemRef) error { - values := url.Values{ - "token": {api.config.token}, - } - if name != "" { - values.Set("name", name) - } - if item.Channel != "" { - values.Set("channel", string(item.Channel)) - } - if item.Timestamp != "" { - values.Set("timestamp", string(item.Timestamp)) - } - if item.File != "" { - values.Set("file", string(item.File)) - } - if item.Comment != "" { - values.Set("file_comment", string(item.Comment)) - } - response := &SlackResponse{} - if err := post(ctx, "reactions.remove", values, response, api.debug); err != nil { - return err - } - if !response.Ok { - return errors.New(response.Error) - } - return nil -} - -// GetReactions returns details about the reactions on an item. -func (api *Client) GetReactions(item ItemRef, params GetReactionsParameters) ([]ItemReaction, error) { - return api.GetReactionsContext(context.Background(), item, params) -} - -// GetReactionsContext returns details about the reactions on an item with a custom context -func (api *Client) GetReactionsContext(ctx context.Context, item ItemRef, params GetReactionsParameters) ([]ItemReaction, error) { - values := url.Values{ - "token": {api.config.token}, - } - if item.Channel != "" { - values.Set("channel", string(item.Channel)) - } - if item.Timestamp != "" { - values.Set("timestamp", string(item.Timestamp)) - } - if item.File != "" { - values.Set("file", string(item.File)) - } - if item.Comment != "" { - values.Set("file_comment", string(item.Comment)) - } - if params.Full != DEFAULT_REACTIONS_FULL { - values.Set("full", strconv.FormatBool(params.Full)) - } - response := &getReactionsResponseFull{} - if err := post(ctx, "reactions.get", values, response, api.debug); err != nil { - return nil, err - } - if !response.Ok { - return nil, errors.New(response.Error) - } - return response.extractReactions(), nil -} - -// ListReactions returns information about the items a user reacted to. -func (api *Client) ListReactions(params ListReactionsParameters) ([]ReactedItem, *Paging, error) { - return api.ListReactionsContext(context.Background(), params) -} - -// ListReactionsContext returns information about the items a user reacted to with a custom context. -func (api *Client) ListReactionsContext(ctx context.Context, params ListReactionsParameters) ([]ReactedItem, *Paging, error) { - values := url.Values{ - "token": {api.config.token}, - } - if params.User != DEFAULT_REACTIONS_USER { - values.Add("user", params.User) - } - if params.Count != DEFAULT_REACTIONS_COUNT { - values.Add("count", strconv.Itoa(params.Count)) - } - if params.Page != DEFAULT_REACTIONS_PAGE { - values.Add("page", strconv.Itoa(params.Page)) - } - if params.Full != DEFAULT_REACTIONS_FULL { - values.Add("full", strconv.FormatBool(params.Full)) - } - response := &listReactionsResponseFull{} - err := post(ctx, "reactions.list", values, response, api.debug) - if err != nil { - return nil, nil, err - } - if !response.Ok { - return nil, nil, errors.New(response.Error) - } - return response.extractReactedItems(), &response.Paging, nil -} |