diff options
author | David Lamparter <equinox@diac24.net> | 2013-03-25 23:19:42 +0100 |
---|---|---|
committer | David Lamparter <equinox@diac24.net> | 2013-03-25 23:19:42 +0100 |
commit | a69a211a4a95e5c4ac0055a8f2de8ec1c56a7d1a (patch) | |
tree | 065022d9510317d5a4cfe8502e2bfaab47ff13ea /cethcan/http.c | |
parent | 1b5e4f4ba195ad4ed02cfac6129c386c4aeaf7cd (diff) |
cethcan: more code
Diffstat (limited to 'cethcan/http.c')
-rw-r--r-- | cethcan/http.c | 32 |
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); +} |