f6f2cc042597a5999ee58b6cb4767202a44ce940
[fms.git] / include / http / ipagehandler.h
1 #ifndef _ipagehandler_\r
2 #define _ipagehandler_\r
3 \r
4 #include "../ilogger.h"\r
5 \r
6 #include <Poco/Net/HTTPRequestHandler.h>\r
7 #include <Poco/Net/HTTPServerRequest.h>\r
8 #include <Poco/Net/HTTPServerResponse.h>\r
9 \r
10 #include <cstdlib>\r
11 #include <string>\r
12 #include <map>\r
13 #include <vector>\r
14 \r
15 class IPageHandler:public Poco::Net::HTTPRequestHandler,public ILogger\r
16 {\r
17 public:\r
18         IPageHandler()  {}\r
19         IPageHandler(const std::string &templatestr, const std::string &pagename):m_template(templatestr),m_pagename(pagename)  {  }\r
20         virtual ~IPageHandler() {}\r
21         virtual const bool WillHandleURI(const std::string &uri);\r
22 \r
23         virtual IPageHandler *New()=0;  // returns a new instance of the object\r
24 \r
25         virtual void handleRequest(Poco::Net::HTTPServerRequest &request, Poco::Net::HTTPServerResponse &response);\r
26 \r
27 private:\r
28         virtual const std::string GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)=0;\r
29 \r
30 protected:\r
31         // converts from basename[#] query args into a vector where the vector pos is the index pos #\r
32         void CreateArgArray(const std::map<std::string,std::string> &vars, const std::string &basename, std::vector<std::string> &args);\r
33         const std::string CreateTrueFalseDropDown(const std::string &name, const std::string &selected);\r
34 \r
35         void CreateQueryVarMap(Poco::Net::HTTPServerRequest &request, std::map<std::string,std::string> &vars);\r
36 \r
37         const std::string CreateFormPassword();\r
38         const bool ValidateFormPassword(const std::map<std::string,std::string> &vars);\r
39 \r
40         // replaces html elements with encoded characters (i.e. < becomes &lt;)\r
41         const std::string SanitizeOutput(const std::string &input);\r
42         // don't replace space with &nbsp;, because browser might convert to unicode non breaking space character\r
43         const std::string SanitizeTextAreaOutput(const std::string &input);\r
44 \r
45         std::string m_template;\r
46         std::string m_pagename;\r
47 \r
48 };\r
49 \r
50 #endif  // _ipagehandler_\r