diff --git a/pkg/api/api_bucket_handlers.go b/pkg/api/api_bucket_handlers.go index 3fbba0303..df2834cf4 100644 --- a/pkg/api/api_bucket_handlers.go +++ b/pkg/api/api_bucket_handlers.go @@ -33,12 +33,12 @@ func (server *minioAPI) isValidOp(w http.ResponseWriter, req *http.Request, acce switch iodine.ToError(err).(type) { case drivers.BucketNotFound: { - writeErrorResponse(w, req, NoSuchBucket, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NoSuchBucket, acceptsContentType, req.URL.Path) return false } case drivers.BucketNameInvalid: { - writeErrorResponse(w, req, InvalidBucketName, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, InvalidBucketName, acceptsContentType, req.URL.Path) return false } 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) { acceptsContentType := getContentType(req) if acceptsContentType == unknownContentType { - writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) return } // verify if bucket allows this operation @@ -98,16 +98,16 @@ func (server *minioAPI) listObjectsHandler(w http.ResponseWriter, req *http.Requ } case drivers.ObjectNotFound: { - writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) } case drivers.ObjectNameInvalid: { - writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) } default: { 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) { acceptsContentType := getContentType(req) if acceptsContentType == unknownContentType { - writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) return } @@ -139,7 +139,7 @@ func (server *minioAPI) listBucketsHandler(w http.ResponseWriter, req *http.Requ default: { 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) { acceptsContentType := getContentType(req) if acceptsContentType == unknownContentType { - writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) return } // read from 'x-amz-acl' aclType := getACLType(req) if aclType == unsupportedACLType { - writeErrorResponse(w, req, NotImplemented, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NotImplemented, acceptsContentType, req.URL.Path) return } @@ -173,16 +173,16 @@ func (server *minioAPI) putBucketHandler(w http.ResponseWriter, req *http.Reques } case drivers.BucketNameInvalid: { - writeErrorResponse(w, req, InvalidBucketName, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, InvalidBucketName, acceptsContentType, req.URL.Path) } case drivers.BucketExists: { - writeErrorResponse(w, req, BucketAlreadyExists, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, BucketAlreadyExists, acceptsContentType, req.URL.Path) } default: { 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) { acceptsContentType := getContentType(req) if acceptsContentType == unknownContentType { - writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) return } diff --git a/pkg/api/api_generic_handlers.go b/pkg/api/api_generic_handlers.go index f7707cd61..f4561d995 100644 --- a/pkg/api/api_generic_handlers.go +++ b/pkg/api/api_generic_handlers.go @@ -58,7 +58,7 @@ func validateHandler(conf config.Config, h http.Handler) http.Handler { func (h vHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { acceptsContentType := getContentType(r) if acceptsContentType == unknownContentType { - writeErrorResponse(w, r, NotAcceptable, acceptsContentType, r.URL.Path) + WriteErrorResponse(w, r, NotAcceptable, acceptsContentType, r.URL.Path) return } // success diff --git a/pkg/api/api_object_handlers.go b/pkg/api/api_object_handlers.go index 0c0900429..d3d23ea71 100644 --- a/pkg/api/api_object_handlers.go +++ b/pkg/api/api_object_handlers.go @@ -32,7 +32,7 @@ import ( func (server *minioAPI) getObjectHandler(w http.ResponseWriter, req *http.Request) { acceptsContentType := getContentType(req) if acceptsContentType == unknownContentType { - writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) return } @@ -51,7 +51,7 @@ func (server *minioAPI) getObjectHandler(w http.ResponseWriter, req *http.Reques { httpRange, err := getRequestedRange(req, metadata.Size) if err != nil { - writeErrorResponse(w, req, InvalidRange, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, InvalidRange, acceptsContentType, req.URL.Path) return } switch httpRange.start == 0 && httpRange.length == 0 { @@ -73,16 +73,16 @@ func (server *minioAPI) getObjectHandler(w http.ResponseWriter, req *http.Reques } case drivers.ObjectNotFound: { - writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) } case drivers.ObjectNameInvalid: { - writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) } default: { 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) { acceptsContentType := getContentType(req) if acceptsContentType == unknownContentType { - writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) return } @@ -115,16 +115,16 @@ func (server *minioAPI) headObjectHandler(w http.ResponseWriter, req *http.Reque } case drivers.ObjectNotFound: { - writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) } case drivers.ObjectNameInvalid: { - writeErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NoSuchKey, acceptsContentType, req.URL.Path) } default: { 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) { acceptsContentType := getContentType(req) if acceptsContentType == unknownContentType { - writeErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NotAcceptable, acceptsContentType, req.URL.Path) 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 md5 := req.Header.Get("Content-MD5") if !isValidMD5(md5) { - writeErrorResponse(w, req, InvalidDigest, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, InvalidDigest, acceptsContentType, req.URL.Path) return } 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) case drivers.ObjectExists: { - writeErrorResponse(w, req, NotImplemented, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, NotImplemented, acceptsContentType, req.URL.Path) } case drivers.BadDigest: { - writeErrorResponse(w, req, BadDigest, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, BadDigest, acceptsContentType, req.URL.Path) } case drivers.EntityTooLarge: { - writeErrorResponse(w, req, EntityTooLarge, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, EntityTooLarge, acceptsContentType, req.URL.Path) } case drivers.InvalidDigest: { - writeErrorResponse(w, req, InvalidDigest, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, InvalidDigest, acceptsContentType, req.URL.Path) } case drivers.ImplementationError: { log.Error.Println(err) - writeErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path) } default: { log.Error.Println(err) - writeErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path) + WriteErrorResponse(w, req, InternalError, acceptsContentType, req.URL.Path) } } } diff --git a/pkg/api/api_response.go b/pkg/api/api_response.go index a7b2c9065..f34647ac6 100644 --- a/pkg/api/api_response.go +++ b/pkg/api/api_response.go @@ -109,7 +109,8 @@ func generateObjectsListResult(bucket string, objects []drivers.ObjectMetadata, 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) errorResponse := getErrorResponse(error, resource) // set headers