#include <stddef.h>
#include <string>
+#include <unordered_map>
#include <vector>
// Split a line on whitespace, e.g. "foo bar baz" -> {"foo", "bar", "baz"}.
// Split a string on \n or \r\n, e.g. "foo\nbar\r\n\nbaz\r\n\r\n" -> {"foo", "bar", "baz"}.
std::vector<std::string> split_lines(const std::string &str);
+// Extract HTTP headers from a request or response. Ignores the first line,
+// where the verb or the return code is.
+std::unordered_multimap<std::string, std::string> extract_headers(
+ const std::vector<std::string> &lines, const std::string &log_context);
+
// Add the new data to an existing string, looking for \r\n\r\n
// (typical of HTTP requests and/or responses). Will return one
// of the given statuses.