From a1a18e92122c387b506db00cd483b03579d9951f Mon Sep 17 00:00:00 2001
From: Johan de Klerk <johan@shiplogic.com>
Date: Thu, 12 Jan 2023 09:30:49 +0200
Subject: [PATCH] Added GetS3Session

---
 s3/s3.go | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/s3/s3.go b/s3/s3.go
index 997f864..69ab117 100644
--- a/s3/s3.go
+++ b/s3/s3.go
@@ -78,10 +78,45 @@ const (
 	MIMETypeXLSX MIMEType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
 )
 
+var (
+	s3Sessions = map[string]*SessionWithHelpers{}
+)
+
 type SessionWithHelpers struct {
 	S3Session *s3.S3
 }
 
+func GetS3Session(region ...string) *SessionWithHelpers {
+
+	s3Region := "af-south-1"
+
+	// Set custom region
+	if region != nil && len(region) > 0 {
+		s3Region = region[0]
+	}
+
+	// Check if session exists for region, if it does return it
+	if s3Session, ok := s3Sessions[s3Region]; ok {
+		return s3Session
+	}
+
+	// Setup session
+	options := session.Options{
+		Config: aws.Config{
+			Region: aws.String(s3Region),
+		},
+	}
+
+	sess, err := session.NewSessionWithOptions(options)
+	if err != nil {
+		return nil
+	}
+
+	s3Session := NewSession(sess)
+	s3Sessions[s3Region] = s3Session
+	return s3Session
+}
+
 func NewSession(session *session.Session) *SessionWithHelpers {
 	return &SessionWithHelpers{
 		S3Session: s3.New(session),
-- 
GitLab