version 0.1.7
[fms.git] / src / http / pages / showcaptchapage.cpp
diff --git a/src/http/pages/showcaptchapage.cpp b/src/http/pages/showcaptchapage.cpp
new file mode 100644 (file)
index 0000000..abd65b3
--- /dev/null
@@ -0,0 +1,48 @@
+#include "../../../include/http/pages/showcaptchapage.h"\r
+#include "../../../include/base64.h"\r
+#include "../../../include/stringfunctions.h"\r
+\r
+#ifdef XMEM\r
+       #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
+{\r
+       std::string content="HTTP/1.1 200 OK\r\n";\r
+       if(queryvars.find("UUID")!=queryvars.end())\r
+       {\r
+               SQLite3DB::Statement st=m_db->Prepare("SELECT MimeType,PuzzleData FROM tblIntroductionPuzzleRequests WHERE UUID=?;");\r
+               st.Bind(0,(*queryvars.find("UUID")).second);\r
+               st.Step();\r
+\r
+               if(st.RowReturned())\r
+               {\r
+                       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
+                       content+="Content-Type: "+mime+"\r\n";\r
+                       content+="Content-Length: "+lenstr+"\r\n\r\n";\r
+                       content+=std::string(data.begin(),data.end());\r
+               }\r
+       }\r
+       return content;\r
+}\r
+\r
+const bool ShowCaptchaPage::WillHandleURI(const std::string &uri)\r
+{\r
+       if(uri.find("showcaptcha.")!=std::string::npos)\r
+       {\r
+               return true;\r
+       }\r
+       else\r
+       {\r
+               return false;\r
+       }\r
+}\r