1 #include "../../../include/http/pages/showimagepage.h"
\r
9 std::map<std::string,std::vector<char> > ShowImagePage::m_imagecache;
\r
10 std::set<std::string> ShowImagePage::m_imagewhitelist;
\r
12 ShowImagePage::ShowImagePage(SQLite3DB::DB *db):IPageHandler(db)
\r
14 m_imagewhitelist.insert("images/new_posts.png");
\r
15 m_imagewhitelist.insert("images/no_new_posts.png");
\r
18 void ShowImagePage::handleRequest(Poco::Net::HTTPServerRequest &request, Poco::Net::HTTPServerResponse &response)
\r
20 m_log->trace("ShowImagePage::handleRequest from "+request.clientAddress().toString());
\r
22 std::map<std::string,std::string> queryvars;
\r
23 CreateQueryVarMap(request,queryvars);
\r
25 if(request.getVersion()==Poco::Net::HTTPRequest::HTTP_1_1)
\r
27 response.setChunkedTransferEncoding(true);
\r
30 std::string content="";
\r
31 if(queryvars.find("image")!=queryvars.end() && m_imagewhitelist.find((*queryvars.find("image")).second)!=m_imagewhitelist.end())
\r
33 if(m_imagecache.find((*queryvars.find("image")).second)!=m_imagecache.end())
\r
35 content+=std::string(m_imagecache[(*queryvars.find("image")).second].begin(),m_imagecache[(*queryvars.find("image")).second].end());
\r
39 FILE *infile=fopen((*queryvars.find("image")).second.c_str(),"rb");
\r
42 fseek(infile,0,SEEK_END);
\r
43 long filelen=ftell(infile);
\r
44 fseek(infile,0,SEEK_SET);
\r
48 std::vector<char> data(filelen,0);
\r
49 fread(&data[0],1,data.size(),infile);
\r
50 content+=std::string(data.begin(),data.end());
\r
51 m_imagecache[(*queryvars.find("image")).second]=data;
\r
59 std::ostream &ostr = response.send();
\r
63 const bool ShowImagePage::WillHandleURI(const std::string &uri)
\r
65 if(uri.find("showimage.htm")!=std::string::npos)
\r