Ver Fonte

Cpp implementation for mg_get_cookie().
The user can pass standard strings for cookie name get back the corresponding value.
The method returns the size of the cookie string read.

HariKamath há 12 anos atrás
pai
commit
b28f41fc9f
2 ficheiros alterados com 20 adições e 0 exclusões
  1. 10 0
      include/CivetServer.h
  2. 10 0
      src/CivetServer.cpp

+ 10 - 0
include/CivetServer.h

@@ -151,6 +151,16 @@ public:
      * @returns the handler that matches the requested URI or 0 if none were found.
      */
     CivetHandler *getHandler(const char *uri, unsigned urilen) const;
+	
+	/**
+	 * getCookie(const std::string &_cookieName, std::string &_cookieValue)
+	 * @param conn - the 
+	 * @param _cookieName - cookie name to h=get the value from
+	 * @param _cookieValue - cookie value is returned using thiis reference
+	 * @puts the cookie value string that matches the cookie name in the _cookieValue string.
+	 * @returns the size of the cookie value string read.
+	*/
+	int getCookie(struct mg_connection *conn, const std::string &cookieName, std::string &cookieValue);
 
 protected:
 

+ 10 - 0
src/CivetServer.cpp

@@ -153,3 +153,13 @@ void CivetServer::close() {
     uris.clear();
 
 }
+
+int CivetServer::getCookie(struct mg_connection *conn, const std::string &cookieName, std::string &cookieValue)
+{
+	//Maximum cookie length as per microsoft is 4096. http://msdn.microsoft.com/en-us/library/ms178194.aspx
+	char _cookieValue[4096];
+	const char *cookie = mg_get_header(conn, "Cookie");
+	int lRead = mg_get_cookie(cookie, cookieName.c_str(), _cookieValue, sizeof(_cookieValue));
+	cookieValue = std::string(_cookieValue);
+	return lRead;
+}