mirror of https://github.com/minio/minio.git
Merge pull request #501 from fkautz/pr_out_exporting_writeerrorresponse
This commit is contained in:
commit
c29677b245
|
@ -33,12 +33,12 @@ func (server *minioAPI) isValidOp(w http.ResponseWriter, req *http.Request, acce
|
||||||
switch iodine.ToError(err).(type) {
|
switch iodine.ToError(err).(type) {
|
||||||
case drivers.BucketNotFound:
|
case drivers.BucketNotFound:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, NoSuchBucket, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NoSuchBucket, acceptsContentType, req.URL.Path)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
case drivers.BucketNameInvalid:
|
case drivers.BucketNameInvalid:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, InvalidBucketName, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InvalidBucketName, acceptsContentType, req.URL.Path)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
case nil:
|
case nil:
|
||||||
|
@ -68,7 +68,7 @@ func (server *minioAPI) isValidOp(w http.ResponseWriter, req *http.Request, acce
|
||||||
func (server *minioAPI) listObjectsHandler(w http.ResponseWriter, req *http.Request) {
|
func (server *minioAPI) listObjectsHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
acceptsContentType := getContentType(req)
|
acceptsContentType := getContentType(req)
|
||||||
if acceptsContentType == unknownContentType {
|
if acceptsContentType == unknownContentType {
|
||||||
writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// verify if bucket allows this operation
|
// verify if bucket allows this operation
|
||||||
|
@ -98,16 +98,16 @@ func (server *minioAPI) listObjectsHandler(w http.ResponseWriter, req *http.Requ
|
||||||
}
|
}
|
||||||
case drivers.ObjectNotFound:
|
case drivers.ObjectNotFound:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
case drivers.ObjectNameInvalid:
|
case drivers.ObjectNameInvalid:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
log.Error.Println(iodine.New(err, nil))
|
log.Error.Println(iodine.New(err, nil))
|
||||||
writeErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,7 @@ func (server *minioAPI) listObjectsHandler(w http.ResponseWriter, req *http.Requ
|
||||||
func (server *minioAPI) listBucketsHandler(w http.ResponseWriter, req *http.Request) {
|
func (server *minioAPI) listBucketsHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
acceptsContentType := getContentType(req)
|
acceptsContentType := getContentType(req)
|
||||||
if acceptsContentType == unknownContentType {
|
if acceptsContentType == unknownContentType {
|
||||||
writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ func (server *minioAPI) listBucketsHandler(w http.ResponseWriter, req *http.Requ
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
log.Error.Println(iodine.New(err, nil))
|
log.Error.Println(iodine.New(err, nil))
|
||||||
writeErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -150,14 +150,14 @@ func (server *minioAPI) listBucketsHandler(w http.ResponseWriter, req *http.Requ
|
||||||
func (server *minioAPI) putBucketHandler(w http.ResponseWriter, req *http.Request) {
|
func (server *minioAPI) putBucketHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
acceptsContentType := getContentType(req)
|
acceptsContentType := getContentType(req)
|
||||||
if acceptsContentType == unknownContentType {
|
if acceptsContentType == unknownContentType {
|
||||||
writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// read from 'x-amz-acl'
|
// read from 'x-amz-acl'
|
||||||
aclType := getACLType(req)
|
aclType := getACLType(req)
|
||||||
if aclType == unsupportedACLType {
|
if aclType == unsupportedACLType {
|
||||||
writeErrorResponse(w, req, NotImplemented, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NotImplemented, acceptsContentType, req.URL.Path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,16 +173,16 @@ func (server *minioAPI) putBucketHandler(w http.ResponseWriter, req *http.Reques
|
||||||
}
|
}
|
||||||
case drivers.BucketNameInvalid:
|
case drivers.BucketNameInvalid:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, InvalidBucketName, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InvalidBucketName, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
case drivers.BucketExists:
|
case drivers.BucketExists:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, BucketAlreadyExists, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, BucketAlreadyExists, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
log.Error.Println(iodine.New(err, nil))
|
log.Error.Println(iodine.New(err, nil))
|
||||||
writeErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,7 +196,7 @@ func (server *minioAPI) putBucketHandler(w http.ResponseWriter, req *http.Reques
|
||||||
func (server *minioAPI) headBucketHandler(w http.ResponseWriter, req *http.Request) {
|
func (server *minioAPI) headBucketHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
acceptsContentType := getContentType(req)
|
acceptsContentType := getContentType(req)
|
||||||
if acceptsContentType == unknownContentType {
|
if acceptsContentType == unknownContentType {
|
||||||
writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ func validateHandler(conf config.Config, h http.Handler) http.Handler {
|
||||||
func (h vHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
func (h vHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
acceptsContentType := getContentType(r)
|
acceptsContentType := getContentType(r)
|
||||||
if acceptsContentType == unknownContentType {
|
if acceptsContentType == unknownContentType {
|
||||||
writeErrorResponse(w, r, NotAcceptable, acceptsContentType, r.URL.Path)
|
WriteErrorResponse(w, r, NotAcceptable, acceptsContentType, r.URL.Path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// success
|
// success
|
||||||
|
|
|
@ -32,7 +32,7 @@ import (
|
||||||
func (server *minioAPI) getObjectHandler(w http.ResponseWriter, req *http.Request) {
|
func (server *minioAPI) getObjectHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
acceptsContentType := getContentType(req)
|
acceptsContentType := getContentType(req)
|
||||||
if acceptsContentType == unknownContentType {
|
if acceptsContentType == unknownContentType {
|
||||||
writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ func (server *minioAPI) getObjectHandler(w http.ResponseWriter, req *http.Reques
|
||||||
{
|
{
|
||||||
httpRange, err := getRequestedRange(req, metadata.Size)
|
httpRange, err := getRequestedRange(req, metadata.Size)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeErrorResponse(w, req, InvalidRange, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InvalidRange, acceptsContentType, req.URL.Path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch httpRange.start == 0 && httpRange.length == 0 {
|
switch httpRange.start == 0 && httpRange.length == 0 {
|
||||||
|
@ -73,16 +73,16 @@ func (server *minioAPI) getObjectHandler(w http.ResponseWriter, req *http.Reques
|
||||||
}
|
}
|
||||||
case drivers.ObjectNotFound:
|
case drivers.ObjectNotFound:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
case drivers.ObjectNameInvalid:
|
case drivers.ObjectNameInvalid:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
log.Error.Println(iodine.New(err, nil))
|
log.Error.Println(iodine.New(err, nil))
|
||||||
writeErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,7 @@ func (server *minioAPI) getObjectHandler(w http.ResponseWriter, req *http.Reques
|
||||||
func (server *minioAPI) headObjectHandler(w http.ResponseWriter, req *http.Request) {
|
func (server *minioAPI) headObjectHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
acceptsContentType := getContentType(req)
|
acceptsContentType := getContentType(req)
|
||||||
if acceptsContentType == unknownContentType {
|
if acceptsContentType == unknownContentType {
|
||||||
writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,16 +115,16 @@ func (server *minioAPI) headObjectHandler(w http.ResponseWriter, req *http.Reque
|
||||||
}
|
}
|
||||||
case drivers.ObjectNotFound:
|
case drivers.ObjectNotFound:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
case drivers.ObjectNameInvalid:
|
case drivers.ObjectNameInvalid:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
log.Error.Println(iodine.New(err, nil))
|
log.Error.Println(iodine.New(err, nil))
|
||||||
writeErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ func (server *minioAPI) headObjectHandler(w http.ResponseWriter, req *http.Reque
|
||||||
func (server *minioAPI) putObjectHandler(w http.ResponseWriter, req *http.Request) {
|
func (server *minioAPI) putObjectHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
acceptsContentType := getContentType(req)
|
acceptsContentType := getContentType(req)
|
||||||
if acceptsContentType == unknownContentType {
|
if acceptsContentType == unknownContentType {
|
||||||
writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ func (server *minioAPI) putObjectHandler(w http.ResponseWriter, req *http.Reques
|
||||||
// get Content-MD5 sent by client and verify if valid
|
// get Content-MD5 sent by client and verify if valid
|
||||||
md5 := req.Header.Get("Content-MD5")
|
md5 := req.Header.Get("Content-MD5")
|
||||||
if !isValidMD5(md5) {
|
if !isValidMD5(md5) {
|
||||||
writeErrorResponse(w, req, InvalidDigest, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InvalidDigest, acceptsContentType, req.URL.Path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err := server.driver.CreateObject(bucket, object, "", md5, req.Body)
|
err := server.driver.CreateObject(bucket, object, "", md5, req.Body)
|
||||||
|
@ -163,29 +163,29 @@ func (server *minioAPI) putObjectHandler(w http.ResponseWriter, req *http.Reques
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
case drivers.ObjectExists:
|
case drivers.ObjectExists:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, NotImplemented, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, NotImplemented, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
case drivers.BadDigest:
|
case drivers.BadDigest:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, BadDigest, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, BadDigest, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
case drivers.EntityTooLarge:
|
case drivers.EntityTooLarge:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, EntityTooLarge, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, EntityTooLarge, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
case drivers.InvalidDigest:
|
case drivers.InvalidDigest:
|
||||||
{
|
{
|
||||||
writeErrorResponse(w, req, InvalidDigest, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InvalidDigest, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
case drivers.ImplementationError:
|
case drivers.ImplementationError:
|
||||||
{
|
{
|
||||||
log.Error.Println(err)
|
log.Error.Println(err)
|
||||||
writeErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
log.Error.Println(err)
|
log.Error.Println(err)
|
||||||
writeErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
WriteErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,7 +109,8 @@ func generateObjectsListResult(bucket string, objects []drivers.ObjectMetadata,
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeErrorResponse(w http.ResponseWriter, req *http.Request, errorType int, acceptsContentType contentType, resource string) {
|
// WriteErrorResponse writes a formatted error to the user
|
||||||
|
func WriteErrorResponse(w http.ResponseWriter, req *http.Request, errorType int, acceptsContentType contentType, resource string) {
|
||||||
error := getErrorCode(errorType)
|
error := getErrorCode(errorType)
|
||||||
errorResponse := getErrorResponse(error, resource)
|
errorResponse := getErrorResponse(error, resource)
|
||||||
// set headers
|
// set headers
|
||||||
|
|
Loading…
Reference in New Issue