From d2027a706b6202f982de130031801b7c5fa7a350 Mon Sep 17 00:00:00 2001 From: mutantmonkey Date: Thu, 24 Jan 2019 00:10:27 -0800 Subject: [PATCH] Improve error handling, return 404 on S3 --- backends/s3/s3.go | 11 +++++++++++ display.go | 7 ++----- fileserve.go | 5 +---- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/backends/s3/s3.go b/backends/s3/s3.go index 515f997..98b5ebc 100644 --- a/backends/s3/s3.go +++ b/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 } diff --git a/display.go b/display.go index fbc917c..7258904 100644 --- a/display.go +++ b/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 } diff --git a/fileserve.go b/fileserve.go index 3066b79..a3a249e 100644 --- a/fileserve.go +++ b/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 }