version 0.3.0
[fms.git] / src / http / pages / showcaptchapage.cpp
index 46a4d3d..088fffa 100644 (file)
@@ -6,9 +6,16 @@
        #include <xmem.h>\r
 #endif\r
 \r
-const std::string ShowCaptchaPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)\r
+void ShowCaptchaPage::handleRequest(Poco::Net::HTTPServerRequest &request, Poco::Net::HTTPServerResponse &response)\r
 {\r
-       std::string content="HTTP/1.1 200 OK\r\n";\r
+       m_log->trace("ShowCaptchaPage::handleRequest from "+request.clientAddress().toString());\r
+\r
+       std::map<std::string,std::string> queryvars;\r
+       CreateQueryVarMap(request,queryvars);\r
+\r
+       response.setChunkedTransferEncoding(true);\r
+\r
+       std::string content="";\r
        if(queryvars.find("UUID")!=queryvars.end())\r
        {\r
                SQLite3DB::Statement st=m_db->Prepare("SELECT MimeType,PuzzleData FROM tblIntroductionPuzzleRequests WHERE Type='captcha' AND UUID=?;");\r
@@ -20,23 +27,23 @@ const std::string ShowCaptchaPage::GeneratePage(const std::string &method, const
                        std::string mime;\r
                        std::string b64data;\r
                        std::vector<unsigned char> data;\r
-                       std::string lenstr;\r
 \r
                        st.ResultText(0,mime);\r
                        st.ResultText(1,b64data);\r
                        Base64::Decode(b64data,data);\r
-                       StringFunctions::Convert(data.size(),lenstr);\r
 \r
                        // mime type should be short and have a / in it - otherwise skip\r
                        if(mime.size()<50 && mime.find("/")!=std::string::npos)\r
                        {\r
-                               content+="Content-Type: "+mime+"\r\n";\r
-                               content+="Content-Length: "+lenstr+"\r\n\r\n";\r
+                               response.setContentType(mime);\r
+                               response.setContentLength(data.size());\r
                                content+=std::string(data.begin(),data.end());\r
                        }\r
                }\r
        }\r
-       return content;\r
+\r
+       std::ostream &ostr = response.send();\r
+       ostr << content;\r
 }\r
 \r
 const bool ShowCaptchaPage::WillHandleURI(const std::string &uri)\r