diff options
Diffstat (limited to 'src/HttpResponse.cpp')
-rw-r--r-- | src/HttpResponse.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/HttpResponse.cpp b/src/HttpResponse.cpp index 2d69583..c07178f 100644 --- a/src/HttpResponse.cpp +++ b/src/HttpResponse.cpp @@ -2,6 +2,32 @@ #include <sstream> +void HttpResponse::add_headers_and_content(const std::string& input) +{ + bool is_parsing_headers = true; + + size_t pos = 0; + std::string s = input; + std::string line; + while ((pos = s.find("\n")) != std::string::npos) { + line = s.substr(0, pos + 1); + + if (is_parsing_headers) { + size_t delim_pos = 0; + if ((delim_pos = line.find(":")) != std::string::npos) { + std::string header_key = s.substr(0, delim_pos); + std::string header_value = s.substr(delim_pos + 2, s.find("\n") - delim_pos - 2); + m_headers[header_key] = header_value; + } else { + is_parsing_headers = false; + } + } else { + m_content += line; + } + s.erase(0, pos + 1); + } +} + static std::string status_code_string(HttpStatusCode status_code) { switch (status_code) { |