Browse Source

Improve error handling, return 404 on S3

pull/156/head
mutantmonkey 6 years ago
parent
commit
d2027a706b
  1. 11
      backends/s3/s3.go
  2. 7
      display.go
  3. 5
      fileserve.go

11
backends/s3/s3.go

@ -10,6 +10,7 @@ import (
"github.com/andreimarcu/linx-server/backends"
"github.com/andreimarcu/linx-server/helpers"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
@ -48,6 +49,11 @@ func (b S3Backend) Head(key string) (metadata backends.Metadata, err error) {
}
result, err := b.svc.HeadObject(input)
if err != nil {
if aerr, ok := err.(awserr.Error); ok {
if aerr.Code() == s3.ErrCodeNoSuchKey {
err = backends.NotFoundErr
}
}
return
}
@ -62,6 +68,11 @@ func (b S3Backend) Get(key string) (metadata backends.Metadata, r io.ReadCloser,
}
result, err := b.svc.GetObject(input)
if err != nil {
if aerr, ok := err.(awserr.Error); ok {
if aerr.Code() == s3.ErrCodeNoSuchKey {
err = backends.NotFoundErr
}
}
return
}

7
display.go

@ -31,14 +31,11 @@ func fileDisplayHandler(c web.C, w http.ResponseWriter, r *http.Request) {
fileName := c.URLParams["name"]
_, err := checkFile(fileName)
metadata, err := checkFile(fileName)
if err == backends.NotFoundErr {
notFoundHandler(c, w, r)
return
}
metadata, err := storageBackend.Head(fileName)
if err != nil {
} else if err != nil {
oopsHandler(c, w, r, RespAUTO, "Corrupt metadata.")
return
}

5
fileserve.go

@ -19,11 +19,8 @@ func fileServeHandler(c web.C, w http.ResponseWriter, r *http.Request) {
if err == backends.NotFoundErr {
notFoundHandler(c, w, r)
return
} else if err == backends.BadMetadata {
oopsHandler(c, w, r, RespAUTO, "Corrupt metadata.")
return
} else if err != nil {
oopsHandler(c, w, r, RespAUTO, err.Error())
oopsHandler(c, w, r, RespAUTO, "Corrupt metadata.")
return
}

Loading…
Cancel
Save