From 4f245967cb241021844b678e75ff48c6783113d3 Mon Sep 17 00:00:00 2001 From: jsdelfino Date: Mon, 20 Feb 2012 07:20:22 +0000 Subject: Optimize server modules a bit. Pass individual config elements instead of the whole server config. Load target composite once into the request. Enable loading of shared component implementations from the main contribution. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1291134 13f79535-47bb-0310-9956-ffa450edef68 --- sca-cpp/trunk/modules/oauth/mod-oauth2.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'sca-cpp/trunk/modules/oauth/mod-oauth2.cpp') diff --git a/sca-cpp/trunk/modules/oauth/mod-oauth2.cpp b/sca-cpp/trunk/modules/oauth/mod-oauth2.cpp index e8c27a5709..ace611d3dc 100644 --- a/sca-cpp/trunk/modules/oauth/mod-oauth2.cpp +++ b/sca-cpp/trunk/modules/oauth/mod-oauth2.cpp @@ -124,7 +124,7 @@ const failable authenticated(const list >& attrs, const list
  • authorize(const list >& args, request_rec* r, const ServerConf& sc) { +const failable authorize(const list >& args, request_rec* r, const list >& appkeys) { // Extract authorize, access_token, client ID and info URIs const list auth = assoc("mod_oauth2_authorize", args); if (isNil(auth) || isNil(cdr(auth))) @@ -146,7 +146,7 @@ const failable authorize(const list >& args, request_rec* r, co debug(redir, "modoauth2::authorize::redir"); // Lookup client app configuration - const list app = assoc(cadr(cid), sc.appkeys); + const list app = assoc(cadr(cid), appkeys); if (isNil(app) || isNil(cdr(app))) return mkfailure(string("client id not found: ") + cadr(cid)); list appkey = cadr(app); @@ -171,7 +171,7 @@ const failable > profileUserInfo(const value& cid, const list /** * Handle an access_token request. */ -const failable access_token(const list >& args, request_rec* r, const ServerConf& sc) { +const failable accessToken(const list >& args, request_rec* r, const list >& appkeys, const perthread_ptr& cs, const memcache::MemCached& mc) { // Extract access_token URI, client ID and authorization code const list tok = assoc("mod_oauth2_access_token", args); if (isNil(tok) || isNil(cdr(tok))) @@ -187,7 +187,7 @@ const failable access_token(const list >& args, request_rec* r, return mkfailure("Missing code parameter"); // Lookup client app configuration - const list app = assoc(cadr(cid), sc.appkeys); + const list app = assoc(cadr(cid), appkeys); if (isNil(app) || isNil(cdr(app))) return mkfailure(string("client id not found: ") + cadr(cid)); list appkey = cadr(app); @@ -201,7 +201,7 @@ const failable access_token(const list >& args, request_rec* r, const list > targs = mklist >(mklist("client_id", car(appkey)), mklist("redirect_uri", httpd::escape(redir)), mklist("client_secret", cadr(appkey)), code); const string turi = httpd::unescape(cadr(tok)) + string("?") + http::queryString(targs); debug(turi, "modoauth2::access_token::tokenuri"); - const failable tr = http::get(turi, *(sc.cs)); + const failable tr = http::get(turi, *(cs)); if (!hasContent(tr)) return mkfailure(reason(tr)); debug(tr, "modoauth2::access_token::response"); @@ -215,7 +215,7 @@ const failable access_token(const list >& args, request_rec* r, const list > iargs = mklist >(tv); const string iuri = httpd::unescape(cadr(info)) + string("?") + http::queryString(iargs); debug(iuri, "modoauth2::access_token::infouri"); - const failable profres = http::get(iuri, *(sc.cs)); + const failable profres = http::get(iuri, *(cs)); if (!hasContent(profres)) return mkfailure("Couldn't retrieve user info"); debug(content(profres), "modoauth2::access_token::info"); @@ -227,7 +227,7 @@ const failable access_token(const list >& args, request_rec* r, // Store user info in memcached keyed by session ID const value sid = string("OAuth2_") + mkrand(); - const failable prc = memcache::put(mklist("tuscanyOpenAuth", sid), content(iv), sc.mc); + const failable prc = memcache::put(mklist("tuscanyOpenAuth", sid), content(iv), mc); if (!hasContent(prc)) return mkfailure(reason(prc)); @@ -288,13 +288,13 @@ static int checkAuthn(request_rec *r) { // Handle OAuth authorize request step if (step == "authorize") { r->ap_auth_type = const_cast(atype); - return httpd::reportStatus(authorize(args, r, sc)); + return httpd::reportStatus(authorize(args, r, sc.appkeys)); } // Handle OAuth access_token request step if (step == "access_token") { r->ap_auth_type = const_cast(atype); - return httpd::reportStatus(access_token(args, r, sc)); + return httpd::reportStatus(accessToken(args, r, sc.appkeys, sc.cs, sc.mc)); } // Redirect to the login page -- cgit v1.2.3