diff options
Diffstat (limited to 'http.cpp')
-rw-r--r-- | http.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
@@ -7,7 +7,7 @@ #include <vector> HTTPRequest::HTTPRequest(std::istream& is) { - std::string firstline; + std::string firstline, query_str; std::getline(is, firstline); std::vector<std::string> splitvec; @@ -15,8 +15,26 @@ HTTPRequest::HTTPRequest(std::istream& is) { type = splitvec[0]; path = splitvec[1]; - url_decode(path); httpver = splitvec[2]; + + if(path.find("?") != std::string::npos) { + boost::algorithm::split(splitvec, path, boost::is_any_of("?")); + path = splitvec[0]; + query_str = splitvec[1]; + boost::algorithm::split(splitvec, query_str, boost::is_any_of("&")); + for(std::vector<std::string>::iterator it = splitvec.begin(); it != splitvec.end(); it++) { + std::vector<std::string> sv; + boost::algorithm::split(sv, *it, boost::is_any_of("=")); + std::string key = sv[0]; + std::string value = sv[1]; + url_decode(key); + url_decode(value); + query[key] = value; + std::cout << boost::format("%s: %s") % key % value << std::endl; + } + } + url_decode(path); + std::cout << boost::format("%s %s %s\n") % type % path % httpver; while(is.good()) { |