X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1aeefd997cc362c3b37c1587c5f08891b35c3a75..e126edab6b5649fef4c00f871925e06f24338843:/lib/network/http_dyn.cpp diff --git a/lib/network/http_dyn.cpp b/lib/network/http_dyn.cpp index d020133a..c3a49048 100644 --- a/lib/network/http_dyn.cpp +++ b/lib/network/http_dyn.cpp @@ -1,6 +1,7 @@ #include -eHTTPDyn::eHTTPDyn(eHTTPConnection *c, eString result): eHTTPDataSource(c), result(result) +DEFINE_REF(eHTTPDyn); +eHTTPDyn::eHTTPDyn(eHTTPConnection *c, std::string result): eHTTPDataSource(c), result(result) { wptr=0; char buffer[10]; @@ -29,38 +30,45 @@ int eHTTPDyn::doWrite(int hm) return (size > wptr) ? 1 : -1; } +DEFINE_REF(eHTTPDynPathResolver); +DEFINE_REF(eHTTPDynPathResolver::eHTTPDynEntry); + eHTTPDynPathResolver::eHTTPDynPathResolver() { -#warning autodelete removed } -void eHTTPDynPathResolver::addDyn(eString request, eString path, eString (*function)(eString, eString, eString, eHTTPConnection*)) +void eHTTPDynPathResolver::addDyn(std::string request, std::string path, std::string (*function)(std::string, std::string, std::string, eHTTPConnection*)) { dyn.push_back(new eHTTPDynEntry(request, path, function)); } -eHTTPDataSource *eHTTPDynPathResolver::getDataSource(eString request, eString path, eHTTPConnection *conn) +RESULT eHTTPDynPathResolver::getDataSource(eHTTPDataSourcePtr &ptr, std::string request, std::string path, eHTTPConnection *conn) { - eString p, opt; - if (path.find('?')!=eString::npos) + std::string p, opt; + if (path.find('?')!=std::string::npos) { - p=path.left(path.find('?')); - opt=path.mid(path.find('?')+1); + p=path.substr(0, path.find('?')); + opt=path.substr(path.find('?')+1); } else { p=path; opt=""; } - for (ePtrList::iterator i(dyn); i != dyn.end(); ++i) + for (eSmartPtrList::iterator i(dyn); i != dyn.end(); ++i) if ((i->path==p) && (i->request==request)) { conn->code=-1; - eString s=i->function(request, path, opt, conn); + std::string s=i->function(request, path, opt, conn); - if (s) - return new eHTTPDyn(conn, s); + if (!s.empty()) + { + ptr = new eHTTPDyn(conn, s); + return 0; + } - return new eHTTPError(conn, 500); + ptr = new eHTTPError(conn, 500); + return 0; } - return 0; + ptr = 0; + return -1; }