Mercurial > hg > orthanc
diff 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 |
line wrap: on
line diff
--- a/Core/HttpServer/HttpHandler.cpp Tue Jan 08 14:56:10 2013 +0100 +++ b/Core/HttpServer/HttpHandler.cpp Wed Jan 09 11:41:13 2013 +0100 @@ -90,4 +90,44 @@ return it->second; } } + + + + void HttpHandler::ParseCookies(HttpHandler::Arguments& result, + const HttpHandler::Arguments& httpHeaders) + { + result.clear(); + + HttpHandler::Arguments::const_iterator it = httpHeaders.find("cookies"); + if (it != httpHeaders.end()) + { + const std::string& cookies = it->second; + + size_t pos = 0; + while (pos != std::string::npos) + { + size_t nextSemicolon = cookies.find(";", pos); + std::string cookie; + + if (nextSemicolon == std::string::npos) + { + cookie = cookies.substr(pos); + pos = std::string::npos; + } + else + { + cookie = cookies.substr(pos, nextSemicolon - pos); + pos = nextSemicolon + 1; + } + + size_t equal = cookie.find("="); + if (equal != std::string::npos) + { + std::string name = Toolbox::StripSpaces(cookie.substr(0, equal)); + std::string value = Toolbox::StripSpaces(cookie.substr(equal + 1)); + result[name] = value; + } + } + } + } }