version 0.3.0
[fms.git] / include / http / ipagehandler.h
index 66e15b8..745f727 100644 (file)
@@ -1,38 +1,40 @@
 #ifndef _ipagehandler_\r
 #define _ipagehandler_\r
 \r
+#include "../ilogger.h"\r
+\r
+#include <Poco/Net/HTTPRequestHandler.h>\r
+#include <Poco/Net/HTTPServerRequest.h>\r
+#include <Poco/Net/HTTPServerResponse.h>\r
+\r
 #include <cstdlib>\r
 #include <string>\r
 #include <map>\r
 #include <vector>\r
-#include <shttpd.h>\r
 \r
-class IPageHandler\r
+class IPageHandler:public Poco::Net::HTTPRequestHandler,public ILogger\r
 {\r
 public:\r
        IPageHandler()  {}\r
        IPageHandler(const std::string &templatestr)    { m_template=templatestr; }\r
        virtual ~IPageHandler() {}\r
+       virtual const bool WillHandleURI(const std::string &uri)=0;\r
+\r
+       virtual IPageHandler *New()=0;  // returns a new instance of the object\r
 \r
-       /**\r
-               \brief Handles request for a page\r
-               \r
-               \return true if request was handled, false if it was ignored\r
-       */\r
-       const bool Handle(shttpd_arg *arg);\r
+       virtual void handleRequest(Poco::Net::HTTPServerRequest &request, Poco::Net::HTTPServerResponse &response);\r
 \r
 private:\r
-       virtual const bool WillHandleURI(const std::string &uri)=0;\r
        virtual const std::string GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)=0;\r
-       \r
+\r
 protected:\r
-       // splits apart data into name,data pairs in args map\r
-       void HandleMultiPartData(const std::string &contenttypeheader, char *data, const long datalen, std::map<std::string,std::string> &args);\r
        // converts from basename[#] query args into a vector where the vector pos is the index pos #\r
        void CreateArgArray(const std::map<std::string,std::string> &vars, const std::string &basename, std::vector<std::string> &args);\r
        const std::string CreateTrueFalseDropDown(const std::string &name, const std::string &selected);\r
 \r
-       // replaces html control characters with elements (i.e. < becomes &lt;)\r
+       void CreateQueryVarMap(Poco::Net::HTTPServerRequest &request, std::map<std::string,std::string> &vars);\r
+\r
+       // replaces html elements with encoded characters (i.e. < becomes &lt;)\r
        const std::string SanitizeOutput(const std::string &input);\r
 \r
        std::string m_template;\r