From 1d5f9644822cd877038a46f20791ba25a44b7a66 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 3 Mar 2018 17:34:03 +0000 Subject: Dedupe mapping of vars --- icespider/fcgi/cgiRequestBase.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/icespider/fcgi/cgiRequestBase.cpp b/icespider/fcgi/cgiRequestBase.cpp index 73a6770..da1bd9f 100644 --- a/icespider/fcgi/cgiRequestBase.cpp +++ b/icespider/fcgi/cgiRequestBase.cpp @@ -44,6 +44,18 @@ namespace IceSpider { return std::string(t); } + template + inline + void + mapVars(const std::string_view & vn, const in & envmap, out & map, const std::string_view & sp) { + auto qs = envmap.find(vn); + if (qs != envmap.end()) { + XWwwFormUrlEncoded::iterateVars(qs->second, [&map](auto k, auto v) { + map.insert({ k, v }); + }, sp); + } + } + void CgiRequestBase::initialize() { @@ -56,18 +68,8 @@ namespace IceSpider { ba::split(pathElements, path, ba::is_any_of("/"), ba::token_compress_off); } - auto qs = envmap.find(QUERY_STRING); - if (qs != envmap.end()) { - XWwwFormUrlEncoded::iterateVars(qs->second, [this](auto k, auto v) { - qsmap.insert({ k, v }); - }, "&"sv); - } - auto cs = envmap.find(HTTP_COOKIE); - if (cs != envmap.end()) { - XWwwFormUrlEncoded::iterateVars(cs->second, [this](auto k, auto v) { - cookiemap.insert({ k, v }); - }, "; "sv); - } + mapVars(QUERY_STRING, envmap, qsmap, "&"sv); + mapVars(HTTP_COOKIE, envmap, cookiemap, "; "sv); } AdHocFormatter(VarFmt, "\t%?: [%?]\n"); -- cgit v1.2.3