From a69a211a4a95e5c4ac0055a8f2de8ec1c56a7d1a Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Mon, 25 Mar 2013 23:19:42 +0100 Subject: cethcan: more code --- cethcan/http.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 cethcan/http.c (limited to 'cethcan/http.c') 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 +#include + +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); +} -- cgit v1.2.1