aboutsummaryrefslogtreecommitdiff
path: root/weed/s3api/s3api_errors.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2018-07-18 02:37:09 -0700
committerChris Lu <chris.lu@gmail.com>2018-07-18 02:37:09 -0700
commit834a25f0840c0dfbf3b27006f419d7e2d5f25b90 (patch)
tree33264c427d53dab4549201216c68bb0c6e2ad597 /weed/s3api/s3api_errors.go
parent7abfab8e77275f97cbc04e048e7d6b6a5ab7b140 (diff)
downloadseaweedfs-834a25f0840c0dfbf3b27006f419d7e2d5f25b90.tar.xz
seaweedfs-834a25f0840c0dfbf3b27006f419d7e2d5f25b90.zip
add list all my buckets
Diffstat (limited to 'weed/s3api/s3api_errors.go')
-rw-r--r--weed/s3api/s3api_errors.go76
1 files changed, 76 insertions, 0 deletions
diff --git a/weed/s3api/s3api_errors.go b/weed/s3api/s3api_errors.go
new file mode 100644
index 000000000..f6988f5e1
--- /dev/null
+++ b/weed/s3api/s3api_errors.go
@@ -0,0 +1,76 @@
+package s3api
+
+import (
+ "encoding/xml"
+ "net/http"
+)
+
+// APIError structure
+type APIError struct {
+ Code string
+ Description string
+ HTTPStatusCode int
+}
+
+// RESTErrorResponse - error response format
+type RESTErrorResponse struct {
+ XMLName xml.Name `xml:"Error" json:"-"`
+ Code string `xml:"Code" json:"Code"`
+ Message string `xml:"Message" json:"Message"`
+ Resource string `xml:"Resource" json:"Resource"`
+ RequestID string `xml:"RequestId" json:"RequestId"`
+}
+
+// ErrorCode type of error status.
+type ErrorCode int
+
+// Error codes, see full list at http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html
+const (
+ ErrNone ErrorCode = iota
+ ErrMethodNotAllowed
+ ErrBucketNotEmpty
+ ErrBucketAlreadyExists
+ ErrBucketAlreadyOwnedByYou
+ ErrInvalidBucketName
+ ErrInternalError
+)
+
+// error code to APIError structure, these fields carry respective
+// descriptions for all the error responses.
+var errorCodeResponse = map[ErrorCode]APIError{
+ ErrMethodNotAllowed: {
+ Code: "MethodNotAllowed",
+ Description: "The specified method is not allowed against this resource.",
+ HTTPStatusCode: http.StatusMethodNotAllowed,
+ },
+ ErrBucketNotEmpty: {
+ Code: "BucketNotEmpty",
+ Description: "The bucket you tried to delete is not empty",
+ HTTPStatusCode: http.StatusConflict,
+ },
+ ErrBucketAlreadyExists: {
+ Code: "BucketAlreadyExists",
+ Description: "The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.",
+ HTTPStatusCode: http.StatusConflict,
+ },
+ ErrBucketAlreadyOwnedByYou: {
+ Code: "BucketAlreadyOwnedByYou",
+ Description: "Your previous request to create the named bucket succeeded and you already own it.",
+ HTTPStatusCode: http.StatusConflict,
+ },
+ ErrInvalidBucketName: {
+ Code: "InvalidBucketName",
+ Description: "The specified bucket is not valid.",
+ HTTPStatusCode: http.StatusBadRequest,
+ },
+ ErrInternalError: {
+ Code: "InternalError",
+ Description: "We encountered an internal error, please try again.",
+ HTTPStatusCode: http.StatusInternalServerError,
+ },
+}
+
+// getAPIError provides API Error for input API error code.
+func getAPIError(code ErrorCode) APIError {
+ return errorCodeResponse[code]
+}