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;
+        }
+      }
+    }
+  }
 }