summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/modules/server/mod-eval.hpp
diff options
context:
space:
mode:
authorjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2011-02-20 22:03:50 +0000
committerjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2011-02-20 22:03:50 +0000
commitc657f276d8045caf41450ee882854df2f1ad1504 (patch)
treec9630ad14530063e4dfe6d34b5d05ef267513018 /sca-cpp/trunk/modules/server/mod-eval.hpp
parent844d7bf0cfde2bccca36c583d4221d7b461772cf (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.hpp28
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")