#ifndef _ipagehandler_\r
#define _ipagehandler_\r
\r
-#include <shttpd.h>\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
\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
- /**\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 IPageHandler *New()=0; // returns a new instance of the object\r
+\r
+ virtual void handleRequest(Poco::Net::HTTPServerRequest &request, Poco::Net::HTTPServerResponse &response);\r
\r
private:\r
- void HandlePost(shttpd_arg *arg);\r
- void HadleGet(shttpd_arg *arg);\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
+ // 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
+ void CreateQueryVarMap(Poco::Net::HTTPServerRequest &request, std::map<std::string,std::string> &vars);\r
+\r
+ const std::string CreateFormPassword();\r
+ const bool ValidateFormPassword(const std::map<std::string,std::string> &vars);\r
+\r
+ // replaces html elements with encoded characters (i.e. < becomes <)\r
+ const std::string SanitizeOutput(const std::string &input);\r
+\r
+ std::string m_template;\r
+\r
};\r
\r
#endif // _ipagehandler_\r