Select Git revision
-
Jano Hendriks authored
Update GetS3FileKey to remove leading slash since this is now added automatically by the new SDK version
Jano Hendriks authoredUpdate GetS3FileKey to remove leading slash since this is now added automatically by the new SDK version
s3.go 14.07 KiB
package s3
import (
"bytes"
"context"
"encoding/binary"
"fmt"
"net/url"
"os"
"path"
"strings"
"time"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/credentials"
"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/secrets_manager"
std_errors "errors"
"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/errors"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3/types"
"github.com/google/uuid"
)
// S3UploadResponse defines the structure of a standard JSON response to a PDF/CSV/etc request.
type S3UploadResponse struct {
URL string `json:"url"`
Filename string `json:"filename"`
Bucket string `json:"bucket"`
FileSize int `json:"file_size"`
}
type S3UploadSettings struct {
MimeType MIMEType
RetrieveSignedUrl bool
ExpiryDuration *time.Duration // Used to set expiry datetime of download links. NB: does not affect deletion of object from S3 bucket.
AddContentDisposition bool
FilePath string
FileName string
FileExt string
InsertUUID bool
}
// Duration constants
const (
S3ExpiryDuration1Day time.Duration = 24 * time.Hour
S3ExpiryDuration7Days time.Duration = 7 * 24 * time.Hour
)
type MIMEType string
const (
// MIMETypePDF defines the constant for the PDF MIME type.
MIMETypePDF MIMEType = "application/pdf"
// MIMETypeCSV defines the constant for the CSV MIME type.
MIMETypeCSV MIMEType = "text/csv"
// MIMETypeZIP defines the constant for the ZIP MIME type.
MIMETypeZIP MIMEType = "application/zip"
// MIMETypeJSON defines the constant for the JSON MIME type.
MIMETypeJSON MIMEType = "application/json"
// MIMETypeText defines the constant for the Plain text MIME type.
MIMETypeText MIMEType = "text/plain"