From 0a7b47c9a33511b3aac00c58d4768d8fd33e3ecc Mon Sep 17 00:00:00 2001
From: James Page <james@bob.co.za>
Date: Fri, 7 Feb 2025 10:01:32 +0200
Subject: [PATCH] #44 - Upload files to Slack channels

---
 slack_utils/slack_utils.go | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/slack_utils/slack_utils.go b/slack_utils/slack_utils.go
index f3ca9ec..fe91578 100644
--- a/slack_utils/slack_utils.go
+++ b/slack_utils/slack_utils.go
@@ -15,6 +15,18 @@ type SlackField struct {
 	Value any
 }
 
+type SlackFile struct {
+	File            string
+	FileSize        int
+	Content         string
+	Filename        string
+	Title           string
+	InitialComment  string
+	ThreadTimestamp string
+	AltTxt          string
+	SnippetText     string
+}
+
 type SlackClient struct {
 	Client *slack.Client
 }
@@ -116,6 +128,28 @@ func (s *SlackClient) postMessage(channel string, messageOptions []slack.MsgOpti
 	return messageTimestamp
 }
 
+func (s *SlackClient) SendFile(channel string, file SlackFile) error {
+	fileParameters := slack.UploadFileV2Parameters{
+		Channel:         channel,
+		File:            file.File,
+		FileSize:        file.FileSize,
+		Content:         file.Content,
+		Filename:        file.Filename,
+		Title:           file.Title,
+		InitialComment:  file.InitialComment,
+		ThreadTimestamp: file.ThreadTimestamp,
+		AltTxt:          file.AltTxt,
+		SnippetText:     file.SnippetText,
+	}
+
+	_, err := s.Client.UploadFileV2(fileParameters)
+	if err != nil {
+		logs.ErrorWithMsg(err, "Error uploading file to slack:")
+		return err
+	}
+	return nil
+}
+
 func hasEmoji(message string) bool {
 	emojiRegex := regexp.MustCompile(`:[a-zA-Z0-9_]+:`)
 	return emojiRegex.MatchString(message)
-- 
GitLab