diff options
author | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2011-02-20 22:03:50 +0000 |
---|---|---|
committer | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2011-02-20 22:03:50 +0000 |
commit | c657f276d8045caf41450ee882854df2f1ad1504 (patch) | |
tree | c9630ad14530063e4dfe6d34b5d05ef267513018 /sca-cpp/trunk/modules/server/mod-eval.hpp | |
parent | 844d7bf0cfde2bccca36c583d4221d7b461772cf (diff) |
Add two builtin component properties containing the current HTTP request path and query parameters.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1072763 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r-- | sca-cpp/trunk/modules/server/mod-eval.hpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/sca-cpp/trunk/modules/server/mod-eval.hpp b/sca-cpp/trunk/modules/server/mod-eval.hpp index 4ee40e51ee..64ab6df4bb 100644 --- a/sca-cpp/trunk/modules/server/mod-eval.hpp +++ b/sca-cpp/trunk/modules/server/mod-eval.hpp @@ -368,7 +368,29 @@ struct hostPropProxy { hostPropProxy(const value& v) : v(v) { } const value operator()(unused const list<value>& params) const { - return httpd::hostName(currentRequest, v); + const value r = httpd::hostName(currentRequest, v); + debug(r, "modeval::hostPropProxy::value"); + return r; + } +}; + +struct pathPropProxy { + pathPropProxy(unused const value& v) { + } + const value operator()(unused const list<value>& params) const { + const value v = pathValues(currentRequest->uri); + debug(v, "modeval::pathPropProxy::value"); + return v; + } +}; + +struct queryPropProxy { + queryPropProxy(unused const value& v) { + } + const value operator()(unused const list<value>& params) const { + const value v = httpd::queryArgs(currentRequest); + debug(v, "modeval::queryPropProxy::value"); + return v; } }; @@ -399,6 +421,10 @@ struct userPropProxy { const value mkpropProxy(const value& prop) { if (scdl::name(prop) == "host") return lambda<value(const list<value>&)>(hostPropProxy(elementValue(prop))); + if (scdl::name(prop) == "path") + return lambda<value(const list<value>&)>(pathPropProxy(elementValue(prop))); + if (scdl::name(prop) == "query") + return lambda<value(const list<value>&)>(queryPropProxy(elementValue(prop))); if (scdl::name(prop) == "user") return lambda<value(const list<value>&)>(userPropProxy(elementValue(prop))); if (scdl::name(prop) == "realm") |