Select Git revision
-
Gundo Sifhufhi authoredGundo Sifhufhi authored
s3.go 7.23 KiB
package s3
import (
"bytes"
"encoding/binary"
"fmt"
"net/url"
"path"
"strings"
"time"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/s3"
"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 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"
// MIMETypeImage defines the constant for the Image MIME type.
MIMETypeImage MIMEType = "image/*"
// MIMETypeDefault defines the constant for the default MIME type.
MIMETypeDefault MIMEType = "application/octet-stream"
// TypeXLS defines the constant for the XLS MIME type.
MIMETypeXLS MIMEType = "application/vnd.ms-excel"
// TypeXLSX defines the constant for the XLSX MIME type.
MIMETypeXLSX MIMEType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
)
type SessionWithHelpers struct {
S3Session *s3.S3
}
func NewSession(session *session.Session) *SessionWithHelpers {
return &SessionWithHelpers{
S3Session: s3.New(session),
}
}
func (s SessionWithHelpers) Upload(data []byte, bucket, fileName string, metadata *map[string]*string, isDebug bool) (*s3.PutObjectOutput, error) {
mimeType := getTypeForFilename(fileName)
putInput := &s3.PutObjectInput{