summaryrefslogtreecommitdiff
path: root/cethcan/http.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@diac24.net>2013-03-25 23:19:42 +0100
committerDavid Lamparter <equinox@diac24.net>2013-03-25 23:19:42 +0100
commita69a211a4a95e5c4ac0055a8f2de8ec1c56a7d1a (patch)
tree065022d9510317d5a4cfe8502e2bfaab47ff13ea /cethcan/http.c
parent1b5e4f4ba195ad4ed02cfac6129c386c4aeaf7cd (diff)
cethcan: more code
Diffstat (limited to 'cethcan/http.c')
-rw-r--r--cethcan/http.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/cethcan/http.c b/cethcan/http.c
new file mode 100644
index 0000000..907ec08
--- /dev/null
+++ b/cethcan/http.c
@@ -0,0 +1,32 @@
+#include "cethcan.h"
+
+#include <event2/http.h>
+#include <event2/buffer.h>
+
+static struct evhttp *evhttp;
+
+static int evb_json_add(const char *data, size_t size, void *arg)
+{
+ struct evbuffer *buf = arg;
+ return evbuffer_add(buf, data, size);
+}
+
+static void http_json_basic(struct evhttp_request *req, void *arg)
+{
+ struct evkeyvalq *outhdr = evhttp_request_get_output_headers(req);
+ struct evbuffer *out = evbuffer_new();
+
+ evhttp_add_header(outhdr, "Content-Type", "text/plain; charset=utf-8");
+
+ json_t *jsout = json_object();
+ json_dump_callback(jsout, evb_json_add, out, JSON_SORT_KEYS | JSON_INDENT(4));
+ evhttp_send_reply(req, 200, "OK", out);
+ evbuffer_free(out);
+}
+
+void http_init(void)
+{
+ evhttp = evhttp_new(ev_base);
+ evhttp_set_cb(evhttp, "/", http_json_basic, NULL);
+ evhttp_bind_socket(evhttp, "127.0.0.1", 34999);
+}