#ifndef MEMGRAPH_SERVER_HTTP_HTTPPARSER_HPP #define MEMGRAPH_SERVER_HTTP_HTTPPARSER_HPP #include <iostream> #include <cstdlib> #include <http_parser.h> namespace http { class HttpParserSettings; class HttpParser { friend class HttpParserSettings; public: HttpParser(); static void init(); size_t execute(HttpParserSettings& settings, const char* data, size_t size); template <typename T> T* data(); template <typename T> void data(T* value); private: http_parser parser; std::string last_field; static int on_message_begin(http_parser* parser); static int on_url(http_parser* parser, const char* at, size_t length); static int on_status_complete(http_parser* parser, const char* at, size_t length); static int on_header_field(http_parser* parser, const char* at, size_t length); static int on_header_value(http_parser* parser, const char* at, size_t length); static int on_headers_complete(http_parser* parser); static int on_body(http_parser* parser, const char* at, size_t length); static int on_message_complete(http_parser* parser); }; } #endif