initial code repo
[stor4nfv.git] / src / ceph / src / rgw / rgw_http_errors.h
diff --git a/src/ceph/src/rgw/rgw_http_errors.h b/src/ceph/src/rgw/rgw_http_errors.h
new file mode 100644 (file)
index 0000000..e2aec31
--- /dev/null
@@ -0,0 +1,40 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#ifndef RGW_HTTP_ERRORS_H_
+#define RGW_HTTP_ERRORS_H_
+
+#include "rgw_common.h"
+
+typedef const std::map<int,const std::pair<int, const char*>> rgw_http_errors;
+
+extern rgw_http_errors rgw_http_s3_errors;
+
+extern rgw_http_errors rgw_http_swift_errors;
+
+static inline int rgw_http_error_to_errno(int http_err)
+{
+  if (http_err >= 200 && http_err <= 299)
+    return 0;
+  switch (http_err) {
+    case 304:
+      return -ERR_NOT_MODIFIED;
+    case 400:
+      return -EINVAL;
+    case 401:
+      return -EPERM;
+    case 403:
+        return -EACCES;
+    case 404:
+        return -ENOENT;
+    case 409:
+        return -ENOTEMPTY;
+    default:
+        return -EIO;
+  }
+
+  return 0; /* unreachable */
+}
+
+
+#endif