gradido/src/cpp/HTTPInterface/HandleFileRequest.cpp

49 lines
1.4 KiB
C++

#include "HandleFileRequest.h"
#include "Poco/Net/HTTPServerRequest.h"
#include "Poco/Net/HTTPServerResponse.h"
#include "Poco/DeflatingStream.h"
#include "Poco/FileStream.h"
void HandleFileRequest::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response)
{
response.setChunkedTransferEncoding(true);
std::string uri = request.getURI();
// check endung
size_t last_point = uri.find_last_of('.');
std::string endung = uri.substr(last_point+1);
std::string mediaType;
//printf("endung: %s\n", endung.data());
if (endung == "css") {
mediaType = "text/css";
}
else if (endung == "js") {
mediaType = "text/javascript";
}
else if (endung == "ico") {
mediaType = "image/x-icon";
}
std::string path = "data" + uri;
printf("file path: %s\n", path.data());
try {
response.sendFile(path, mediaType);
}
catch (...) {
std::ostream& _responseStream = response.send();
_responseStream << "Error, file not found";
}
/*
bool _compressResponse(request.hasToken("Accept-Encoding", "gzip"));
if (_compressResponse) response.set("Content-Encoding", "gzip");
std::ostream& _responseStream = response.send();
Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1);
std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream;
responseStream << new Poco::FileInputStream("./data/" + uri);
if (_compressResponse) _gzipStream.close();
*/
}