summaryrefslogtreecommitdiffstats
path: root/src/afb-method.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/afb-method.c')
-rw-r--r--src/afb-method.c81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/afb-method.c b/src/afb-method.c
new file mode 100644
index 00000000..488ba3e3
--- /dev/null
+++ b/src/afb-method.c
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2016 IoT.bzh
+ * Author: José Bollo <jose.bollo@iot.bzh>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <microhttpd.h>
+
+#include "afb-method.h"
+
+enum afb_method get_method(const char *method)
+{
+ switch (method[0] & ~' ') {
+ case 'C':
+ return afb_method_connect;
+ case 'D':
+ return afb_method_delete;
+ case 'G':
+ return afb_method_get;
+ case 'H':
+ return afb_method_head;
+ case 'O':
+ return afb_method_options;
+ case 'P':
+ switch (method[1] & ~' ') {
+ case 'A':
+ return afb_method_patch;
+ case 'O':
+ return afb_method_post;
+ case 'U':
+ return afb_method_put;
+ }
+ break;
+ case 'T':
+ return afb_method_trace;
+ }
+ return afb_method_none;
+}
+
+#if !defined(MHD_HTTP_METHOD_PATCH)
+#define MHD_HTTP_METHOD_PATCH "PATCH"
+#endif
+const char *get_method_name(enum afb_method method)
+{
+ switch (method) {
+ case afb_method_get:
+ return MHD_HTTP_METHOD_GET;
+ case afb_method_post:
+ return MHD_HTTP_METHOD_POST;
+ case afb_method_head:
+ return MHD_HTTP_METHOD_HEAD;
+ case afb_method_connect:
+ return MHD_HTTP_METHOD_CONNECT;
+ case afb_method_delete:
+ return MHD_HTTP_METHOD_DELETE;
+ case afb_method_options:
+ return MHD_HTTP_METHOD_OPTIONS;
+ case afb_method_patch:
+ return MHD_HTTP_METHOD_PATCH;
+ case afb_method_put:
+ return MHD_HTTP_METHOD_PUT;
+ case afb_method_trace:
+ return MHD_HTTP_METHOD_TRACE;
+ default:
+ return NULL;
+ }
+}
+
+