cloudflare/cloudflared

Public

mirrored from https://github.com/cloudflare/cloudflaredAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
2020.6.5

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

awsuploader/file_uploader.go

62lines · modecode

1package awsuploader
2
3import (
4 "context"
5 "os"
6
7 "github.com/aws/aws-sdk-go/aws"
8 "github.com/aws/aws-sdk-go/aws/credentials"
9 "github.com/aws/aws-sdk-go/aws/session"
10 "github.com/aws/aws-sdk-go/service/s3"
11)
12
13//FileUploader aws compliant bucket upload
14type FileUploader struct {
15 storage *s3.S3
16 bucketName string
17 clientID string
18 secretID string
19}
20
21// NewFileUploader creates a new S3 compliant bucket uploader
22func NewFileUploader(bucketName, region, accessKeyID, secretID, token, s3Host string) (*FileUploader, error) {
23 sess, err := session.NewSession(&aws.Config{
24 Region: aws.String(region),
25 Credentials: credentials.NewStaticCredentials(accessKeyID, secretID, token),
26 })
27 if err != nil {
28 return nil, err
29 }
30
31 var storage *s3.S3
32 if s3Host != "" {
33 storage = s3.New(sess, &aws.Config{Endpoint: aws.String(s3Host)})
34 } else {
35 storage = s3.New(sess)
36 }
37
38 return &FileUploader{
39 storage: storage,
40 bucketName: bucketName,
41 }, nil
42}
43
44// Upload a file to the bucket
45func (u *FileUploader) Upload(filepath string) error {
46 info, err := os.Stat(filepath)
47 if err != nil {
48 return err
49 }
50 file, err := os.Open(filepath)
51 if err != nil {
52 return err
53 }
54 defer file.Close()
55
56 _, serr := u.storage.PutObjectWithContext(context.Background(), &s3.PutObjectInput{
57 Bucket: aws.String(u.bucketName),
58 Key: aws.String(info.Name()),
59 Body: file,
60 })
61 return serr
62}
63