Browse Source

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.
pull/171/head
mutantmonkey 7 years ago
parent
commit
45a7add822
  1. 18
      backends/localfs/localfs.go
  2. 45
      backends/s3/s3.go
  3. 2
      backends/storage.go

18
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

45
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)
}

2
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)
}

Loading…
Cancel
Save