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: