aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/s3api/s3api_object_handlers.go8
-rw-r--r--weed/s3api/s3err/s3api_errors.go6
2 files changed, 12 insertions, 2 deletions
diff --git a/weed/s3api/s3api_object_handlers.go b/weed/s3api/s3api_object_handlers.go
index fd2a0e6bd..f454bfad2 100644
--- a/weed/s3api/s3api_object_handlers.go
+++ b/weed/s3api/s3api_object_handlers.go
@@ -436,10 +436,14 @@ func setEtag(w http.ResponseWriter, etag string) {
}
func filerErrorToS3Error(errString string) s3err.ErrorCode {
- if strings.HasPrefix(errString, "existing ") && strings.HasSuffix(errString, "is a directory") {
+ switch {
+ case strings.HasPrefix(errString, "existing ") && strings.HasSuffix(errString, "is a directory"):
return s3err.ErrExistingObjectIsDirectory
+ case strings.HasSuffix(errString, "is a file"):
+ return s3err.ErrExistingObjectIsFile
+ default:
+ return s3err.ErrInternalError
}
- return s3err.ErrInternalError
}
func (s3a *S3ApiServer) maybeAddFilerJwtAuthorization(r *http.Request, isWrite bool) {
diff --git a/weed/s3api/s3err/s3api_errors.go b/weed/s3api/s3err/s3api_errors.go
index 8d02f15b1..f4a83d979 100644
--- a/weed/s3api/s3err/s3api_errors.go
+++ b/weed/s3api/s3err/s3api_errors.go
@@ -101,6 +101,7 @@ const (
ErrPreconditionFailed
ErrExistingObjectIsDirectory
+ ErrExistingObjectIsFile
)
// error code to APIError structure, these fields carry respective
@@ -383,6 +384,11 @@ var errorCodeResponse = map[ErrorCode]APIError{
Description: "Existing Object is a directory.",
HTTPStatusCode: http.StatusConflict,
},
+ ErrExistingObjectIsFile: {
+ Code: "ExistingObjectIsFile",
+ Description: "Existing Object is a file.",
+ HTTPStatusCode: http.StatusConflict,
+ },
}
// GetAPIError provides API Error for input API error code.