summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/mongoose/examples/restful_api/restful_api.c
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-01-10 13:30:30 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2015-01-10 13:30:30 +0100
commit8556d0cdf7058be2c519bd4d8e7006ea9e913527 (patch)
tree09594058dc17564b4ff3c106581d0856cf69c2d5 /3rdparty/mongoose/examples/restful_api/restful_api.c
parent61f7cd05dfed932dd1be927608a4989c187cc737 (diff)
Added integral source of mongoose (nw)
Diffstat (limited to '3rdparty/mongoose/examples/restful_api/restful_api.c')
-rw-r--r--3rdparty/mongoose/examples/restful_api/restful_api.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/3rdparty/mongoose/examples/restful_api/restful_api.c b/3rdparty/mongoose/examples/restful_api/restful_api.c
new file mode 100644
index 00000000000..ff0ac83a9f3
--- /dev/null
+++ b/3rdparty/mongoose/examples/restful_api/restful_api.c
@@ -0,0 +1,51 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "mongoose.h"
+
+static const char *s_no_cache_header =
+ "Cache-Control: max-age=0, post-check=0, "
+ "pre-check=0, no-store, no-cache, must-revalidate\r\n";
+
+static void handle_restful_call(struct mg_connection *conn) {
+ char n1[100], n2[100];
+
+ // Get form variables
+ mg_get_var(conn, "n1", n1, sizeof(n1));
+ mg_get_var(conn, "n2", n2, sizeof(n2));
+
+ mg_printf_data(conn, "{ \"result\": %lf }", strtod(n1, NULL) + strtod(n2, NULL));
+}
+
+static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
+ switch (ev) {
+ case MG_AUTH: return MG_TRUE;
+ case MG_REQUEST:
+ if (!strcmp(conn->uri, "/api/sum")) {
+ handle_restful_call(conn);
+ return MG_TRUE;
+ }
+ mg_send_file(conn, "index.html", s_no_cache_header);
+ return MG_MORE;
+ default: return MG_FALSE;
+ }
+}
+
+int main(void) {
+ struct mg_server *server;
+
+ // Create and configure the server
+ server = mg_create_server(NULL, ev_handler);
+ mg_set_option(server, "listening_port", "8000");
+
+ // Serve request. Hit Ctrl-C to terminate the program
+ printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
+ for (;;) {
+ mg_poll_server(server, 1000);
+ }
+
+ // Cleanup, and free server instance
+ mg_destroy_server(&server);
+
+ return 0;
+}