You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by aw...@apache.org on 2009/04/03 01:18:04 UTC
svn commit: r761470 - in /incubator/shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/oauth/
main/java/org/apache/shindig/gadgets/render/
test/java/org/apache/shindig/gadgets/oauth/
test/java/org/apache/shindig/gadgets/render/
Author: awiner
Date: Thu Apr 2 23:18:03 2009
New Revision: 761470
URL: http://svn.apache.org/viewvc?rev=761470&view=rev
Log:
Fix broken signed proxied rendering, and reimplement the opensocial_proxied_content=1 parameter correctly
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthArguments.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthRequest.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/ProxyRenderer.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthRequestTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthArguments.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthArguments.java?rev=761470&r1=761469&r2=761470&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthArguments.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthArguments.java Thu Apr 2 23:18:03 2009
@@ -95,6 +95,9 @@
/** Arbitrary name/value pairs associated with the request */
private final Map<String, String> requestOptions = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER);
+ /** Whether the request is one for proxied content */
+ private boolean proxiedContentRequest = false;
+
/**
* Parse OAuthArguments from parameters to the makeRequest servlet.
*
@@ -230,6 +233,7 @@
signOwner = orig.signOwner;
signViewer = orig.signViewer;
requestOptions.putAll(orig.requestOptions);
+ proxiedContentRequest = orig.proxiedContentRequest;
}
public boolean mustUseToken() {
@@ -329,6 +333,14 @@
return (val != null ? val : def);
}
+ public boolean isProxiedContentRequest() {
+ return proxiedContentRequest;
+ }
+
+ public void setProxiedContentRequest(boolean proxiedContentRequest) {
+ this.proxiedContentRequest = proxiedContentRequest;
+ }
+
public boolean programmaticConfig() {
return Boolean.parseBoolean(requestOptions.get(PROGRAMMATIC_CONFIG_PARAM));
}
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthRequest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthRequest.java?rev=761470&r1=761469&r2=761470&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthRequest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthRequest.java Thu Apr 2 23:18:03 2009
@@ -87,6 +87,8 @@
// TODO(beaton): figure out if this is the name in the 0.8 spec.
protected static final String OPENSOCIAL_APPURL = "opensocial_app_url";
+ protected static final String OPENSOCIAL_PROXIED_CONTENT = "opensocial_proxied_content";
+
protected static final String XOAUTH_PUBLIC_KEY = "xoauth_signature_publickey";
protected static final Pattern ALLOWED_PARAM_NAME = Pattern.compile("[-:\\w~!@$*()_\\[\\]:,./]+");
@@ -403,6 +405,10 @@
if (trustedParams != null) {
params.addAll(trustedParams);
}
+
+ if (realRequest.getOAuthArguments().isProxiedContentRequest()) {
+ params.add(new Parameter(OPENSOCIAL_PROXIED_CONTENT, "1"));
+ }
}
/**
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/ProxyRenderer.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/ProxyRenderer.java?rev=761470&r1=761469&r2=761470&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/ProxyRenderer.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/ProxyRenderer.java Thu Apr 2 23:18:03 2009
@@ -91,11 +91,13 @@
UriBuilder uri = new UriBuilder(href);
uri.addQueryParameter("lang", context.getLocale().getLanguage());
uri.addQueryParameter("country", context.getLocale().getCountry());
- uri.addQueryParameter("opensocial_proxied_content", "1");
+ OAuthArguments oauthArgs = new OAuthArguments(view);
+ oauthArgs.setProxiedContentRequest(true);
+
HttpRequest request = new HttpRequest(uri.toUri())
.setIgnoreCache(context.getIgnoreCache())
- .setOAuthArguments(new OAuthArguments(view))
+ .setOAuthArguments(oauthArgs)
.setAuthType(view.getAuthType())
.setSecurityToken(context.getToken())
.setContainer(context.getContainer())
Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthRequestTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthRequestTest.java?rev=761470&r1=761469&r2=761470&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthRequestTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthRequestTest.java Thu Apr 2 23:18:03 2009
@@ -987,6 +987,7 @@
assertTrue(contains(queryParams, "opensocial_app_id", "app"));
assertTrue(contains(queryParams, OAuth.OAUTH_CONSUMER_KEY, "signedfetch"));
assertTrue(contains(queryParams, "xoauth_signature_publickey", "foo"));
+ assertFalse(contains(queryParams, "opensocial_proxied_content", "1"));
}
@Test
@@ -1004,6 +1005,20 @@
}
@Test
+ public void testSignedFetchParametersSetProxiedContent() throws Exception {
+ MakeRequestClient client = makeSignedFetchClient("o", "v", "http://www.example.com/app");
+ client.getBaseArgs().setProxiedContentRequest(true);
+ HttpResponse resp = client.sendGet(FakeOAuthServiceProvider.RESOURCE_URL);
+ List<Parameter> queryParams = OAuth.decodeForm(resp.getResponseAsString());
+ assertTrue(contains(queryParams, "opensocial_owner_id", "o"));
+ assertTrue(contains(queryParams, "opensocial_viewer_id", "v"));
+ assertTrue(contains(queryParams, "opensocial_app_id", "app"));
+ assertTrue(contains(queryParams, OAuth.OAUTH_CONSUMER_KEY, "signedfetch"));
+ assertTrue(contains(queryParams, "xoauth_signature_publickey", "foo"));
+ assertTrue(contains(queryParams, "opensocial_proxied_content", "1"));
+ }
+
+ @Test
public void testPostBinaryData() throws Exception {
byte[] raw = { 0, 1, 2, 3, 4, 5 };
MakeRequestClient client = makeSignedFetchClient("o", "v", "http://www.example.com/app");
Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java?rev=761470&r1=761469&r2=761470&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java Thu Apr 2 23:18:03 2009
@@ -19,6 +19,7 @@
package org.apache.shindig.gadgets.render;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import org.apache.shindig.auth.AnonymousSecurityToken;
import org.apache.shindig.auth.SecurityToken;
@@ -58,7 +59,7 @@
private static final String PROXIED_HTML_CONTENT = "Hello, Universe!";
private static final Uri PROXIED_HTML_HREF = Uri.parse("http://example.org/proxied.php");
private static final Uri EXPECTED_PROXIED_HTML_HREF
- = Uri.parse("http://example.org/proxied.php?lang=all&country=ALL&opensocial_proxied_content=1");
+ = Uri.parse("http://example.org/proxied.php?lang=all&country=ALL");
private static final GadgetContext CONTEXT = new GadgetContext() {
@Override
public SecurityToken getToken() {
@@ -107,7 +108,6 @@
Uri resolved = new UriBuilder(base.resolve(relative))
.addQueryParameter("lang", GadgetSpec.DEFAULT_LOCALE.getLanguage())
.addQueryParameter("country", GadgetSpec.DEFAULT_LOCALE.getCountry())
- .addQueryParameter("opensocial_proxied_content", "1")
.toUri();
HttpRequest request = new HttpRequest(resolved);
@@ -177,7 +177,6 @@
UriBuilder uri = new UriBuilder(PROXIED_HTML_HREF);
uri.putQueryParameter("lang", "foo");
uri.putQueryParameter("country", "BAR");
- uri.putQueryParameter("opensocial_proxied_content", "1");
Gadget gadget = makeHrefGadget("none");
gadget.setContext(new GadgetContext() {
@@ -300,6 +299,8 @@
"No oauth arguments associated with rendering request.");
}
+ assertTrue(request.getOAuthArguments().isProxiedContentRequest());
+
HttpResponse response;
switch (request.getAuthType()) {
case NONE: