From 77e0361f2392aba1a885b6d653560e669079fbac Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 9 Oct 2016 01:17:35 +0100 Subject: Tidy creation of strings from ranges --- icespider/fcgi/cgiRequestBase.cpp | 15 ++++++++++----- 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::lookup( - std::string(std::get<0>(i->second), std::get<1>(i->second))); + return Slicer::ModelPartForEnum::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 Env; - typedef std::map VarMap; - CgiRequestBase(Core * c, char ** env); void addenv(char *); void initialize(); public: + typedef std::tuple Env; + typedef std::map VarMap; + const PathElements & getRequestPath() const override; HttpMethod getRequestMethod() const override; OptionalString getQueryStringParam(const std::string & key) const override; -- cgit v1.2.3