From 5cf68673a3c4a19e8c1ab864020330759605fb21 Mon Sep 17 00:00:00 2001 From: Knut Ahlers Date: Sun, 30 Jun 2019 04:54:04 +0200 Subject: [PATCH] Allow specifying default ACL through parameters Signed-off-by: Knut Ahlers --- providers/s3/provider.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/providers/s3/provider.go b/providers/s3/provider.go index 4fc307e..f59c302 100644 --- a/providers/s3/provider.go +++ b/providers/s3/provider.go @@ -23,6 +23,7 @@ import ( type Provider struct { bucket string bucketRegion string + defaultACL string s3 *s3.S3 } @@ -51,11 +52,18 @@ func New(uri string) (providers.CloudProvider, error) { sess := session.Must(session.NewSession(cfg)) svc := s3.New(sess) - return &Provider{ + p := &Provider{ bucket: u.Host, bucketRegion: region, + defaultACL: s3.ObjectCannedACLPrivate, s3: svc, - }, nil + } + + if acl := u.Query().Get("acl"); acl == s3.ObjectCannedACLPublicRead || acl == s3.ObjectCannedACLPrivate { + p.defaultACL = acl + } + + return p, nil } func (p *Provider) Capabilities() providers.Capability { @@ -161,7 +169,7 @@ func (p *Provider) getFileACL(relativeName string) string { }) if err != nil { - return s3.ObjectCannedACLPrivate + return p.defaultACL } for _, g := range objACL.Grants { @@ -173,5 +181,5 @@ func (p *Provider) getFileACL(relativeName string) string { } } - return s3.ObjectCannedACLPrivate + return p.defaultACL }