-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathuploader.go
33 lines (30 loc) · 948 Bytes
/
uploader.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package makaroni
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
"strings"
)
type UploadFunc func(key string, content string, contentType string) error
func NewUploader(endpoint string, region string, bucket string, keyID string, secret string) (UploadFunc, error) {
awsSession, err := session.NewSession(&aws.Config{
Credentials: credentials.NewStaticCredentials(keyID, secret, ""),
Endpoint: &endpoint,
Region: ®ion,
})
if err != nil {
return nil, err
}
uploader := s3manager.NewUploader(awsSession)
upload := func(key string, content string, contentType string) error {
_, err := uploader.Upload(&s3manager.UploadInput{
Bucket: &bucket,
Key: &key,
Body: strings.NewReader(content),
ContentType: &contentType,
})
return err
}
return upload, nil
}