diff options
-rw-r--r-- | icespider/fcgi/cgiRequestBase.cpp | 15 | ||||
-rw-r--r-- | icespider/fcgi/cgiRequestBase.h | 6 |
2 files changed, 13 insertions, 8 deletions
diff --git a/icespider/fcgi/cgiRequestBase.cpp b/icespider/fcgi/cgiRequestBase.cpp index eb141c2..a773b07 100644 --- a/icespider/fcgi/cgiRequestBase.cpp +++ b/icespider/fcgi/cgiRequestBase.cpp @@ -27,6 +27,12 @@ namespace IceSpider { } } + std::string + operator*(const CgiRequestBase::Env & t) + { + return std::string(std::get<0>(t), std::get<1>(t)); + } + void CgiRequestBase::initialize() { @@ -41,13 +47,13 @@ namespace IceSpider { auto qs = envmap.find("QUERY_STRING"); if (qs != envmap.end()) { - XWwwFormUrlEncoded::iterateVars(std::string(std::get<0>(qs->second), std::get<1>(qs->second)), [this](auto k, auto v) { + XWwwFormUrlEncoded::iterateVars(*qs->second, [this](auto k, auto v) { qsmap.insert({ k, v }); }, "&"); } auto cs = envmap.find("HTTP_COOKIE"); if (cs != envmap.end()) { - XWwwFormUrlEncoded::iterateVars(std::string(std::get<0>(cs->second), std::get<1>(cs->second)), [this](auto k, auto v) { + XWwwFormUrlEncoded::iterateVars(*cs->second, [this](auto k, auto v) { cookiemap.insert({ k, v }); }, "; "); } @@ -60,7 +66,7 @@ namespace IceSpider { if (i == vm.end()) { return IceUtil::None; } - return std::string(std::get<0>(i->second), std::get<1>(i->second)); + return *i->second; } OptionalString @@ -84,8 +90,7 @@ namespace IceSpider { { try { auto i = envmap.find("REQUEST_METHOD"); - return Slicer::ModelPartForEnum<HttpMethod>::lookup( - std::string(std::get<0>(i->second), std::get<1>(i->second))); + return Slicer::ModelPartForEnum<HttpMethod>::lookup(*i->second); } catch (const Slicer::InvalidEnumerationSymbol &) { throw IceSpider::Http405_MethodNotAllowed(); diff --git a/icespider/fcgi/cgiRequestBase.h b/icespider/fcgi/cgiRequestBase.h index 1cfcacc..e613866 100644 --- a/icespider/fcgi/cgiRequestBase.h +++ b/icespider/fcgi/cgiRequestBase.h @@ -13,14 +13,14 @@ namespace IceSpider { bool operator()(char const *a, char const *b) const; }; - typedef std::tuple<char *, char *> Env; - typedef std::map<const char *, Env, cmp_str> VarMap; - CgiRequestBase(Core * c, char ** env); void addenv(char *); void initialize(); public: + typedef std::tuple<char *, char *> Env; + typedef std::map<const char *, Env, cmp_str> VarMap; + const PathElements & getRequestPath() const override; HttpMethod getRequestMethod() const override; OptionalString getQueryStringParam(const std::string & key) const override; |