16 struct ReadOnlyBuffer :
public std::streambuf
18 ReadOnlyBuffer(std::string_view view);
22 static const std::unordered_map<std::string_view, std::function<void(
HTTPParser&, std::string_view)>> contentTypeParsers;
25 static inline const std::string contentLengthHeader =
"Content-Length";
26 static inline const std::string contentTypeHeader =
"Content-Type";
27 static inline const std::string transferEncodingHeader =
"Transfer-Encoding";
28 static inline const std::string utf8Encoded =
"charset=utf-8";
29 static inline const std::string chunkEncoded =
"chunked";
30 static inline constexpr std::string_view crlfcrlf =
"\r\n\r\n";
31 static inline constexpr std::string_view crlf =
"\r\n";
34 static inline constexpr std::string_view urlEncoded =
"application/x-www-form-urlencoded";
35 static inline constexpr std::string_view jsonEncoded =
"application/json";
36 static inline constexpr std::string_view multipartEncoded =
"multipart/form-data";
39 std::unordered_map<std::string, std::string, InsensitiveStringHash, InsensitiveStringEqual> headers;
40 std::vector<Multipart> multiparts;
41 std::unordered_map<std::string, std::string> queryParameters;
42 json::JSONParser jsonParser;
43 std::pair<int, std::string> response;
45 std::string httpVersion;
46 std::string parameters;
48 std::vector<std::string> chunks;
54 std::string mergeChunks()
const;
57 void parseQueryParameter(std::string_view rawParameters);
59 void parseMultipart(std::string_view data);
61 void parseContentType();
64 void parseChunkEncoded(std::string_view HTTPMessage,
bool isUTF8);
81 void parse(std::string_view HTTPMessage);
83 const std::string& getMethod()
const;
85 double getHTTPVersion()
const;
87 const std::string& getParameters()
const;
89 const std::unordered_map<std::string, std::string>& getQueryParameters()
const;
91 const std::pair<int, std::string>& getFullResponse()
const;
93 int getResponseCode()
const;
95 const std::string& getResponseMessage()
const;
99 const std::string& getBody()
const;
101 const std::vector<std::string>& getChunks()
const;
103 const json::JSONParser& getJSON()
const;
105 const std::string& getRawData()
const;
107 const std::vector<Multipart>& getMultiparts()
const;
109 operator bool()
const;
std::unordered_map< std::string, std::string, InsensitiveStringHash, InsensitiveStringEqual > HeadersMap
Case insensitive unordered_map.