23 #include <graphlab/util/web_util.hpp>
24 #include <graphlab/util/stl_util.hpp>
31 std::string url_decode(
const std::string& url) {
32 #define HEXTOI(x) (isdigit(x) ? x - '0' : x - 'W')
34 for (
size_t i = 0; i < url.size(); ++i) {
36 (i+1 < url.size() && isxdigit(url[i+1])) &&
37 (i+1 < url.size() && isxdigit(url[i+2]))) {
38 const char a = tolower(url[i+1]);
39 const char b = tolower(url[i+2]);
40 const char new_char = ((HEXTOI(a) << 4) | HEXTOI(b));
42 ret_str.push_back(new_char);
43 }
else if (url[i] ==
'+') {
44 ret_str.push_back(
' ');
46 ret_str.push_back(url[i]);
55 std::map<std::string, std::string> parse_query(
const std::string& query) {
57 std::map<std::string, std::string> map;
58 for(
size_t i = 0; i+1 < pairs.size(); i+=2)
59 map[url_decode(pairs[i])] = url_decode(pairs[i+1]);