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