svvitch
digital signage player
|
00001 #pragma once 00002 00003 #include <Poco/Logger.h> 00004 #include <Poco/Net/AbstractHTTPRequestHandler.h> 00005 #include <Poco/Net/HTMLForm.h> 00006 #include <Poco/Net/HTTPRequestHandler.h> 00007 #include <Poco/Net/HTTPRequestHandlerFactory.h> 00008 #include <Poco/Net/HTTPServer.h> 00009 #include <Poco/Net/HTTPServerParams.h> 00010 #include <Poco/Net/HTTPServerRequest.h> 00011 #include <Poco/Net/HTTPServerResponse.h> 00012 #include <Poco/Net/HTTPServerParams.h> 00013 #include <Poco/Net/MessageHeader.h> 00014 #include <Poco/Net/ServerSocket.h> 00015 #include <Poco/Net/PartHandler.h> 00016 #include <Poco/Path.h> 00017 00018 #include <iostream> 00019 #include <map> 00020 00021 using std::map; 00022 using std::string; 00023 using Poco::Path; 00024 using Poco::Net::HTMLForm; 00025 using Poco::Net::HTTPRequestHandler; 00026 using Poco::Net::HTTPRequestHandlerFactory; 00027 using Poco::Net::HTTPServerRequest; 00028 using Poco::Net::HTTPServerResponse; 00029 using Poco::Net::HTTPResponse; 00030 using Poco::Net::MessageHeader; 00031 00032 00037 class BasePartHandler: public Poco::Net::PartHandler { 00038 private: 00039 Poco::Logger& _log; 00040 00041 public: 00043 BasePartHandler(); 00045 virtual ‾BasePartHandler(); 00046 00051 void handlePart(const MessageHeader& header, std::istream& stream); 00052 }; 00053 00054 00055 00059 class BaseRequestHandler: public HTTPRequestHandler { 00060 private: 00061 HTTPServerRequest* _request; 00062 HTTPServerResponse* _response; 00063 HTMLForm* _form; 00064 00065 protected: 00066 Poco::Logger& _log; 00068 HTTPServerRequest& request(); 00070 HTTPServerResponse& response(); 00072 HTMLForm& form(); 00073 00078 virtual void doRequest(); 00079 00081 bool sendFile(Path& path); 00082 00084 void sendJSONP(const string& functionName, const map<string, string>& json); 00085 00087 void writeResult(const int code, const string& description); 00088 00090 void sendResponse(HTTPResponse::HTTPStatus status, const string& message); 00091 00092 public: 00094 BaseRequestHandler(); 00095 00097 virtual ‾BaseRequestHandler(); 00098 00100 void handleRequest(HTTPServerRequest& requesr, HTTPServerResponse& response); 00101 };