From 45a7add822c8625fecc50fe4df108ddf66b040f4 Mon Sep 17 00:00:00 2001 From: mutantmonkey Date: Wed, 20 Mar 2019 00:10:12 -0700 Subject: [PATCH] Change PutMetadata to take a Metadata type instead It's unlikely that this function is useful if it always regenerates the metadata. Instead, the caller should do that if it needs. --- backends/localfs/localfs.go | 18 +-------------- backends/s3/s3.go | 45 ++++++++++++++----------------------- backends/storage.go | 2 +- 3 files changed, 19 insertions(+), 46 deletions(-) diff --git a/backends/localfs/localfs.go b/backends/localfs/localfs.go index ee40b31..47187b6 100644 --- a/backends/localfs/localfs.go +++ b/backends/localfs/localfs.go @@ -147,23 +147,7 @@ func (b LocalfsBackend) Put(key string, r io.Reader, expiry time.Time, deleteKey return } -func (b LocalfsBackend) PutMetadata(key string, r io.Reader, expiry time.Time, deleteKey string) (m backends.Metadata, err error) { - m, err = helpers.GenerateMetadata(r) - if err != nil { - return - } - m.Expiry = expiry - m.DeleteKey = deleteKey - - filePath := path.Join(b.filesPath, key) - dst, err := os.Open(filePath) - if err != nil { - return - } - defer dst.Close() - - m.ArchiveFiles, _ = helpers.ListArchiveFiles(m.Mimetype, m.Size, dst) - +func (b LocalfsBackend) PutMetadata(key string, m backends.Metadata) (err error) { err = b.writeMetadata(key, m) if err != nil { return diff --git a/backends/s3/s3.go b/backends/s3/s3.go index 1a408f0..ad040e1 100644 --- a/backends/s3/s3.go +++ b/backends/s3/s3.go @@ -18,13 +18,13 @@ import ( type S3Backend struct { bucket string - svc *s3.S3 + svc *s3.S3 } func (b S3Backend) Delete(key string) error { _, err := b.svc.DeleteObject(&s3.DeleteObjectInput{ Bucket: aws.String(b.bucket), - Key: aws.String(key), + Key: aws.String(key), }) if err != nil { return err @@ -35,7 +35,7 @@ func (b S3Backend) Delete(key string) error { func (b S3Backend) Exists(key string) (bool, error) { _, err := b.svc.HeadObject(&s3.HeadObjectInput{ Bucket: aws.String(b.bucket), - Key: aws.String(key), + Key: aws.String(key), }) return err == nil, err } @@ -44,7 +44,7 @@ func (b S3Backend) Head(key string) (metadata backends.Metadata, err error) { var result *s3.HeadObjectOutput result, err = b.svc.HeadObject(&s3.HeadObjectInput{ Bucket: aws.String(b.bucket), - Key: aws.String(key), + Key: aws.String(key), }) if err != nil { if aerr, ok := err.(awserr.Error); ok { @@ -63,7 +63,7 @@ func (b S3Backend) Get(key string) (metadata backends.Metadata, r io.ReadCloser, var result *s3.GetObjectOutput result, err = b.svc.GetObject(&s3.GetObjectInput{ Bucket: aws.String(b.bucket), - Key: aws.String(key), + Key: aws.String(key), }) if err != nil { if aerr, ok := err.(awserr.Error); ok { @@ -81,11 +81,11 @@ func (b S3Backend) Get(key string) (metadata backends.Metadata, r io.ReadCloser, func mapMetadata(m backends.Metadata) map[string]*string { return map[string]*string{ - "Expiry": aws.String(strconv.FormatInt(m.Expiry.Unix(), 10)), + "Expiry": aws.String(strconv.FormatInt(m.Expiry.Unix(), 10)), "Delete_key": aws.String(m.DeleteKey), - "Size": aws.String(strconv.FormatInt(m.Size, 10)), - "Mimetype": aws.String(m.Mimetype), - "Sha256sum": aws.String(m.Sha256sum), + "Size": aws.String(strconv.FormatInt(m.Size, 10)), + "Mimetype": aws.String(m.Mimetype), + "Sha256sum": aws.String(m.Sha256sum), } } @@ -133,9 +133,9 @@ func (b S3Backend) Put(key string, r io.Reader, expiry time.Time, deleteKey stri uploader := s3manager.NewUploaderWithClient(b.svc) input := &s3manager.UploadInput{ - Bucket: aws.String(b.bucket), - Key: aws.String(key), - Body: tmpDst, + Bucket: aws.String(b.bucket), + Key: aws.String(key), + Body: tmpDst, Metadata: mapMetadata(m), } _, err = uploader.Upload(input) @@ -146,22 +146,12 @@ func (b S3Backend) Put(key string, r io.Reader, expiry time.Time, deleteKey stri return } -func (b S3Backend) PutMetadata(key string, r io.Reader, expiry time.Time, deleteKey string) (m backends.Metadata, err error) { - m, err = helpers.GenerateMetadata(r) - if err != nil { - return - } - m.Expiry = expiry - m.DeleteKey = deleteKey - // XXX: we may not be able to write this to AWS easily - //m.ArchiveFiles, _ = helpers.ListArchiveFiles(m.Mimetype, m.Size, tmpDst) - +func (b S3Backend) PutMetadata(key string, m backends.Metadata) (err error) { _, err = b.svc.CopyObject(&s3.CopyObjectInput{ - Bucket: aws.String(b.bucket), - Key: aws.String(key), + Bucket: aws.String(b.bucket), + Key: aws.String(key), CopySource: aws.String("/" + b.bucket + "/" + key), - Metadata: mapMetadata(m), - + Metadata: mapMetadata(m), }) if err != nil { return @@ -173,7 +163,7 @@ func (b S3Backend) PutMetadata(key string, r io.Reader, expiry time.Time, delete func (b S3Backend) Size(key string) (int64, error) { input := &s3.HeadObjectInput{ Bucket: aws.String(b.bucket), - Key: aws.String(key), + Key: aws.String(key), } result, err := b.svc.HeadObject(input) if err != nil { @@ -194,7 +184,6 @@ func (b S3Backend) List() ([]string, error) { return nil, err } - for _, object := range results.Contents { output = append(output, *object.Key) } diff --git a/backends/storage.go b/backends/storage.go index b9e181e..fdd8cd6 100644 --- a/backends/storage.go +++ b/backends/storage.go @@ -12,7 +12,7 @@ type StorageBackend interface { Head(key string) (Metadata, error) Get(key string) (Metadata, io.ReadCloser, error) Put(key string, r io.Reader, expiry time.Time, deleteKey string) (Metadata, error) - PutMetadata(key string, r io.Reader, expiry time.Time, deleteKey string) (Metadata, error) + PutMetadata(key string, m Metadata) error Size(key string) (int64, error) }