comparison Core/HttpServer/HttpHandler.cpp @ 330:78a8eaa5f30b

cookies
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 09 Jan 2013 11:41:13 +0100
parents 7f74209ea0f8
children c51c9ed603e6
comparison
equal deleted inserted replaced
329:f579d50fdf8f 330:78a8eaa5f30b
88 else 88 else
89 { 89 {
90 return it->second; 90 return it->second;
91 } 91 }
92 } 92 }
93
94
95
96 void HttpHandler::ParseCookies(HttpHandler::Arguments& result,
97 const HttpHandler::Arguments& httpHeaders)
98 {
99 result.clear();
100
101 HttpHandler::Arguments::const_iterator it = httpHeaders.find("cookies");
102 if (it != httpHeaders.end())
103 {
104 const std::string& cookies = it->second;
105
106 size_t pos = 0;
107 while (pos != std::string::npos)
108 {
109 size_t nextSemicolon = cookies.find(";", pos);
110 std::string cookie;
111
112 if (nextSemicolon == std::string::npos)
113 {
114 cookie = cookies.substr(pos);
115 pos = std::string::npos;
116 }
117 else
118 {
119 cookie = cookies.substr(pos, nextSemicolon - pos);
120 pos = nextSemicolon + 1;
121 }
122
123 size_t equal = cookie.find("=");
124 if (equal != std::string::npos)
125 {
126 std::string name = Toolbox::StripSpaces(cookie.substr(0, equal));
127 std::string value = Toolbox::StripSpaces(cookie.substr(equal + 1));
128 result[name] = value;
129 }
130 }
131 }
132 }
93 } 133 }