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");  | 
