diff options
author | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2013-01-03 07:41:02 +0000 |
---|---|---|
committer | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2013-01-03 07:41:02 +0000 |
commit | 157ca678dee75e7881a0198425d0c8328f0bee04 (patch) | |
tree | 3c63c23b4948b2ee923c0b2027fbb5ac525a1b85 /sca-cpp/trunk/modules/http | |
parent | 36adc76235fb0a38e7042bc751f988b71627e2a0 (diff) |
Improve handling of nested lists, trees, null and floating point values.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1428191 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-cpp/trunk/modules/http')
-rw-r--r-- | sca-cpp/trunk/modules/http/http.hpp | 5 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/http/httpd.hpp | 26 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/http/mod-openauth.cpp | 6 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/http/openauth.hpp | 6 |
4 files changed, 21 insertions, 22 deletions
diff --git a/sca-cpp/trunk/modules/http/http.hpp b/sca-cpp/trunk/modules/http/http.hpp index 1153f61840..cd0eb6c04b 100644 --- a/sca-cpp/trunk/modules/http/http.hpp +++ b/sca-cpp/trunk/modules/http/http.hpp @@ -87,7 +87,6 @@ public: return; if (h.h == NULL) return; - debug(h.h, "http::~CURLSession::cleanup::h"); curl_easy_cleanup(h.h); } @@ -943,7 +942,7 @@ const failable<size_t> recv(char* const c, const size_t l, const CURLSession& cs /** * Converts a list of key value pairs to a query string. */ -ostringstream& queryString(const list<list<value> > args, ostringstream& os) { +ostringstream& queryString(const list<value>& args, ostringstream& os) { if (isNil(args)) return os; const list<value> arg = car(args); @@ -956,7 +955,7 @@ ostringstream& queryString(const list<list<value> > args, ostringstream& os) { return queryString(cdr(args), os); } -const string queryString(const list<list<value> > args) { +const string queryString(const list<value>& args) { ostringstream os; return str(queryString(args, os)); } diff --git a/sca-cpp/trunk/modules/http/httpd.hpp b/sca-cpp/trunk/modules/http/httpd.hpp index e090c2fc35..255f0aa31b 100644 --- a/sca-cpp/trunk/modules/http/httpd.hpp +++ b/sca-cpp/trunk/modules/http/httpd.hpp @@ -330,13 +330,13 @@ const string unescape(const string& uri) { /** * Unescape a list of key of value pairs representing query args. */ -const list<value> unescapeArg(const list<value> a) { - return mklist<value>(car(a), unescape(cadr(a))); +const value unescapeArg(const value& a) { + return mklist<value>(car<value>(a), unescape(cadr<value>(a))); } -const list<list<value> > unescapeArgs(const list<list<value> > args) { +const list<value> unescapeArgs(const list<value>& args) { debug(args, "httpd::unescape::args"); - const list<list<value> > uargs = map<list<value>, list<value>>(unescapeArg, args); + const list<value> uargs = map<value, value>(unescapeArg, args); debug(uargs, "httpd::unescape::result"); return uargs; } @@ -344,7 +344,7 @@ const list<list<value> > unescapeArgs(const list<list<value> > args) { /** * Returns a list of key value pairs from the args in a query string. */ -const list<value> queryArg(const string& s) { +const value queryArg(const string& s) { debug(s, "httpd::queryArg::string"); const list<string> t = tokenize("=", s); if (isNil(cdr(t))) @@ -359,27 +359,27 @@ const string fixupQueryArgs(const string& a) { return join("&", t); } -const list<list<value> > queryArgs(const string& a) { - return map<string, list<value>>(queryArg, tokenize("&", fixupQueryArgs(a))); +const list<value> queryArgs(const string& a) { + return map<string, value>(queryArg, tokenize("&", fixupQueryArgs(a))); } /** * Returns a list of key value pairs from the args in an HTTP request. */ -const list<list<value> > queryArgs(const request_rec* const r) { +const list<value> queryArgs(const request_rec* const r) { if (r->args == NULL) - return list<list<value> >(); + return nilListValue; return queryArgs(r->args); } /** * Converts the args received in a POST to a list of key value pairs. */ -const list<list<value> > postArgs(const list<value>& a) { +const list<value> postArgs(const list<value>& a) { if (isNil(a)) - return list<list<value> >(); + return nilListValue; const list<value> l = car(a); - return cons(l, postArgs(cdr(a))); + return cons<value>(l, postArgs(cdr(a))); } /** @@ -397,7 +397,7 @@ const int setupReadPolicy(request_rec* const r) { } /** - * Read the content of a POST or PUT. + * Read the content of an HTTP request. */ const list<string> read(request_rec* const r) { char b[1024]; diff --git a/sca-cpp/trunk/modules/http/mod-openauth.cpp b/sca-cpp/trunk/modules/http/mod-openauth.cpp index 797e8c10b5..1b70f27744 100644 --- a/sca-cpp/trunk/modules/http/mod-openauth.cpp +++ b/sca-cpp/trunk/modules/http/mod-openauth.cpp @@ -178,7 +178,7 @@ const failable<value> userInfoFromSession(const string& realm, request_rec* cons * Return the user info from a form auth session cookie. */ const failable<value> userInfoFromCookie(const value& sid, const string& realm, request_rec* const r) { - const list<list<value>> info = httpd::queryArgs(sid); + const list<value> info = httpd::queryArgs(sid); debug(info, "modopenauth::userInfoFromCookie::info"); const list<value> user = assoc<value>(realm + "-user", info); if(isNil(user)) @@ -212,7 +212,7 @@ const failable<value> userInfoFromHeader(const char* header, const string& realm /** * Handle an authenticated request. */ -const failable<int> authenticated(const list<list<value> >& info, request_rec* const r) { +const failable<int> authenticated(const list<value>& info, request_rec* const r) { debug(info, "modopenauth::authenticated::info"); // Store user info in the request @@ -248,7 +248,7 @@ static int checkAuthn(request_rec* const r) { debug(atype, "modopenauth::checkAuthn::auth_type"); // Get the request args - const list<list<value> > args = httpd::queryArgs(r); + const list<value> args = httpd::queryArgs(r); // Get session id from the request const maybe<string> sid = sessionID(r, "TuscanyOpenAuth"); diff --git a/sca-cpp/trunk/modules/http/openauth.hpp b/sca-cpp/trunk/modules/http/openauth.hpp index dcf405d487..1c49c4254c 100644 --- a/sca-cpp/trunk/modules/http/openauth.hpp +++ b/sca-cpp/trunk/modules/http/openauth.hpp @@ -92,9 +92,9 @@ const string cookie(const string& key, const string& sid, const string& domain) * Redirect to the configured login page. */ const failable<int> login(const string& page, const value& ref, const value& attempt, request_rec* const r) { - const list<list<value> > rarg = ref == string("/")? list<list<value> >() : mklist<list<value> >(mklist<value>("openauth_referrer", httpd::escape(httpd::url(isNil(ref)? r->uri : ref, r)))); - const list<list<value> > aarg = isNil(attempt)? list<list<value> >() : mklist<list<value> >(mklist<value>("openauth_attempt", attempt)); - const list<list<value> > largs = append<list<value> >(rarg, aarg); + const list<value> rarg = ref == string("/")? nilListValue : mklist<value>(mklist<value>("openauth_referrer", httpd::escape(httpd::url(isNil(ref)? r->uri : ref, r)))); + const list<value> aarg = isNil(attempt)? nilListValue : mklist<value>(mklist<value>("openauth_attempt", attempt)); + const list<value> largs = append(rarg, aarg); const string loc = isNil(largs)? httpd::url(page, r) : httpd::url(page, r) + string("?") + http::queryString(largs); debug(loc, "openauth::login::uri"); return httpd::externalRedirect(loc, r); |