summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/nlopes/slack/conversation.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/nlopes/slack/conversation.go')
-rw-r--r--vendor/github.com/nlopes/slack/conversation.go620
1 files changed, 0 insertions, 620 deletions
diff --git a/vendor/github.com/nlopes/slack/conversation.go b/vendor/github.com/nlopes/slack/conversation.go
deleted file mode 100644
index 1e4a61f1..00000000
--- a/vendor/github.com/nlopes/slack/conversation.go
+++ /dev/null
@@ -1,620 +0,0 @@
-package slack
-
-import (
- "context"
- "net/url"
- "strconv"
- "strings"
-)
-
-// Conversation is the foundation for IM and BaseGroupConversation
-type Conversation struct {
- ID string `json:"id"`
- Created JSONTime `json:"created"`
- IsOpen bool `json:"is_open"`
- LastRead string `json:"last_read,omitempty"`
- Latest *Message `json:"latest,omitempty"`
- UnreadCount int `json:"unread_count,omitempty"`
- UnreadCountDisplay int `json:"unread_count_display,omitempty"`
- IsGroup bool `json:"is_group"`
- IsShared bool `json:"is_shared"`
- IsIM bool `json:"is_im"`
- IsExtShared bool `json:"is_ext_shared"`
- IsOrgShared bool `json:"is_org_shared"`
- IsPendingExtShared bool `json:"is_pending_ext_shared"`
- IsPrivate bool `json:"is_private"`
- IsMpIM bool `json:"is_mpim"`
- Unlinked int `json:"unlinked"`
- NameNormalized string `json:"name_normalized"`
- NumMembers int `json:"num_members"`
- Priority float64 `json:"priority"`
- User string `json:"user"`
-
- // TODO support pending_shared
- // TODO support previous_names
-}
-
-// GroupConversation is the foundation for Group and Channel
-type GroupConversation struct {
- Conversation
- Name string `json:"name"`
- Creator string `json:"creator"`
- IsArchived bool `json:"is_archived"`
- Members []string `json:"members"`
- Topic Topic `json:"topic"`
- Purpose Purpose `json:"purpose"`
-}
-
-// Topic contains information about the topic
-type Topic struct {
- Value string `json:"value"`
- Creator string `json:"creator"`
- LastSet JSONTime `json:"last_set"`
-}
-
-// Purpose contains information about the purpose
-type Purpose struct {
- Value string `json:"value"`
- Creator string `json:"creator"`
- LastSet JSONTime `json:"last_set"`
-}
-
-type GetUsersInConversationParameters struct {
- ChannelID string
- Cursor string
- Limit int
-}
-
-type GetConversationsForUserParameters struct {
- UserID string
- Cursor string
- Types []string
- Limit int
- ExcludeArchived bool
-}
-
-type responseMetaData struct {
- NextCursor string `json:"next_cursor"`
-}
-
-// GetUsersInConversation returns the list of users in a conversation
-func (api *Client) GetUsersInConversation(params *GetUsersInConversationParameters) ([]string, string, error) {
- return api.GetUsersInConversationContext(context.Background(), params)
-}
-
-// GetUsersInConversationContext returns the list of users in a conversation with a custom context
-func (api *Client) GetUsersInConversationContext(ctx context.Context, params *GetUsersInConversationParameters) ([]string, string, error) {
- values := url.Values{
- "token": {api.token},
- "channel": {params.ChannelID},
- }
- if params.Cursor != "" {
- values.Add("cursor", params.Cursor)
- }
- if params.Limit != 0 {
- values.Add("limit", strconv.Itoa(params.Limit))
- }
- response := struct {
- Members []string `json:"members"`
- ResponseMetaData responseMetaData `json:"response_metadata"`
- SlackResponse
- }{}
-
- err := api.postMethod(ctx, "conversations.members", values, &response)
- if err != nil {
- return nil, "", err
- }
-
- if err := response.Err(); err != nil {
- return nil, "", err
- }
-
- return response.Members, response.ResponseMetaData.NextCursor, nil
-}
-
-// GetConversationsForUser returns the list conversations for a given user
-func (api *Client) GetConversationsForUser(params *GetConversationsForUserParameters) (channels []Channel, nextCursor string, err error) {
- return api.GetConversationsForUserContext(context.Background(), params)
-}
-
-// GetConversationsForUserContext returns the list conversations for a given user with a custom context
-func (api *Client) GetConversationsForUserContext(ctx context.Context, params *GetConversationsForUserParameters) (channels []Channel, nextCursor string, err error) {
- values := url.Values{
- "token": {api.token},
- }
- if params.UserID != "" {
- values.Add("user", params.UserID)
- }
- if params.Cursor != "" {
- values.Add("cursor", params.Cursor)
- }
- if params.Limit != 0 {
- values.Add("limit", strconv.Itoa(params.Limit))
- }
- if params.Types != nil {
- values.Add("types", strings.Join(params.Types, ","))
- }
- if params.ExcludeArchived {
- values.Add("exclude_archived", "true")
- }
- response := struct {
- Channels []Channel `json:"channels"`
- ResponseMetaData responseMetaData `json:"response_metadata"`
- SlackResponse
- }{}
- err = api.postMethod(ctx, "users.conversations", values, &response)
- if err != nil {
- return nil, "", err
- }
-
- return response.Channels, response.ResponseMetaData.NextCursor, response.Err()
-}
-
-// ArchiveConversation archives a conversation
-func (api *Client) ArchiveConversation(channelID string) error {
- return api.ArchiveConversationContext(context.Background(), channelID)
-}
-
-// ArchiveConversationContext archives a conversation with a custom context
-func (api *Client) ArchiveConversationContext(ctx context.Context, channelID string) error {
- values := url.Values{
- "token": {api.token},
- "channel": {channelID},
- }
-
- response := SlackResponse{}
- err := api.postMethod(ctx, "conversations.archive", values, &response)
- if err != nil {
- return err
- }
-
- return response.Err()
-}
-
-// UnArchiveConversation reverses conversation archival
-func (api *Client) UnArchiveConversation(channelID string) error {
- return api.UnArchiveConversationContext(context.Background(), channelID)
-}
-
-// UnArchiveConversationContext reverses conversation archival with a custom context
-func (api *Client) UnArchiveConversationContext(ctx context.Context, channelID string) error {
- values := url.Values{
- "token": {api.token},
- "channel": {channelID},
- }
- response := SlackResponse{}
- err := api.postMethod(ctx, "conversations.unarchive", values, &response)
- if err != nil {
- return err
- }
-
- return response.Err()
-}
-
-// SetTopicOfConversation sets the topic for a conversation
-func (api *Client) SetTopicOfConversation(channelID, topic string) (*Channel, error) {
- return api.SetTopicOfConversationContext(context.Background(), channelID, topic)
-}
-
-// SetTopicOfConversationContext sets the topic for a conversation with a custom context
-func (api *Client) SetTopicOfConversationContext(ctx context.Context, channelID, topic string) (*Channel, error) {
- values := url.Values{
- "token": {api.token},
- "channel": {channelID},
- "topic": {topic},
- }
- response := struct {
- SlackResponse
- Channel *Channel `json:"channel"`
- }{}
- err := api.postMethod(ctx, "conversations.setTopic", values, &response)
- if err != nil {
- return nil, err
- }
-
- return response.Channel, response.Err()
-}
-
-// SetPurposeOfConversation sets the purpose for a conversation
-func (api *Client) SetPurposeOfConversation(channelID, purpose string) (*Channel, error) {
- return api.SetPurposeOfConversationContext(context.Background(), channelID, purpose)
-}
-
-// SetPurposeOfConversationContext sets the purpose for a conversation with a custom context
-func (api *Client) SetPurposeOfConversationContext(ctx context.Context, channelID, purpose string) (*Channel, error) {
- values := url.Values{
- "token": {api.token},
- "channel": {channelID},
- "purpose": {purpose},
- }
- response := struct {
- SlackResponse
- Channel *Channel `json:"channel"`
- }{}
-
- err := api.postMethod(ctx, "conversations.setPurpose", values, &response)
- if err != nil {
- return nil, err
- }
-
- return response.Channel, response.Err()
-}
-
-// RenameConversation renames a conversation
-func (api *Client) RenameConversation(channelID, channelName string) (*Channel, error) {
- return api.RenameConversationContext(context.Background(), channelID, channelName)
-}
-
-// RenameConversationContext renames a conversation with a custom context
-func (api *Client) RenameConversationContext(ctx context.Context, channelID, channelName string) (*Channel, error) {
- values := url.Values{
- "token": {api.token},
- "channel": {channelID},
- "name": {channelName},
- }
- response := struct {
- SlackResponse
- Channel *Channel `json:"channel"`
- }{}
-
- err := api.postMethod(ctx, "conversations.rename", values, &response)
- if err != nil {
- return nil, err
- }
-
- return response.Channel, response.Err()
-}
-
-// InviteUsersToConversation invites users to a channel
-func (api *Client) InviteUsersToConversation(channelID string, users ...string) (*Channel, error) {
- return api.InviteUsersToConversationContext(context.Background(), channelID, users...)
-}
-
-// InviteUsersToConversationContext invites users to a channel with a custom context
-func (api *Client) InviteUsersToConversationContext(ctx context.Context, channelID string, users ...string) (*Channel, error) {
- values := url.Values{
- "token": {api.token},
- "channel": {channelID},
- "users": {strings.Join(users, ",")},
- }
- response := struct {
- SlackResponse
- Channel *Channel `json:"channel"`
- }{}
-
- err := api.postMethod(ctx, "conversations.invite", values, &response)
- if err != nil {
- return nil, err
- }
-
- return response.Channel, response.Err()
-}
-
-// KickUserFromConversation removes a user from a conversation
-func (api *Client) KickUserFromConversation(channelID string, user string) error {
- return api.KickUserFromConversationContext(context.Background(), channelID, user)
-}
-
-// KickUserFromConversationContext removes a user from a conversation with a custom context
-func (api *Client) KickUserFromConversationContext(ctx context.Context, channelID string, user string) error {
- values := url.Values{
- "token": {api.token},
- "channel": {channelID},
- "user": {user},
- }
-
- response := SlackResponse{}
- err := api.postMethod(ctx, "conversations.kick", values, &response)
- if err != nil {
- return err
- }
-
- return response.Err()
-}
-
-// CloseConversation closes a direct message or multi-person direct message
-func (api *Client) CloseConversation(channelID string) (noOp bool, alreadyClosed bool, err error) {
- return api.CloseConversationContext(context.Background(), channelID)
-}
-
-// CloseConversationContext closes a direct message or multi-person direct message with a custom context
-func (api *Client) CloseConversationContext(ctx context.Context, channelID string) (noOp bool, alreadyClosed bool, err error) {
- values := url.Values{
- "token": {api.token},
- "channel": {channelID},
- }
- response := struct {
- SlackResponse
- NoOp bool `json:"no_op"`
- AlreadyClosed bool `json:"already_closed"`
- }{}
-
- err = api.postMethod(ctx, "conversations.close", values, &response)
- if err != nil {
- return false, false, err
- }
-
- return response.NoOp, response.AlreadyClosed, response.Err()
-}
-
-// CreateConversation initiates a public or private channel-based conversation
-func (api *Client) CreateConversation(channelName string, isPrivate bool) (*Channel, error) {
- return api.CreateConversationContext(context.Background(), channelName, isPrivate)
-}
-
-// CreateConversationContext initiates a public or private channel-based conversation with a custom context
-func (api *Client) CreateConversationContext(ctx context.Context, channelName string, isPrivate bool) (*Channel, error) {
- values := url.Values{
- "token": {api.token},
- "name": {channelName},
- "is_private": {strconv.FormatBool(isPrivate)},
- }
- response, err := api.channelRequest(ctx, "conversations.create", values)
- if err != nil {
- return nil, err
- }
-
- return &response.Channel, nil
-}
-
-// GetConversationInfo retrieves information about a conversation
-func (api *Client) GetConversationInfo(channelID string, includeLocale bool) (*Channel, error) {
- return api.GetConversationInfoContext(context.Background(), channelID, includeLocale)
-}
-
-// GetConversationInfoContext retrieves information about a conversation with a custom context
-func (api *Client) GetConversationInfoContext(ctx context.Context, channelID string, includeLocale bool) (*Channel, error) {
- values := url.Values{
- "token": {api.token},
- "channel": {channelID},
- "include_locale": {strconv.FormatBool(includeLocale)},
- }
- response, err := api.channelRequest(ctx, "conversations.info", values)
- if err != nil {
- return nil, err
- }
-
- return &response.Channel, response.Err()
-}
-
-// LeaveConversation leaves a conversation
-func (api *Client) LeaveConversation(channelID string) (bool, error) {
- return api.LeaveConversationContext(context.Background(), channelID)
-}
-
-// LeaveConversationContext leaves a conversation with a custom context
-func (api *Client) LeaveConversationContext(ctx context.Context, channelID string) (bool, error) {
- values := url.Values{
- "token": {api.token},
- "channel": {channelID},
- }
-
- response, err := api.channelRequest(ctx, "conversations.leave", values)
- if err != nil {
- return false, err
- }
-
- return response.NotInChannel, err
-}
-
-type GetConversationRepliesParameters struct {
- ChannelID string
- Timestamp string
- Cursor string
- Inclusive bool
- Latest string
- Limit int
- Oldest string
-}
-
-// GetConversationReplies retrieves a thread of messages posted to a conversation
-func (api *Client) GetConversationReplies(params *GetConversationRepliesParameters) (msgs []Message, hasMore bool, nextCursor string, err error) {
- return api.GetConversationRepliesContext(context.Background(), params)
-}
-
-// GetConversationRepliesContext retrieves a thread of messages posted to a conversation with a custom context
-func (api *Client) GetConversationRepliesContext(ctx context.Context, params *GetConversationRepliesParameters) (msgs []Message, hasMore bool, nextCursor string, err error) {
- values := url.Values{
- "token": {api.token},
- "channel": {params.ChannelID},
- "ts": {params.Timestamp},
- }
- if params.Cursor != "" {
- values.Add("cursor", params.Cursor)
- }
- if params.Latest != "" {
- values.Add("latest", params.Latest)
- }
- if params.Limit != 0 {
- values.Add("limit", strconv.Itoa(params.Limit))
- }
- if params.Oldest != "" {
- values.Add("oldest", params.Oldest)
- }
- if params.Inclusive {
- values.Add("inclusive", "1")
- } else {
- values.Add("inclusive", "0")
- }
- response := struct {
- SlackResponse
- HasMore bool `json:"has_more"`
- ResponseMetaData struct {
- NextCursor string `json:"next_cursor"`
- } `json:"response_metadata"`
- Messages []Message `json:"messages"`
- }{}
-
- err = api.postMethod(ctx, "conversations.replies", values, &response)
- if err != nil {
- return nil, false, "", err
- }
-
- return response.Messages, response.HasMore, response.ResponseMetaData.NextCursor, response.Err()
-}
-
-type GetConversationsParameters struct {
- Cursor string
- ExcludeArchived string
- Limit int
- Types []string
-}
-
-// GetConversations returns the list of channels in a Slack team
-func (api *Client) GetConversations(params *GetConversationsParameters) (channels []Channel, nextCursor string, err error) {
- return api.GetConversationsContext(context.Background(), params)
-}
-
-// GetConversationsContext returns the list of channels in a Slack team with a custom context
-func (api *Client) GetConversationsContext(ctx context.Context, params *GetConversationsParameters) (channels []Channel, nextCursor string, err error) {
- values := url.Values{
- "token": {api.token},
- "exclude_archived": {params.ExcludeArchived},
- }
- if params.Cursor != "" {
- values.Add("cursor", params.Cursor)
- }
- if params.Limit != 0 {
- values.Add("limit", strconv.Itoa(params.Limit))
- }
- if params.Types != nil {
- values.Add("types", strings.Join(params.Types, ","))
- }
- response := struct {
- Channels []Channel `json:"channels"`
- ResponseMetaData responseMetaData `json:"response_metadata"`
- SlackResponse
- }{}
-
- err = api.postMethod(ctx, "conversations.list", values, &response)
- if err != nil {
- return nil, "", err
- }
-
- return response.Channels, response.ResponseMetaData.NextCursor, response.Err()
-}
-
-type OpenConversationParameters struct {
- ChannelID string
- ReturnIM bool
- Users []string
-}
-
-// OpenConversation opens or resumes a direct message or multi-person direct message
-func (api *Client) OpenConversation(params *OpenConversationParameters) (*Channel, bool, bool, error) {
- return api.OpenConversationContext(context.Background(), params)
-}
-
-// OpenConversationContext opens or resumes a direct message or multi-person direct message with a custom context
-func (api *Client) OpenConversationContext(ctx context.Context, params *OpenConversationParameters) (*Channel, bool, bool, error) {
- values := url.Values{
- "token": {api.token},
- "return_im": {strconv.FormatBool(params.ReturnIM)},
- }
- if params.ChannelID != "" {
- values.Add("channel", params.ChannelID)
- }
- if params.Users != nil {
- values.Add("users", strings.Join(params.Users, ","))
- }
- response := struct {
- Channel *Channel `json:"channel"`
- NoOp bool `json:"no_op"`
- AlreadyOpen bool `json:"already_open"`
- SlackResponse
- }{}
-
- err := api.postMethod(ctx, "conversations.open", values, &response)
- if err != nil {
- return nil, false, false, err
- }
-
- return response.Channel, response.NoOp, response.AlreadyOpen, response.Err()
-}
-
-// JoinConversation joins an existing conversation
-func (api *Client) JoinConversation(channelID string) (*Channel, string, []string, error) {
- return api.JoinConversationContext(context.Background(), channelID)
-}
-
-// JoinConversationContext joins an existing conversation with a custom context
-func (api *Client) JoinConversationContext(ctx context.Context, channelID string) (*Channel, string, []string, error) {
- values := url.Values{"token": {api.token}, "channel": {channelID}}
- response := struct {
- Channel *Channel `json:"channel"`
- Warning string `json:"warning"`
- ResponseMetaData *struct {
- Warnings []string `json:"warnings"`
- } `json:"response_metadata"`
- SlackResponse
- }{}
-
- err := api.postMethod(ctx, "conversations.join", values, &response)
- if err != nil {
- return nil, "", nil, err
- }
- if response.Err() != nil {
- return nil, "", nil, response.Err()
- }
- var warnings []string
- if response.ResponseMetaData != nil {
- warnings = response.ResponseMetaData.Warnings
- }
- return response.Channel, response.Warning, warnings, nil
-}
-
-type GetConversationHistoryParameters struct {
- ChannelID string
- Cursor string
- Inclusive bool
- Latest string
- Limit int
- Oldest string
-}
-
-type GetConversationHistoryResponse struct {
- SlackResponse
- HasMore bool `json:"has_more"`
- PinCount int `json:"pin_count"`
- Latest string `json:"latest"`
- ResponseMetaData struct {
- NextCursor string `json:"next_cursor"`
- } `json:"response_metadata"`
- Messages []Message `json:"messages"`
-}
-
-// GetConversationHistory joins an existing conversation
-func (api *Client) GetConversationHistory(params *GetConversationHistoryParameters) (*GetConversationHistoryResponse, error) {
- return api.GetConversationHistoryContext(context.Background(), params)
-}
-
-// GetConversationHistoryContext joins an existing conversation with a custom context
-func (api *Client) GetConversationHistoryContext(ctx context.Context, params *GetConversationHistoryParameters) (*GetConversationHistoryResponse, error) {
- values := url.Values{"token": {api.token}, "channel": {params.ChannelID}}
- if params.Cursor != "" {
- values.Add("cursor", params.Cursor)
- }
- if params.Inclusive {
- values.Add("inclusive", "1")
- } else {
- values.Add("inclusive", "0")
- }
- if params.Latest != "" {
- values.Add("latest", params.Latest)
- }
- if params.Limit != 0 {
- values.Add("limit", strconv.Itoa(params.Limit))
- }
- if params.Oldest != "" {
- values.Add("oldest", params.Oldest)
- }
-
- response := GetConversationHistoryResponse{}
-
- err := api.postMethod(ctx, "conversations.history", values, &response)
- if err != nil {
- return nil, err
- }
-
- return &response, response.Err()
-}