#ifndef _HTTP_H_ #define _HTTP_H_ #include #include "buffer.h" //static const char *supported_http_versions[] = { "1.1" }; struct header_item; #define MAX_HEADERS 512 struct header_list { struct header_item *items[MAX_HEADERS]; }; struct request { char http_version[4]; char *method; char *path; char *query; char *body; char *data; struct header_list header; }; struct reply { int status; char *body; }; typedef struct reply *(request_callback)(struct request *, void *); struct http; struct http *http_init(void); bool http_register_handler(struct http *http, char *method, char *path, void *data, request_callback *callback); struct reply *http_handle_request(struct http *http, struct buffer *req); struct buffer *http_build_reply(struct reply *reply); const char *http_get_header(struct request *req, const char *key); #endif