diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-03-03 17:34:03 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-03-03 17:34:03 +0000 |
commit | 1d5f9644822cd877038a46f20791ba25a44b7a66 (patch) | |
tree | 5415be41f294779d658025250b8596d6cc4527c2 | |
parent | Switch move things to string_view (diff) | |
download | icespider-1d5f9644822cd877038a46f20791ba25a44b7a66.tar.bz2 icespider-1d5f9644822cd877038a46f20791ba25a44b7a66.tar.xz icespider-1d5f9644822cd877038a46f20791ba25a44b7a66.zip |
Dedupe mapping of vars
-rw-r--r-- | icespider/fcgi/cgiRequestBase.cpp | 26 |
1 files 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<typename in, typename out> + 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"); |