summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2016-10-09 01:17:35 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2016-10-09 03:11:30 +0100
commit77e0361f2392aba1a885b6d653560e669079fbac (patch)
tree41a60b2bd4ddc90b413217b01586f3060d2cf726
parentAdd support for cookie parameters (diff)
downloadicespider-77e0361f2392aba1a885b6d653560e669079fbac.tar.bz2
icespider-77e0361f2392aba1a885b6d653560e669079fbac.tar.xz
icespider-77e0361f2392aba1a885b6d653560e669079fbac.zip
Tidy creation of strings from ranges
-rw-r--r--icespider/fcgi/cgiRequestBase.cpp15
-rw-r--r--icespider/fcgi/cgiRequestBase.h6
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;