]> gitweb.ps.run Git - chirp/blob - src/main.c
Initial commit
[chirp] / src / main.c
1 #include "mongoose.h"\r
2 \r
3 \r
4 // HTML\r
5 \r
6 char *\r
7 html_user_post(struct mg_str user) {\r
8     static char html[1024];\r
9     snprintf(html, 1024,\r
10         "<!DOCTYPE html>"\r
11         "<html>"\r
12         "<body>"\r
13         "<form action=\"/user/%.*s/post\" method=\"post\">"\r
14         "    <input type=\"text\" id=\"content\" name=\"content\"><br>"\r
15         "    <input type=\"submit\" value=\"Chirp!\">"\r
16         "</form>"\r
17         "</body>"\r
18         "</html>",\r
19         user.len, user.ptr);\r
20     return html;\r
21 }\r
22 \r
23 // Post\r
24 \r
25 \r
26 \r
27 \r
28 // User\r
29 \r
30 \r
31 \r
32 \r
33 \r
34 static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {\r
35   if (ev == MG_EV_HTTP_MSG) {\r
36     struct mg_http_message *hm = (struct mg_http_message *) ev_data;\r
37     if (mg_strcmp(hm->method, mg_str("post"))) {\r
38         printf("POST: %.*s\n", hm->body.len, hm->body.ptr);\r
39     }\r
40     if (mg_http_match_uri(hm, "/user/*/post")) {\r
41         struct mg_str caps[2];\r
42         printf("uri: %.*s\n", hm->uri.len, hm->uri.ptr);\r
43         mg_match(hm->uri, mg_str("/user/*/post"), caps);\r
44         mg_http_reply(c, 200, "", html_user_post(caps[0]));\r
45     }\r
46     else {\r
47         mg_http_reply(c, 404, "", "Not found :/");\r
48     }\r
49   }\r
50 }\r
51 \r
52 int main(int argc, char *argv[]) {\r
53   struct mg_mgr mgr;\r
54   mg_mgr_init(&mgr);                                      // Init manager\r
55   mg_http_listen(&mgr, "http://0.0.0.0:8000", fn, &mgr);  // Setup listener\r
56   for (;;) mg_mgr_poll(&mgr, 1000);                       // Event loop\r
57   mg_mgr_free(&mgr);                                      // Cleanup\r
58   return 0;\r
59 }\r