Reply back errors properly

This commit is contained in:
Harshavardhana 2015-02-01 03:10:28 -08:00
parent 862ce975d5
commit 5d197dd063
2 changed files with 20 additions and 4 deletions

View File

@ -105,13 +105,22 @@ func (server *minioApi) listObjectsHandler(w http.ResponseWriter, req *http.Requ
acceptsContentType := getContentType(req) acceptsContentType := getContentType(req)
objects, isTruncated, err := server.storage.ListObjects(bucket, prefix, 1000) objects, isTruncated, err := server.storage.ListObjects(bucket, prefix, 1000)
if err != nil { switch err := err.(type) {
case nil: // success
response := generateObjectsListResult(bucket, objects, isTruncated)
w.Write(writeObjectHeadersAndResponse(w, response, acceptsContentType))
case mstorage.BucketNotFound:
log.Println(err)
w.WriteHeader(http.StatusNotFound)
w.Write([]byte(err.Error()))
case mstorage.ImplementationError:
log.Println(err) log.Println(err)
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)
return w.Write([]byte(err.Error()))
default:
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(err.Error()))
} }
response := generateObjectsListResult(bucket, objects, isTruncated)
w.Write(writeObjectHeadersAndResponse(w, response, acceptsContentType))
} }
func (server *minioApi) putBucketHandler(w http.ResponseWriter, req *http.Request) { func (server *minioApi) putBucketHandler(w http.ResponseWriter, req *http.Request) {
@ -146,11 +155,13 @@ func (server *minioApi) getObjectHandler(w http.ResponseWriter, req *http.Reques
{ {
log.Println(err) log.Println(err)
w.WriteHeader(http.StatusNotFound) w.WriteHeader(http.StatusNotFound)
w.Write([]byte(err.Error()))
} }
default: default:
{ {
log.Println(err) log.Println(err)
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
} }
} }
} }

View File

@ -153,6 +153,11 @@ func (storage *storage) ListObjects(bucket, prefix string, count int) ([]mstorag
rootPrefix := path.Join(storage.root, bucket) rootPrefix := path.Join(storage.root, bucket)
// check bucket exists
if _, err := os.Stat(rootPrefix); os.IsNotExist(err) {
return []mstorage.ObjectMetadata{}, false, mstorage.BucketNotFound{Bucket: bucket}
}
files, err := ioutil.ReadDir(rootPrefix) files, err := ioutil.ReadDir(rootPrefix)
if err != nil { if err != nil {
return []mstorage.ObjectMetadata{}, false, mstorage.EmbedError("bucket", "", err) return []mstorage.ObjectMetadata{}, false, mstorage.EmbedError("bucket", "", err)