Skip to content

Commit

Permalink
Switch to slack upload file v2 api
Browse files Browse the repository at this point in the history
  • Loading branch information
vaijab committed Jul 10, 2024
1 parent 70803a4 commit 7b8e01a
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 22 deletions.
4 changes: 3 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ require (
github.com/segmentio/analytics-go v3.1.0+incompatible
github.com/sha1sum/aws_signing_client v0.0.0-20200229211254-f7815c59d5c1
github.com/sirupsen/logrus v1.9.3
github.com/slack-go/slack v0.12.2
github.com/slack-go/slack v0.13.0
github.com/sourcegraph/conc v0.3.0
github.com/spf13/cobra v1.8.0
github.com/spf13/pflag v1.0.5
Expand Down Expand Up @@ -271,3 +271,5 @@ require (
)

replace github.com/hashicorp/go-getter v1.7.3 => github.com/kubeshop/go-getter v0.0.0-20240219121353-061e752b1b28

replace github.com/slack-go/slack v0.13.0 => github.com/kubeshop/slack v0.0.0-20240710080407-1ca22ed3b567
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -789,6 +789,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kubeshop/go-getter v0.0.0-20240219121353-061e752b1b28 h1:cIyWkSZbkn/7VU7/T375t9n7esO8/bruaJ82FIk4Gs4=
github.com/kubeshop/go-getter v0.0.0-20240219121353-061e752b1b28/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
github.com/kubeshop/slack v0.0.0-20240710080407-1ca22ed3b567 h1:L0LJ92GmIkWo/l0Ht0RJQAbBeIfoTEOl/b4eBfIigAw=
github.com/kubeshop/slack v0.0.0-20240710080407-1ca22ed3b567/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw=
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw=
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o=
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk=
Expand Down Expand Up @@ -1068,8 +1070,6 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/slack-go/slack v0.12.2 h1:x3OppyMyGIbbiyFhsBmpf9pwkUzMhthJMRNmNlA4LaQ=
github.com/slack-go/slack v0.12.2/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw=
github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
Expand Down
21 changes: 13 additions & 8 deletions pkg/bot/slack_cloud.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ func NewCloudSlack(log logrus.FieldLogger,
cfg config.CloudSlack,
clusterName string,
executorFactory ExecutorFactory,
reporter AnalyticsCommandReporter) (*CloudSlack, error) {
reporter AnalyticsCommandReporter,
) (*CloudSlack, error) {
client := slack.New(cfg.Token)

_, err := client.AuthTest()
Expand Down Expand Up @@ -553,14 +554,14 @@ func (b *CloudSlack) send(ctx context.Context, event slackMessage, resp interact
}

// Upload message as a file if too long
var file *slack.File
var err error
var file *slack.File
if len(markdown) >= slackMaxMessageSize {
file, err = b.uploadFileToSlack(ctx, event, resp)
if err != nil {
return err
}
// the main message body was sent as a file, the only think that left is the filter input (if any)
// the main message body was sent as a file, the only thing that left is the filter input (if any)
if len(resp.PlaintextInputs) == 0 {
return nil
}
Expand Down Expand Up @@ -612,16 +613,20 @@ func (b *CloudSlack) send(ctx context.Context, event slackMessage, resp interact
}

func (b *CloudSlack) uploadFileToSlack(ctx context.Context, event slackMessage, resp interactive.CoreMessage) (*slack.File, error) {
params := slack.FileUploadParameters{
content := interactive.MessageToPlaintext(resp, interactive.NewlineFormatter)
r := strings.NewReader(content)

params := slack.UploadFileV2Parameters{
Filename: "Response.txt",
FileSize: len(content),
Title: "Response.txt",
InitialComment: resp.Description,
Content: interactive.MessageToPlaintext(resp, interactive.NewlineFormatter),
Channels: []string{event.Channel},
Reader: r,
Channel: event.Channel,
ThreadTimestamp: b.resolveMessageTimestamp(resp, event),
}

file, err := b.client.UploadFileContext(ctx, params)
file, err := b.client.UploadFileV2Context(ctx, params)
if err != nil {
return nil, fmt.Errorf("while uploading file: %w", err)
}
Expand Down Expand Up @@ -666,7 +671,7 @@ func (b *CloudSlack) getThreadOptionIfNeeded(resp interactive.CoreMessage, event
func (b *CloudSlack) resolveMessageTimestamp(resp interactive.CoreMessage, event slackMessage) string {
// If the message is coming e.g. from source, it may already belong to a given thread
if resp.ParentActivityID != "" {
return resp.Message.ParentActivityID
return resp.ParentActivityID
}

// otherwise, we use the event timestamp to respond in the thread to the message that triggered our response
Expand Down
20 changes: 12 additions & 8 deletions pkg/bot/slack_socket.go
Original file line number Diff line number Diff line change
Expand Up @@ -531,16 +531,16 @@ func (b *SocketSlack) send(ctx context.Context, event slackMessage, in interacti
}

// Upload message as a file if too long
var file *slack.File
var err error
var file *slack.File
if len(markdown) >= slackMaxMessageSize {
file, err = uploadFileToSlack(ctx, event.Channel, resp, b.client, event.ThreadTimeStamp)
if err != nil {
return err
}
resp = interactive.CoreMessage{
Message: api.Message{
PlaintextInputs: resp.Message.PlaintextInputs,
PlaintextInputs: resp.PlaintextInputs,
},
}
}
Expand Down Expand Up @@ -586,7 +586,7 @@ func (b *SocketSlack) send(ctx context.Context, event slackMessage, in interacti
options = append(options, slack.MsgOptionTS(resp.Message.ParentActivityID))
}

_, _, err = b.client.PostMessageContext(ctx, id, options...)
_, _, err := b.client.PostMessageContext(ctx, id, options...)
if err != nil {
return fmt.Errorf("while posting Slack message: %w", slackError(err, event.Channel))
}
Expand Down Expand Up @@ -708,7 +708,7 @@ func resolveBlockActionCommand(act slack.BlockAction) (string, command.Origin) {
}

func (b *SocketSlack) getThreadOptionIfNeeded(event slackMessage, file *slack.File) slack.MsgOption {
//if the message is from thread then add an option to return the response to the thread
// if the message is from thread then add an option to return the response to the thread
if event.ThreadTimeStamp != "" {
return slack.MsgOptionTS(event.ThreadTimeStamp)
}
Expand Down Expand Up @@ -767,16 +767,20 @@ func (b *SocketSlack) GetStatus() health.PlatformStatus {
}

func uploadFileToSlack(ctx context.Context, channel string, resp interactive.CoreMessage, client *slack.Client, ts string) (*slack.File, error) {
params := slack.FileUploadParameters{
content := interactive.MessageToPlaintext(resp, interactive.NewlineFormatter)
r := strings.NewReader(content)

params := slack.UploadFileV2Parameters{
Filename: "Response.txt",
FileSize: len(content),
Title: "Response.txt",
InitialComment: resp.Description,
Content: interactive.MessageToPlaintext(resp, interactive.NewlineFormatter),
Channels: []string{channel},
Reader: r,
Channel: channel,
ThreadTimestamp: ts,
}

file, err := client.UploadFileContext(ctx, params)
file, err := client.UploadFileV2Context(ctx, params)
if err != nil {
return nil, fmt.Errorf("while uploading file: %w", err)
}
Expand Down
2 changes: 1 addition & 1 deletion test/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ require (
github.com/pkg/errors v0.9.1
github.com/pmezard/go-difflib v1.0.0
github.com/sanity-io/litter v1.5.5
github.com/slack-go/slack v0.12.3
github.com/slack-go/slack v0.13.0
github.com/stretchr/testify v1.9.0
github.com/vrischmann/envconfig v1.3.0
golang.org/x/oauth2 v0.16.0
Expand Down
4 changes: 2 additions & 2 deletions test/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1161,8 +1161,8 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/slack-go/slack v0.12.3 h1:92/dfFU8Q5XP6Wp5rr5/T5JHLM5c5Smtn53fhToAP88=
github.com/slack-go/slack v0.12.3/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw=
github.com/slack-go/slack v0.13.0 h1:7my/pR2ubZJ9912p9FtvALYpbt0cQPAqkRy2jaSI1PQ=
github.com/slack-go/slack v0.13.0/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
Expand Down

0 comments on commit 7b8e01a

Please sign in to comment.