#include "http.h" #include #include #include #include HTTPRequest::HTTPRequest(std::istream& is) { std::string line, firstline; std::getline(is, firstline); std::vector splitvec; boost::algorithm::split(splitvec, firstline, boost::algorithm::is_space()); type = splitvec[0]; path = splitvec[1]; httpver = splitvec[2]; std::cout << boost::format("%s %s %s\n") % type % path % httpver; while(is.good()) { std::string line; std::getline(is, line); boost::trim(line); if(!line.size()) continue; std::vector v; boost::algorithm::split_regex(v, line, boost::regex(": ")); headers[v[0]] = v[1]; } } HTTPResponse::HTTPResponse() { httpver = "1.1"; } void HTTPResponse::add_header(std::string key, std::string value) { headers[key] = value; } void HTTPResponse::write_headers(std::ostream& os) { os << boost::format("HTTP/%s %d %s\r\n") % httpver % code % status; for(HTTPHeaders::iterator it = headers.begin(); it != headers.end(); it++) { os << boost::format("%s: %s\r\n") % it->first % it->second; } os << "\r\n"; }