1 #ifndef _ipagehandler_
\r
2 #define _ipagehandler_
\r
4 #include "../ilogger.h"
\r
5 #include "../idatabase.h"
\r
7 #include <Poco/Net/HTTPRequestHandler.h>
\r
8 #include <Poco/Net/HTTPServerRequest.h>
\r
9 #include <Poco/Net/HTTPServerResponse.h>
\r
16 class IPageHandler:public Poco::Net::HTTPRequestHandler,public ILogger,public IDatabase
\r
19 IPageHandler(SQLite3DB::DB *db):IDatabase(db) {}
\r
20 IPageHandler(SQLite3DB::DB *db, const std::string &templatestr, const std::string &pagename):IDatabase(db),m_template(templatestr),m_pagename(pagename) { }
\r
21 virtual ~IPageHandler() {}
\r
22 virtual const bool WillHandleURI(const std::string &uri);
\r
24 virtual IPageHandler *New()=0; // returns a new instance of the object
\r
26 virtual void handleRequest(Poco::Net::HTTPServerRequest &request, Poco::Net::HTTPServerResponse &response);
\r
29 virtual const std::string GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)=0;
\r
32 // converts from basename[#] query args into a vector where the vector pos is the index pos #
\r
33 void CreateArgArray(const std::map<std::string,std::string> &vars, const std::string &basename, std::vector<std::string> &args);
\r
34 const std::string CreateTrueFalseDropDown(const std::string &name, const std::string &selected);
\r
36 void CreateQueryVarMap(Poco::Net::HTTPServerRequest &request, std::map<std::string,std::string> &vars);
\r
38 const std::string CreateFormPassword();
\r
39 const bool ValidateFormPassword(const std::map<std::string,std::string> &vars);
\r
41 // replaces html elements with encoded characters (i.e. < becomes <)
\r
42 const std::string SanitizeOutput(const std::string &input);
\r
43 // don't replace space with , because browser might convert to unicode non breaking space character
\r
44 const std::string SanitizeTextAreaOutput(const std::string &input);
\r
46 std::string m_template;
\r
47 std::string m_pagename;
\r
51 #endif // _ipagehandler_
\r