summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/slack-go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/slack-go')
-rw-r--r--vendor/github.com/slack-go/slack/block.go17
-rw-r--r--vendor/github.com/slack-go/slack/block_conv.go2
-rw-r--r--vendor/github.com/slack-go/slack/block_element.go19
-rw-r--r--vendor/github.com/slack-go/slack/block_rich_text.go383
-rw-r--r--vendor/github.com/slack-go/slack/chat.go7
-rw-r--r--vendor/github.com/slack-go/slack/messages.go32
-rw-r--r--vendor/github.com/slack-go/slack/misc.go10
-rw-r--r--vendor/github.com/slack-go/slack/oauth.go22
-rw-r--r--vendor/github.com/slack-go/slack/users.go4
-rw-r--r--vendor/github.com/slack-go/slack/webhooks.go3
10 files changed, 479 insertions, 20 deletions
diff --git a/vendor/github.com/slack-go/slack/block.go b/vendor/github.com/slack-go/slack/block.go
index 3686db85..240f5527 100644
--- a/vendor/github.com/slack-go/slack/block.go
+++ b/vendor/github.com/slack-go/slack/block.go
@@ -9,14 +9,15 @@ package slack
type MessageBlockType string
const (
- MBTSection MessageBlockType = "section"
- MBTDivider MessageBlockType = "divider"
- MBTImage MessageBlockType = "image"
- MBTAction MessageBlockType = "actions"
- MBTContext MessageBlockType = "context"
- MBTFile MessageBlockType = "file"
- MBTInput MessageBlockType = "input"
- MBTHeader MessageBlockType = "header"
+ MBTSection MessageBlockType = "section"
+ MBTDivider MessageBlockType = "divider"
+ MBTImage MessageBlockType = "image"
+ MBTAction MessageBlockType = "actions"
+ MBTContext MessageBlockType = "context"
+ MBTFile MessageBlockType = "file"
+ MBTInput MessageBlockType = "input"
+ MBTHeader MessageBlockType = "header"
+ MBTRichText MessageBlockType = "rich_text"
)
// Block defines an interface all block types should implement
diff --git a/vendor/github.com/slack-go/slack/block_conv.go b/vendor/github.com/slack-go/slack/block_conv.go
index 6936700a..c5378b60 100644
--- a/vendor/github.com/slack-go/slack/block_conv.go
+++ b/vendor/github.com/slack-go/slack/block_conv.go
@@ -65,6 +65,8 @@ func (b *Blocks) UnmarshalJSON(data []byte) error {
block = &ImageBlock{}
case "input":
block = &InputBlock{}
+ case "rich_text":
+ block = &RichTextBlock{}
case "section":
block = &SectionBlock{}
default:
diff --git a/vendor/github.com/slack-go/slack/block_element.go b/vendor/github.com/slack-go/slack/block_element.go
index bf068440..21abb018 100644
--- a/vendor/github.com/slack-go/slack/block_element.go
+++ b/vendor/github.com/slack-go/slack/block_element.go
@@ -389,13 +389,18 @@ func NewTimePickerBlockElement(actionID string) *TimePickerBlockElement {
//
// More Information: https://api.slack.com/reference/block-kit/block-elements#input
type PlainTextInputBlockElement struct {
- Type MessageElementType `json:"type"`
- ActionID string `json:"action_id,omitempty"`
- Placeholder *TextBlockObject `json:"placeholder,omitempty"`
- InitialValue string `json:"initial_value,omitempty"`
- Multiline bool `json:"multiline,omitempty"`
- MinLength int `json:"min_length,omitempty"`
- MaxLength int `json:"max_length,omitempty"`
+ Type MessageElementType `json:"type"`
+ ActionID string `json:"action_id,omitempty"`
+ Placeholder *TextBlockObject `json:"placeholder,omitempty"`
+ InitialValue string `json:"initial_value,omitempty"`
+ Multiline bool `json:"multiline,omitempty"`
+ MinLength int `json:"min_length,omitempty"`
+ MaxLength int `json:"max_length,omitempty"`
+ DispatchActionConfig *DispatchActionConfig `json:"dispatch_action_config,omitempty"`
+}
+
+type DispatchActionConfig struct {
+ TriggerActionsOn []string `json:"trigger_actions_on,omitempty"`
}
// ElementType returns the type of the Element
diff --git a/vendor/github.com/slack-go/slack/block_rich_text.go b/vendor/github.com/slack-go/slack/block_rich_text.go
new file mode 100644
index 00000000..281db213
--- /dev/null
+++ b/vendor/github.com/slack-go/slack/block_rich_text.go
@@ -0,0 +1,383 @@
+package slack
+
+import (
+ "encoding/json"
+)
+
+// RichTextBlock defines a new block of type rich_text.
+// More Information: https://api.slack.com/changelog/2019-09-what-they-see-is-what-you-get-and-more-and-less
+type RichTextBlock struct {
+ Type MessageBlockType `json:"type"`
+ BlockID string `json:"block_id,omitempty"`
+ Elements []RichTextElement `json:"elements"`
+}
+
+func (b RichTextBlock) BlockType() MessageBlockType {
+ return b.Type
+}
+
+func (e *RichTextBlock) UnmarshalJSON(b []byte) error {
+ var raw struct {
+ Type MessageBlockType `json:"type"`
+ BlockID string `json:"block_id"`
+ RawElements []json.RawMessage `json:"elements"`
+ }
+ if string(b) == "{}" {
+ return nil
+ }
+ if err := json.Unmarshal(b, &raw); err != nil {
+ return err
+ }
+ elems := make([]RichTextElement, 0, len(raw.RawElements))
+ for _, r := range raw.RawElements {
+ var s struct {
+ Type RichTextElementType `json:"type"`
+ }
+ if err := json.Unmarshal(r, &s); err != nil {
+ return err
+ }
+ var elem RichTextElement
+ switch s.Type {
+ case RTESection:
+ elem = &RichTextSection{}
+ default:
+ elems = append(elems, &RichTextUnknown{
+ Type: s.Type,
+ Raw: string(r),
+ })
+ continue
+ }
+ if err := json.Unmarshal(r, &elem); err != nil {
+ return err
+ }
+ elems = append(elems, elem)
+ }
+ *e = RichTextBlock{
+ Type: raw.Type,
+ BlockID: raw.BlockID,
+ Elements: elems,
+ }
+ return nil
+}
+
+// NewRichTextBlock returns a new instance of RichText Block.
+func NewRichTextBlock(blockID string, elements ...RichTextElement) *RichTextBlock {
+ return &RichTextBlock{
+ Type: MBTRichText,
+ BlockID: blockID,
+ Elements: elements,
+ }
+}
+
+type RichTextElementType string
+
+type RichTextElement interface {
+ RichTextElementType() RichTextElementType
+}
+
+const (
+ RTEList RichTextElementType = "rich_text_list"
+ RTEPreformatted RichTextElementType = "rich_text_preformatted"
+ RTEQuote RichTextElementType = "rich_text_quote"
+ RTESection RichTextElementType = "rich_text_section"
+ RTEUnknown RichTextElementType = "rich_text_unknown"
+)
+
+type RichTextUnknown struct {
+ Type RichTextElementType
+ Raw string
+}
+
+func (u RichTextUnknown) RichTextElementType() RichTextElementType {
+ return u.Type
+}
+
+type RichTextSection struct {
+ Type RichTextElementType `json:"type"`
+ Elements []RichTextSectionElement `json:"elements"`
+}
+
+// ElementType returns the type of the Element
+func (s RichTextSection) RichTextElementType() RichTextElementType {
+ return s.Type
+}
+
+func (e *RichTextSection) UnmarshalJSON(b []byte) error {
+ var raw struct {
+ RawElements []json.RawMessage `json:"elements"`
+ }
+ if string(b) == "{}" {
+ return nil
+ }
+ if err := json.Unmarshal(b, &raw); err != nil {
+ return err
+ }
+ elems := make([]RichTextSectionElement, 0, len(raw.RawElements))
+ for _, r := range raw.RawElements {
+ var s struct {
+ Type RichTextSectionElementType `json:"type"`
+ }
+ if err := json.Unmarshal(r, &s); err != nil {
+ return err
+ }
+ var elem RichTextSectionElement
+ switch s.Type {
+ case RTSEText:
+ elem = &RichTextSectionTextElement{}
+ case RTSEChannel:
+ elem = &RichTextSectionChannelElement{}
+ case RTSEUser:
+ elem = &RichTextSectionUserElement{}
+ case RTSEEmoji:
+ elem = &RichTextSectionEmojiElement{}
+ case RTSELink:
+ elem = &RichTextSectionLinkElement{}
+ case RTSETeam:
+ elem = &RichTextSectionTeamElement{}
+ case RTSEUserGroup:
+ elem = &RichTextSectionUserGroupElement{}
+ case RTSEDate:
+ elem = &RichTextSectionDateElement{}
+ case RTSEBroadcast:
+ elem = &RichTextSectionBroadcastElement{}
+ case RTSEColor:
+ elem = &RichTextSectionColorElement{}
+ default:
+ elems = append(elems, &RichTextSectionUnknownElement{
+ Type: s.Type,
+ Raw: string(r),
+ })
+ continue
+ }
+ if err := json.Unmarshal(r, elem); err != nil {
+ return err
+ }
+ elems = append(elems, elem)
+ }
+ *e = RichTextSection{
+ Type: RTESection,
+ Elements: elems,
+ }
+ return nil
+}
+
+// NewRichTextSectionBlockElement .
+func NewRichTextSection(elements ...RichTextSectionElement) *RichTextSection {
+ return &RichTextSection{
+ Type: RTESection,
+ Elements: elements,
+ }
+}
+
+type RichTextSectionElementType string
+
+const (
+ RTSEBroadcast RichTextSectionElementType = "broadcast"
+ RTSEChannel RichTextSectionElementType = "channel"
+ RTSEColor RichTextSectionElementType = "color"
+ RTSEDate RichTextSectionElementType = "date"
+ RTSEEmoji RichTextSectionElementType = "emoji"
+ RTSELink RichTextSectionElementType = "link"
+ RTSETeam RichTextSectionElementType = "team"
+ RTSEText RichTextSectionElementType = "text"
+ RTSEUser RichTextSectionElementType = "user"
+ RTSEUserGroup RichTextSectionElementType = "usergroup"
+
+ RTSEUnknown RichTextSectionElementType = "unknown"
+)
+
+type RichTextSectionElement interface {
+ RichTextSectionElementType() RichTextSectionElementType
+}
+
+type RichTextSectionTextStyle struct {
+ Bold bool `json:"bold,omitempty"`
+ Italic bool `json:"italic,omitempty"`
+ Strike bool `json:"strike,omitempty"`
+ Code bool `json:"code,omitempty"`
+}
+
+type RichTextSectionTextElement struct {
+ Type RichTextSectionElementType `json:"type"`
+ Text string `json:"text"`
+ Style *RichTextSectionTextStyle `json:"style,omitempty"`
+}
+
+func (r RichTextSectionTextElement) RichTextSectionElementType() RichTextSectionElementType {
+ return r.Type
+}
+
+func NewRichTextSectionTextElement(text string, style *RichTextSectionTextStyle) *RichTextSectionTextElement {
+ return &RichTextSectionTextElement{
+ Type: RTSEText,
+ Text: text,
+ Style: style,
+ }
+}
+
+type RichTextSectionChannelElement struct {
+ Type RichTextSectionElementType `json:"type"`
+ ChannelID string `json:"channel_id"`
+ Style *RichTextSectionTextStyle `json:"style,omitempty"`
+}
+
+func (r RichTextSectionChannelElement) RichTextSectionElementType() RichTextSectionElementType {
+ return r.Type
+}
+
+func NewRichTextSectionChannelElement(channelID string, style *RichTextSectionTextStyle) *RichTextSectionChannelElement {
+ return &RichTextSectionChannelElement{
+ Type: RTSEText,
+ ChannelID: channelID,
+ Style: style,
+ }
+}
+
+type RichTextSectionUserElement struct {
+ Type RichTextSectionElementType `json:"type"`
+ UserID string `json:"user_id"`
+ Style *RichTextSectionTextStyle `json:"style,omitempty"`
+}
+
+func (r RichTextSectionUserElement) RichTextSectionElementType() RichTextSectionElementType {
+ return r.Type
+}
+
+func NewRichTextSectionUserElement(userID string, style *RichTextSectionTextStyle) *RichTextSectionUserElement {
+ return &RichTextSectionUserElement{
+ Type: RTSEUser,
+ UserID: userID,
+ Style: style,
+ }
+}
+
+type RichTextSectionEmojiElement struct {
+ Type RichTextSectionElementType `json:"type"`
+ Name string `json:"name"`
+ SkinTone int `json:"skin_tone"`
+ Style *RichTextSectionTextStyle `json:"style,omitempty"`
+}
+
+func (r RichTextSectionEmojiElement) RichTextSectionElementType() RichTextSectionElementType {
+ return r.Type
+}
+
+func NewRichTextSectionEmojiElement(name string, skinTone int, style *RichTextSectionTextStyle) *RichTextSectionEmojiElement {
+ return &RichTextSectionEmojiElement{
+ Type: RTSEEmoji,
+ Name: name,
+ SkinTone: skinTone,
+ Style: style,
+ }
+}
+
+type RichTextSectionLinkElement struct {
+ Type RichTextSectionElementType `json:"type"`
+ URL string `json:"url"`
+ Text string `json:"text"`
+ Style *RichTextSectionTextStyle `json:"style,omitempty"`
+}
+
+func (r RichTextSectionLinkElement) RichTextSectionElementType() RichTextSectionElementType {
+ return r.Type
+}
+
+func NewRichTextSectionLinkElement(url, text string, style *RichTextSectionTextStyle) *RichTextSectionLinkElement {
+ return &RichTextSectionLinkElement{
+ Type: RTSELink,
+ URL: url,
+ Text: text,
+ Style: style,
+ }
+}
+
+type RichTextSectionTeamElement struct {
+ Type RichTextSectionElementType `json:"type"`
+ TeamID string `json:"team_id"`
+ Style *RichTextSectionTextStyle `json:"style.omitempty"`
+}
+
+func (r RichTextSectionTeamElement) RichTextSectionElementType() RichTextSectionElementType {
+ return r.Type
+}
+
+func NewRichTextSectionTeamElement(teamID string, style *RichTextSectionTextStyle) *RichTextSectionTeamElement {
+ return &RichTextSectionTeamElement{
+ Type: RTSETeam,
+ TeamID: teamID,
+ Style: style,
+ }
+}
+
+type RichTextSectionUserGroupElement struct {
+ Type RichTextSectionElementType `json:"type"`
+ UsergroupID string `json:"usergroup_id"`
+}
+
+func (r RichTextSectionUserGroupElement) RichTextSectionElementType() RichTextSectionElementType {
+ return r.Type
+}
+
+func NewRichTextSectionUserGroupElement(usergroupID string) *RichTextSectionUserGroupElement {
+ return &RichTextSectionUserGroupElement{
+ Type: RTSEUserGroup,
+ UsergroupID: usergroupID,
+ }
+}
+
+type RichTextSectionDateElement struct {
+ Type RichTextSectionElementType `json:"type"`
+ Timestamp string `json:"timestamp"`
+}
+
+func (r RichTextSectionDateElement) RichTextSectionElementType() RichTextSectionElementType {
+ return r.Type
+}
+
+func NewRichTextSectionDateElement(timestamp string) *RichTextSectionDateElement {
+ return &RichTextSectionDateElement{
+ Type: RTSEDate,
+ Timestamp: timestamp,
+ }
+}
+
+type RichTextSectionBroadcastElement struct {
+ Type RichTextSectionElementType `json:"type"`
+ Range string `json:"range"`
+}
+
+func (r RichTextSectionBroadcastElement) RichTextSectionElementType() RichTextSectionElementType {
+ return r.Type
+}
+
+func NewRichTextSectionBroadcastElement(rangeStr string) *RichTextSectionBroadcastElement {
+ return &RichTextSectionBroadcastElement{
+ Type: RTSEBroadcast,
+ Range: rangeStr,
+ }
+}
+
+type RichTextSectionColorElement struct {
+ Type RichTextSectionElementType `json:"type"`
+ Value string `json:"value"`
+}
+
+func (r RichTextSectionColorElement) RichTextSectionElementType() RichTextSectionElementType {
+ return r.Type
+}
+
+func NewRichTextSectionColorElement(value string) *RichTextSectionColorElement {
+ return &RichTextSectionColorElement{
+ Type: RTSEColor,
+ Value: value,
+ }
+}
+
+type RichTextSectionUnknownElement struct {
+ Type RichTextSectionElementType `json:"type"`
+ Raw string
+}
+
+func (r RichTextSectionUnknownElement) RichTextSectionElementType() RichTextSectionElementType {
+ return r.Type
+}
diff --git a/vendor/github.com/slack-go/slack/chat.go b/vendor/github.com/slack-go/slack/chat.go
index 2a1e452e..493b65b6 100644
--- a/vendor/github.com/slack-go/slack/chat.go
+++ b/vendor/github.com/slack-go/slack/chat.go
@@ -188,7 +188,12 @@ func (api *Client) UpdateMessageContext(ctx context.Context, channelID, timestam
// UnfurlMessage unfurls a message in a channel
func (api *Client) UnfurlMessage(channelID, timestamp string, unfurls map[string]Attachment, options ...MsgOption) (string, string, string, error) {
- return api.SendMessageContext(context.Background(), channelID, MsgOptionUnfurl(timestamp, unfurls), MsgOptionCompose(options...))
+ return api.UnfurlMessageContext(context.Background(), channelID, timestamp, unfurls, options...)
+}
+
+// UnfurlMessageContext unfurls a message in a channel with a custom context
+func (api *Client) UnfurlMessageContext(ctx context.Context, channelID, timestamp string, unfurls map[string]Attachment, options ...MsgOption) (string, string, string, error) {
+ return api.SendMessageContext(ctx, channelID, MsgOptionUnfurl(timestamp, unfurls), MsgOptionCompose(options...))
}
// UnfurlMessageWithAuthURL sends an unfurl request containing an
diff --git a/vendor/github.com/slack-go/slack/messages.go b/vendor/github.com/slack-go/slack/messages.go
index 999df5d9..2f05f6d7 100644
--- a/vendor/github.com/slack-go/slack/messages.go
+++ b/vendor/github.com/slack-go/slack/messages.go
@@ -19,6 +19,38 @@ type Message struct {
PreviousMessage *Msg `json:"previous_message,omitempty"`
}
+// Msg SubTypes (https://api.slack.com/events/message)
+const (
+ MsgSubTypeBotMessage = "bot_message" // [Events API, RTM] A message was posted by an integration
+ MsgSubTypeMeMessage = "me_message" // [Events API, RTM] A /me message was sent
+ MsgSubTypeMessageChanged = "message_changed" // [Events API, RTM] A message was changed
+ MsgSubTypeMessageDeleted = "message_deleted" // [Events API, RTM] A message was deleted
+ MsgSubTypeMessageReplied = "message_replied" // [Events API, RTM] A message thread received a reply
+ MsgSubTypeReplyBroadcast = "reply_broadcast" // @Deprecated (No longer served) A message thread's reply was broadcast to a channel
+ MsgSubTypeThreadBroadcast = "thread_broadcast" // [Events API, RTM] A message thread's reply was broadcast to a channel
+ MsgSubTypeChannelJoin = "channel_join" // [Events API, RTM] A member joined a channel
+ MsgSubTypeChannelLeave = "channel_leave" // [Events API, RTM] A member left a channel
+ MsgSubTypeChannelTopic = "channel_topic" // [Events API, RTM] A channel topic was updated
+ MsgSubTypeChannelPurpose = "channel_purpose" // [Events API, RTM] A channel purpose was updated
+ MsgSubTypeChannelName = "channel_name" // [Events API, RTM] A channel was renamed
+ MsgSubTypeChannelArchive = "channel_archive" // [Events API, RTM] A channel was archived
+ MsgSubTypeChannelUnarchive = "channel_unarchive" // [Events API, RTM] A channel was unarchived
+ MsgSubTypeGroupJoin = "group_join" // [RTM] A member joined a group
+ MsgSubTypeGroupLeave = "group_leave" // [RTM] A member left a group
+ MsgSubTypeGroupTopic = "group_topic" // [RTM] A group topic was updated
+ MsgSubTypeGroupPurpose = "group_purpose" // [RTM] A group purpose was updated
+ MsgSubTypeGroupName = "group_name" // [RTM] A group was renamed
+ MsgSubTypeGroupArchive = "group_archive" // [RTM] A group was archived
+ MsgSubTypeGroupUnarchive = "group_unarchive" // [RTM] A group was unarchived
+ MsgSubTypeFileShare = "file_share" // [Events API, RTM] A file was shared into a channel
+ MsgSubTypeFileComment = "file_comment" // [RTM] A comment was added to a file
+ MsgSubTypeGileMention = "file_mention" // [RTM] A file was mentioned in a channel
+ MsgSubTypePinnedItem = "pinned_item" // [RTM] An item was pinned in a channel
+ MsgSubTypeUnpinnedItem = "unpinned_item" // [RTM] An item was unpinned from a channel
+ MsgSubTypeEkmAccessDenied = "ekm_access_denied" // [Events API, RTM] Message content redacted due to Enterprise Key Management (EKM)
+ MsgSubTypeChannelPostingPermissions = "channel_posting_permissions" // [Events API, RTM] The posting permissions for a channel changed
+)
+
// Msg contains information about a slack message
type Msg struct {
// Basic Message
diff --git a/vendor/github.com/slack-go/slack/misc.go b/vendor/github.com/slack-go/slack/misc.go
index 8c50305b..5272e7c4 100644
--- a/vendor/github.com/slack-go/slack/misc.go
+++ b/vendor/github.com/slack-go/slack/misc.go
@@ -41,9 +41,17 @@ func (t SlackResponse) Err() error {
return nil
}
- return errors.New(t.Error)
+ return SlackErrorResponse{Err: t.Error, ResponseMetadata: t.ResponseMetadata}
}
+// SlackErrorResponse brings along the metadata of errors returned by the Slack API.
+type SlackErrorResponse struct {
+ Err string
+ ResponseMetadata ResponseMetadata
+}
+
+func (r SlackErrorResponse) Error() string { return r.Err }
+
// RateLimitedError represents the rate limit respond from slack
type RateLimitedError struct {
RetryAfter time.Duration
diff --git a/vendor/github.com/slack-go/slack/oauth.go b/vendor/github.com/slack-go/slack/oauth.go
index 707ccc6b..d9aca5f3 100644
--- a/vendor/github.com/slack-go/slack/oauth.go
+++ b/vendor/github.com/slack-go/slack/oauth.go
@@ -42,6 +42,8 @@ type OAuthV2Response struct {
IncomingWebhook OAuthResponseIncomingWebhook `json:"incoming_webhook"`
Enterprise OAuthV2ResponseEnterprise `json:"enterprise"`
AuthedUser OAuthV2ResponseAuthedUser `json:"authed_user"`
+ RefreshToken string `json:"refresh_token"`
+ ExpiresIn int `json:"expires_in"`
SlackResponse
}
@@ -132,3 +134,23 @@ func GetOAuthV2ResponseContext(ctx context.Context, client httpClient, clientID,
}
return response, response.Err()
}
+
+// RefreshOAuthV2AccessContext with a context, gets a V2 OAuth access token response
+func RefreshOAuthV2Token(client httpClient, clientID, clientSecret, refreshToken string) (resp *OAuthV2Response, err error) {
+ return RefreshOAuthV2TokenContext(context.Background(), client, clientID, clientSecret, refreshToken)
+}
+
+// RefreshOAuthV2AccessContext with a context, gets a V2 OAuth access token response
+func RefreshOAuthV2TokenContext(ctx context.Context, client httpClient, clientID, clientSecret, refreshToken string) (resp *OAuthV2Response, err error) {
+ values := url.Values{
+ "client_id": {clientID},
+ "client_secret": {clientSecret},
+ "refresh_token": {refreshToken},
+ "grant_type": {"refresh_token"},
+ }
+ response := &OAuthV2Response{}
+ if err = postForm(ctx, client, APIURL+"oauth.v2.access", values, response, discard{}); err != nil {
+ return nil, err
+ }
+ return response, response.Err()
+}
diff --git a/vendor/github.com/slack-go/slack/users.go b/vendor/github.com/slack-go/slack/users.go
index 3696e37f..87311569 100644
--- a/vendor/github.com/slack-go/slack/users.go
+++ b/vendor/github.com/slack-go/slack/users.go
@@ -469,9 +469,7 @@ func (api *Client) SetUserPhoto(image string, params UserSetPhotoParams) error {
// SetUserPhotoContext changes the currently authenticated user's profile image using a custom context
func (api *Client) SetUserPhotoContext(ctx context.Context, image string, params UserSetPhotoParams) (err error) {
response := &SlackResponse{}
- values := url.Values{
- "token": {api.token},
- }
+ values := url.Values{}
if params.CropX != DEFAULT_USER_PHOTO_CROP_X {
values.Add("crop_x", strconv.Itoa(params.CropX))
}
diff --git a/vendor/github.com/slack-go/slack/webhooks.go b/vendor/github.com/slack-go/slack/webhooks.go
index 39fff441..97346e1c 100644
--- a/vendor/github.com/slack-go/slack/webhooks.go
+++ b/vendor/github.com/slack-go/slack/webhooks.go
@@ -15,6 +15,9 @@ type WebhookMessage struct {
Attachments []Attachment `json:"attachments,omitempty"`
Parse string `json:"parse,omitempty"`
Blocks *Blocks `json:"blocks,omitempty"`
+ ResponseType string `json:"response_type,omitempty"`
+ ReplaceOriginal bool `json:"replace_original,omitempty"`
+ DeleteOriginal bool `json:"delete_original,omitempty"`
}
func PostWebhook(url string, msg *WebhookMessage) error {