Added specific error for InvalidObjectName (#2157)

master
Krishnan Parthasarathi 8 years ago committed by Harshavardhana
parent ae80f8ca35
commit bc8720406d
  1. 8
      api-errors.go
  2. 2
      server_test.go
  3. 2
      test-utils_test.go
  4. 6
      xl-v1-utils.go

@ -115,6 +115,7 @@ const (
ErrStorageFull ErrStorageFull
ErrObjectExistsAsDirectory ErrObjectExistsAsDirectory
ErrPolicyNesting ErrPolicyNesting
ErrInvalidObjectName
// Add new extended error codes here. // Add new extended error codes here.
// Please open a https://github.com/minio/minio/issues before adding // Please open a https://github.com/minio/minio/issues before adding
// new error codes here. // new error codes here.
@ -442,6 +443,11 @@ var errorCodeResponse = map[APIErrorCode]APIError{
Description: "Policy nesting conflict has occurred.", Description: "Policy nesting conflict has occurred.",
HTTPStatusCode: http.StatusConflict, HTTPStatusCode: http.StatusConflict,
}, },
ErrInvalidObjectName: {
Code: "XMinioInvalidObjectName",
Description: "Object name contains unsupported characters. Unsupported characters are `^*|\\\"",
HTTPStatusCode: http.StatusBadRequest,
},
// Add your error structure here. // Add your error structure here.
} }
@ -483,7 +489,7 @@ func toAPIErrorCode(err error) (apiErr APIErrorCode) {
case ObjectNotFound: case ObjectNotFound:
apiErr = ErrNoSuchKey apiErr = ErrNoSuchKey
case ObjectNameInvalid: case ObjectNameInvalid:
apiErr = ErrNotImplemented apiErr = ErrInvalidObjectName
case InvalidUploadID: case InvalidUploadID:
apiErr = ErrNoSuchUpload apiErr = ErrNoSuchUpload
case InvalidPart: case InvalidPart:

@ -878,7 +878,7 @@ func (s *TestSuiteCommon) TestPutObjectLongName(c *C) {
response, err = client.Do(request) response, err = client.Do(request)
c.Assert(err, IsNil) c.Assert(err, IsNil)
verifyError(c, response, "NotImplemented", "A header you provided implies functionality that is not implemented", http.StatusNotImplemented) verifyError(c, response, "XMinioInvalidObjectName", "Object name contains unsupported characters. Unsupported characters are `^*|\\\"", http.StatusBadRequest)
} }
// TestNotBeAbleToCreateObjectInNonexistentBucket - Validates the error response // TestNotBeAbleToCreateObjectInNonexistentBucket - Validates the error response

@ -364,7 +364,7 @@ type EOFWriter struct {
n int64 n int64
} }
// io.Writer implementation desgined to error out with io.EOF after reading `n` bytes. // io.Writer implementation designed to error out with io.EOF after reading `n` bytes.
func (t *EOFWriter) Write(p []byte) (n int, err error) { func (t *EOFWriter) Write(p []byte) (n int, err error) {
if t.n <= 0 { if t.n <= 0 {
return -1, io.EOF return -1, io.EOF

@ -24,13 +24,13 @@ import (
) )
// Returns nil even if one of the slice elements is nil. // Returns nil even if one of the slice elements is nil.
// Else returns the error which occours the most. // Else returns the error which occurs the most.
func reduceErrs(errs []error) error { func reduceErrs(errs []error) error {
// In case the error type is not in the known error list. // In case the error type is not in the known error list.
var unknownErr = errors.New("unknown error") var unknownErr = errors.New("unknown error")
var errTypes = []struct { var errTypes = []struct {
err error // error type err error // error type
count int // occurance count count int // occurrence count
}{ }{
// List of known error types. Any new type that can be returned from StorageAPI should // List of known error types. Any new type that can be returned from StorageAPI should
// be added to this list. Most common errors are listed here. // be added to this list. Most common errors are listed here.
@ -40,7 +40,7 @@ func reduceErrs(errs []error) error {
// unknownErr count - count of the number of unknown errors. // unknownErr count - count of the number of unknown errors.
{unknownErr, 0}, {unknownErr, 0},
} }
// In case unknownErr count occours maximum number of times, unknownErrType is used to // In case unknownErr count occurs maximum number of times, unknownErrType is used to
// to store it so that it can be used for the return error type. // to store it so that it can be used for the return error type.
var unknownErrType error var unknownErrType error

Loading…
Cancel
Save