#ifndef HTTP_PARSER_H #define HTTP_PARSER_H #include "nwedav.h" typedef struct http_header { char *name; char *value; struct http_header *next; } http_header_t; typedef struct { http_method_t method; char *uri; char *query_string; int version_major; int version_minor; http_header_t *headers; char *body; size_t body_len; size_t content_length; int chunked; char *host; char *destination; char *lock_token; char *if_header; int depth; int overwrite; int timeout; char *content_type; char *authorization; } http_request_t; void http_request_init(http_request_t *req); void http_request_free(http_request_t *req); int http_parse_request_line(const char *data, size_t len, http_request_t *req, size_t *consumed); int http_parse_headers(const char *data, size_t len, http_request_t *req, size_t *consumed); int http_parse_request(const char *data, size_t len, http_request_t *req, size_t *consumed); const char *http_get_header(http_request_t *req, const char *name); int http_add_header(http_request_t *req, const char *name, const char *value); http_method_t http_method_from_string(const char *method); const char *http_method_to_string(http_method_t method); int http_url_decode(const char *src, char *dst, size_t dst_size); int http_url_encode(const char *src, char *dst, size_t dst_size); #endif