summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2018-05-13 12:00:22 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2019-01-14 20:50:12 +0000
commitf840d002b00288e1bbc30251c9b093026dd540f4 (patch)
tree18251762e25ff4d65086c79972af9436866edde8
parentCut 1 string_view (diff)
downloadicespider-f840d002b00288e1bbc30251c9b093026dd540f4.tar.bz2
icespider-f840d002b00288e1bbc30251c9b093026dd540f4.tar.xz
icespider-f840d002b00288e1bbc30251c9b093026dd540f4.zip
Cut 2 string_view
-rw-r--r--icespider/common/http.ice3
-rw-r--r--icespider/common/session.ice1
-rw-r--r--icespider/core/ihttpRequest.cpp22
-rw-r--r--icespider/core/ihttpRequest.h26
-rw-r--r--icespider/fcgi/cgiRequestBase.cpp19
-rw-r--r--icespider/fcgi/cgiRequestBase.h14
-rw-r--r--icespider/testing/testRequest.cpp34
-rw-r--r--icespider/testing/testRequest.h28
-rw-r--r--icespider/unittests/testFileSessions.cpp2
9 files changed, 78 insertions, 71 deletions
diff --git a/icespider/common/http.ice b/icespider/common/http.ice
index 72e1de7..1b51da7 100644
--- a/icespider/common/http.ice
+++ b/icespider/common/http.ice
@@ -31,7 +31,8 @@ module IceSpider {
float q = 1.0;
};
- ["slicer:json:object"]
+ ["slicer:json:object",
+ "cpp:type:std::map<std::string, std::string, std::less<>>"]
local dictionary<string, string> StringMap;
module S { // Statuses
diff --git a/icespider/common/session.ice b/icespider/common/session.ice
index 37c0c9b..d4136fa 100644
--- a/icespider/common/session.ice
+++ b/icespider/common/session.ice
@@ -3,6 +3,7 @@
[["ice-prefix"]]
module IceSpider {
+ ["cpp:type:std::map<std::string, std::string, std::less<>>"]
dictionary<string, string> Variables;
exception SessionError {
diff --git a/icespider/core/ihttpRequest.cpp b/icespider/core/ihttpRequest.cpp
index 6afa124..7df6084 100644
--- a/icespider/core/ihttpRequest.cpp
+++ b/icespider/core/ihttpRequest.cpp
@@ -98,7 +98,7 @@ namespace IceSpider {
// Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]
// Sat, 02 May 2009 23:38:25 GMT
- void IHttpRequest::setCookie(const std::string & name, const std::string & value,
+ void IHttpRequest::setCookie(const std::string_view & name, const std::string_view & value,
const Ice::optional<std::string> & d, const Ice::optional<std::string> & p, bool s,
Ice::optional<time_t> e)
{
@@ -126,7 +126,7 @@ namespace IceSpider {
return Ice::optional<T>();
}
- void IHttpRequest::responseRedirect(const std::string & url, const Ice::optional<std::string> & statusMsg) const
+ void IHttpRequest::responseRedirect(const std::string_view & url, const Ice::optional<std::string> & statusMsg) const
{
setHeader(H::LOCATION, url);
response(303, (statusMsg ? *statusMsg : S::MOVED));
@@ -142,25 +142,27 @@ namespace IceSpider {
}
#define getParams(T) \
- template<> void IHttpRequest::setCookie<T>(const std::string & n, const T & v, \
+ template<> void IHttpRequest::setCookie<T>(const std::string_view & n, const T & v, \
const Ice::optional<std::string> & d, const Ice::optional<std::string> & p, \
bool s, Ice::optional<time_t> e) { \
- setCookie(n, boost::lexical_cast<std::string>(v), d, p, s, e); } \
+ auto vs = boost::lexical_cast<std::string>(v); \
+ setCookie(n, std::string_view(vs), d, p, s, e); \
+ } \
template<> T IHttpRequest::getURLParam<T>(unsigned int idx) const { \
return wrapLexicalCast<T>(getURLParam(idx)); } \
- template<> Ice::optional<T> IHttpRequest::getQueryStringParam<T>(const std::string & key) const { \
+ template<> Ice::optional<T> IHttpRequest::getQueryStringParam<T>(const std::string_view & key) const { \
return optionalLexicalCast<T>(getQueryStringParam(key)); } \
- template<> Ice::optional<T> IHttpRequest::getCookieParam<T>(const std::string & key) const { \
+ template<> Ice::optional<T> IHttpRequest::getCookieParam<T>(const std::string_view & key) const { \
return optionalLexicalCast<T>(getCookieParam(key)); } \
- template<> Ice::optional<T> IHttpRequest::getHeaderParam<T>(const std::string & key) const { \
+ template<> Ice::optional<T> IHttpRequest::getHeaderParam<T>(const std::string_view & key) const { \
return optionalLexicalCast<T>(getHeaderParam(key)); }
template<> std::string IHttpRequest::getURLParam<std::string>(unsigned int idx) const {
return getURLParam(idx); }
- template<> Ice::optional<std::string> IHttpRequest::getQueryStringParam<std::string>(const std::string & key) const { \
+ template<> Ice::optional<std::string> IHttpRequest::getQueryStringParam<std::string>(const std::string_view & key) const { \
return getQueryStringParam(key); }
- template<> Ice::optional<std::string> IHttpRequest::getCookieParam<std::string>(const std::string & key) const { \
+ template<> Ice::optional<std::string> IHttpRequest::getCookieParam<std::string>(const std::string_view & key) const { \
return getCookieParam(key); }
- template<> Ice::optional<std::string> IHttpRequest::getHeaderParam<std::string>(const std::string & key) const { \
+ template<> Ice::optional<std::string> IHttpRequest::getHeaderParam<std::string>(const std::string_view & key) const { \
return getHeaderParam(key); }
getParams(bool);
diff --git a/icespider/core/ihttpRequest.h b/icespider/core/ihttpRequest.h
index e255886..6e3be55 100644
--- a/icespider/core/ihttpRequest.h
+++ b/icespider/core/ihttpRequest.h
@@ -28,15 +28,15 @@ namespace IceSpider {
virtual HttpMethod getRequestMethod() const = 0;
const std::string & getURLParam(unsigned int) const;
- virtual OptionalString getQueryStringParam(const std::string &) const = 0;
- virtual OptionalString getHeaderParam(const std::string &) const = 0;
- virtual OptionalString getCookieParam(const std::string &) const = 0;
- virtual OptionalString getEnv(const std::string &) const = 0;
+ virtual OptionalString getQueryStringParam(const std::string_view &) const = 0;
+ virtual OptionalString getHeaderParam(const std::string_view &) const = 0;
+ virtual OptionalString getCookieParam(const std::string_view &) const = 0;
+ virtual OptionalString getEnv(const std::string_view &) const = 0;
virtual Slicer::DeserializerPtr getDeserializer() const;
virtual ContentTypeSerializer getSerializer(const IRouteHandler *) const;
virtual std::istream & getInputStream() const = 0;
virtual std::ostream & getOutputStream() const = 0;
- virtual void setHeader(const std::string &, const std::string &) const = 0;
+ virtual void setHeader(const std::string_view &, const std::string_view &) const = 0;
virtual std::ostream & dump(std::ostream & s) const = 0;
@@ -48,7 +48,7 @@ namespace IceSpider {
return Slicer::DeserializeAnyWith<T>(getDeserializer());
}
template<typename T>
- Ice::optional<T> getBodyParam(const Ice::optional<IceSpider::StringMap> & map, const std::string & key) const
+ Ice::optional<T> getBodyParam(const Ice::optional<IceSpider::StringMap> & map, const std::string_view & key) const
{
if (!map) {
return Ice::optional<T>();
@@ -61,20 +61,20 @@ namespace IceSpider {
return boost::lexical_cast<T>(i->second);
}
}
- void responseRedirect(const std::string & url, const Ice::optional<std::string> & = IceUtil::None) const;
- void setCookie(const std::string &, const std::string &,
+ void responseRedirect(const std::string_view & url, const Ice::optional<std::string> & = IceUtil::None) const;
+ void setCookie(const std::string_view &, const std::string_view &,
const Ice::optional<std::string> & = IceUtil::None, const Ice::optional<std::string> & = IceUtil::None,
bool = false, Ice::optional<time_t> = IceUtil::None);
template<typename T>
- void setCookie(const std::string &, const T &, const Ice::optional<std::string> & = IceUtil::None,
+ void setCookie(const std::string_view &, const T &, const Ice::optional<std::string> & = IceUtil::None,
const Ice::optional<std::string> & = IceUtil::None, bool = false, Ice::optional<time_t> = IceUtil::None);
template<typename T>
- Ice::optional<T> getQueryStringParam(const std::string & key) const;
+ Ice::optional<T> getQueryStringParam(const std::string_view & key) const;
template<typename T>
- Ice::optional<T> getHeaderParam(const std::string & key) const;
+ Ice::optional<T> getHeaderParam(const std::string_view & key) const;
template<typename T>
- Ice::optional<T> getCookieParam(const std::string & key) const;
- virtual void response(short, const std::string &) const = 0;
+ Ice::optional<T> getCookieParam(const std::string_view & key) const;
+ virtual void response(short, const std::string_view &) const = 0;
template<typename T>
void response(const IRouteHandler * route, const T & t) const
{
diff --git a/icespider/fcgi/cgiRequestBase.cpp b/icespider/fcgi/cgiRequestBase.cpp
index 96ec1b4..a42a78f 100644
--- a/icespider/fcgi/cgiRequestBase.cpp
+++ b/icespider/fcgi/cgiRequestBase.cpp
@@ -125,7 +125,7 @@ namespace IceSpider {
}
OptionalString
- CgiRequestBase::optionalLookup(const std::string & key, const StringMap & vm)
+ CgiRequestBase::optionalLookup(const std::string_view & key, const StringMap & vm)
{
auto i = vm.find(key);
if (i == vm.end()) {
@@ -159,36 +159,39 @@ namespace IceSpider {
}
OptionalString
- CgiRequestBase::getQueryStringParam(const std::string & key) const
+ CgiRequestBase::getQueryStringParam(const std::string_view & key) const
{
return optionalLookup(key, qsmap);
}
OptionalString
- CgiRequestBase::getCookieParam(const std::string & key) const
+ CgiRequestBase::getCookieParam(const std::string_view & key) const
{
return optionalLookup(key, cookiemap);
}
OptionalString
- CgiRequestBase::getEnv(const std::string & key) const
+ CgiRequestBase::getEnv(const std::string_view & key) const
{
return optionalLookup(key, envmap);
}
OptionalString
- CgiRequestBase::getHeaderParam(const std::string & key) const
+ CgiRequestBase::getHeaderParam(const std::string_view & key) const
{
- return optionalLookup(HEADER_PREFIX + boost::algorithm::to_upper_copy(key), envmap);
+ // TODO: Fix this mess
+ std::string ks(key);
+ boost::algorithm::to_upper(ks);
+ return optionalLookup(HEADER_PREFIX + ks, envmap);
}
- void CgiRequestBase::response(short statusCode, const std::string & statusMsg) const
+ void CgiRequestBase::response(short statusCode, const std::string_view & statusMsg) const
{
StatusFmt::write(getOutputStream(), statusCode, statusMsg);
}
void
- CgiRequestBase::setHeader(const std::string & header, const std::string & value) const
+ CgiRequestBase::setHeader(const std::string_view & header, const std::string_view & value) const
{
HdrFmt::write(getOutputStream(), header, value);
}
diff --git a/icespider/fcgi/cgiRequestBase.h b/icespider/fcgi/cgiRequestBase.h
index 0caf23f..efe2746 100644
--- a/icespider/fcgi/cgiRequestBase.h
+++ b/icespider/fcgi/cgiRequestBase.h
@@ -20,19 +20,19 @@ namespace IceSpider {
const PathElements & getRequestPath() const override;
PathElements & getRequestPath() override;
HttpMethod getRequestMethod() const override;
- OptionalString getQueryStringParam(const std::string & key) const override;
- OptionalString getHeaderParam(const std::string & key) const override;
- OptionalString getCookieParam(const std::string & key) const override;
- OptionalString getEnv(const std::string & key) const override;
+ OptionalString getQueryStringParam(const std::string_view & key) const override;
+ OptionalString getHeaderParam(const std::string_view & key) const override;
+ OptionalString getCookieParam(const std::string_view & key) const override;
+ OptionalString getEnv(const std::string_view & key) const override;
- void response(short, const std::string &) const override;
- void setHeader(const std::string &, const std::string &) const override;
+ void response(short, const std::string_view &) const override;
+ void setHeader(const std::string_view &, const std::string_view &) const override;
std::ostream & dump(std::ostream & s) const override;
private:
static OptionalString optionalLookup(const std::string_view & key, const VarMap &);
- static OptionalString optionalLookup(const std::string & key, const StringMap &);
+ static OptionalString optionalLookup(const std::string_view & key, const StringMap &);
VarMap envmap;
StringMap qsmap;
diff --git a/icespider/testing/testRequest.cpp b/icespider/testing/testRequest.cpp
index c7fe4d3..11fd721 100644
--- a/icespider/testing/testRequest.cpp
+++ b/icespider/testing/testRequest.cpp
@@ -4,7 +4,7 @@
#include <formatters.h>
namespace IceSpider {
- TestRequest::TestRequest(const Core * c, HttpMethod m, const std::string & p) :
+ TestRequest::TestRequest(const Core * c, HttpMethod m, const std::string_view & p) :
IHttpRequest(c),
method(m)
{
@@ -34,31 +34,31 @@ namespace IceSpider {
}
OptionalString
- TestRequest::getEnv(const std::string & key) const
+ TestRequest::getEnv(const std::string_view & key) const
{
return get(key, env);
}
OptionalString
- TestRequest::getQueryStringParam(const std::string & key) const
+ TestRequest::getQueryStringParam(const std::string_view & key) const
{
return get(key, qs);
}
OptionalString
- TestRequest::getCookieParam(const std::string & key) const
+ TestRequest::getCookieParam(const std::string_view & key) const
{
return get(key, cookies);
}
OptionalString
- TestRequest::getHeaderParam(const std::string & key) const
+ TestRequest::getHeaderParam(const std::string_view & key) const
{
return get(key, hdr);
}
OptionalString
- TestRequest::get(const std::string & key, const MapVars & vars) const
+ TestRequest::get(const std::string_view & key, const MapVars & vars) const
{
auto i = vars.find(key);
if (i == vars.end()) {
@@ -68,36 +68,36 @@ namespace IceSpider {
}
void
- TestRequest::setQueryStringParam(const std::string & key, const OptionalString & val)
+ TestRequest::setQueryStringParam(const std::string_view & key, const OptionalString & val)
{
set(key, val, qs);
}
void
- TestRequest::setHeaderParam(const std::string & key, const OptionalString & val)
+ TestRequest::setHeaderParam(const std::string_view & key, const OptionalString & val)
{
set(key, val, hdr);
}
-
+
void
- TestRequest::setCookieParam(const std::string & key, const OptionalString & val)
+ TestRequest::setCookieParam(const std::string_view & key, const OptionalString & val)
{
set(key, val, cookies);
}
void
- TestRequest::setEnv(const std::string & key, const OptionalString & val)
+ TestRequest::setEnv(const std::string_view & key, const OptionalString & val)
{
set(key, val, env);
}
-
+
void
- TestRequest::set(const std::string & key, const OptionalString & val, MapVars & vars)
+ TestRequest::set(const std::string_view & key, const OptionalString & val, MapVars & vars)
{
if (val)
- vars[key] = *val;
+ vars[std::string(key)] = *val;
else
- vars.erase(key);
+ vars.erase(vars.find(key));
}
std::istream &
@@ -113,13 +113,13 @@ namespace IceSpider {
}
void
- TestRequest::response(short statusCode, const std::string & statusMsg) const
+ TestRequest::response(short statusCode, const std::string_view & statusMsg) const
{
StatusFmt::write(getOutputStream(), statusCode, statusMsg);
}
void
- TestRequest::setHeader(const std::string & header, const std::string & value) const
+ TestRequest::setHeader(const std::string_view & header, const std::string_view & value) const
{
HdrFmt::write(getOutputStream(), header, value);
}
diff --git a/icespider/testing/testRequest.h b/icespider/testing/testRequest.h
index aa0ed67..a08f9c0 100644
--- a/icespider/testing/testRequest.h
+++ b/icespider/testing/testRequest.h
@@ -7,25 +7,25 @@
namespace IceSpider {
class DLL_PUBLIC TestRequest : public IHttpRequest {
public:
- typedef std::map<std::string, std::string> MapVars;
+ typedef std::map<std::string, std::string, std::less<>> MapVars;
- TestRequest(const Core * c, HttpMethod m, const std::string & p);
+ TestRequest(const Core * c, HttpMethod m, const std::string_view & p);
const PathElements & getRequestPath() const override;
PathElements & getRequestPath() override;
HttpMethod getRequestMethod() const override;
- OptionalString getEnv(const std::string & key) const override;
- OptionalString getQueryStringParam(const std::string & key) const override;
- OptionalString getCookieParam(const std::string & key) const override;
- OptionalString getHeaderParam(const std::string & key) const override;
- void setQueryStringParam(const std::string &, const OptionalString &);
- void setHeaderParam(const std::string &, const OptionalString &);
- void setCookieParam(const std::string &, const OptionalString &);
- void setEnv(const std::string &, const OptionalString &);
+ OptionalString getEnv(const std::string_view & key) const override;
+ OptionalString getQueryStringParam(const std::string_view & key) const override;
+ OptionalString getCookieParam(const std::string_view & key) const override;
+ OptionalString getHeaderParam(const std::string_view & key) const override;
+ void setQueryStringParam(const std::string_view &, const OptionalString &);
+ void setHeaderParam(const std::string_view &, const OptionalString &);
+ void setCookieParam(const std::string_view &, const OptionalString &);
+ void setEnv(const std::string_view &, const OptionalString &);
std::istream & getInputStream() const override;
std::ostream & getOutputStream() const override;
- void response(short statusCode, const std::string & statusMsg) const override;
- void setHeader(const std::string & header, const std::string & value) const override;
+ void response(short statusCode, const std::string_view & statusMsg) const override;
+ void setHeader(const std::string_view & header, const std::string_view & value) const override;
std::ostream & dump(std::ostream & s) const override;
const MapVars & getResponseHeaders();
@@ -40,8 +40,8 @@ namespace IceSpider {
const HttpMethod method;
protected:
- OptionalString get(const std::string &, const MapVars &) const;
- void set(const std::string &, const OptionalString &, MapVars &);
+ OptionalString get(const std::string_view &, const MapVars &) const;
+ void set(const std::string_view &, const OptionalString &, MapVars &);
private:
MapVars responseHeaders;
diff --git a/icespider/unittests/testFileSessions.cpp b/icespider/unittests/testFileSessions.cpp
index c632a34..119586e 100644
--- a/icespider/unittests/testFileSessions.cpp
+++ b/icespider/unittests/testFileSessions.cpp
@@ -7,7 +7,7 @@
#include <core.h>
#include <definedDirs.h>
-BOOST_TEST_DONT_PRINT_LOG_VALUE(IceSpider::StringMap);
+BOOST_TEST_DONT_PRINT_LOG_VALUE(IceSpider::Variables);
class TestCore : public IceSpider::CoreWithDefaultRouter {
public: