#include #include "miniwebcam.h" #include "UDPTCPNetwork.h" #include "inmemorytar.h" std::string GenerateHtmlFile(); InMemoryFile GenerateJpgFile(VideoFrame *vf); InMemoryTar assets; int WebCamServer::HandleRequest (WebRequestBuffer *requestbuffer, WebServerClient *webclient) { if (requestbuffer == NULL || webclient == NULL) return 0; std::string request = requestbuffer->GetRequest(); if (request.compare ("/") == 0) request = "/index.html"; InMemoryFile *imf_do_not_free = NULL; if (request.find("/snapshot.jpg") != std::string::npos) { InMemoryFile jpgfile; Lock(); currentimage.ConvertToJpeg(&jpgfile, 99); UnLock(); if (webclient->SendResponseFileFromMemory(requestbuffer, request, "", (void*) jpgfile.mem, jpgfile.memsize) != 1) return 0; } else if (request.find("/snapshot-float.jpg") != std::string::npos) { InMemoryFile jpgfile; Lock(); currentimagefloat.ConvertToJpeg(&jpgfile, 99); UnLock(); if (webclient->SendResponseFileFromMemory(requestbuffer, request, "", (void*) jpgfile.mem, jpgfile.memsize) != 1) return 0; } else if (assets.FindFile("www"+request, &imf_do_not_free)) { if (imf_do_not_free == NULL) return 0; if (webclient->SendResponseFileFromMemory(requestbuffer, request, "", (void*) imf_do_not_free->mem, imf_do_not_free->memsize) != 1) return 0; } else if (request.find("/index.html") != std::string::npos) { std::string htmlfile = GenerateHtmlFile(); if (webclient->SendResponseFileFromMemory(requestbuffer, request, "", (void*) htmlfile.c_str(), strlen(htmlfile.c_str())) != 1) return 0; } else { return 0; } requestbuffer->Clear(); return 1; }; std::string GenerateHtmlFile() { std::string res; res = "MiniWebCamERROR"; res += ""; return res; };