Author: etnu
Date: Fri Oct 17 23:00:44 2008
New Revision: 705846

URL: http://svn.apache.org/viewvc?rev=705846&view=rev
Log:
Added support for nocache=1 to the open proxy.


Modified:
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyBase.java
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
    
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyBase.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyBase.java?rev=705846&r1=705845&r2=705846&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyBase.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyBase.java
 Fri Oct 17 23:00:44 2008
@@ -36,6 +36,7 @@
 public abstract class ProxyBase {
   public static final String URL_PARAM = "url";
   public static final String REFRESH_PARAM = "refresh";
+  public static final String IGNORE_CACHE_PARAM = "nocache";
   public static final String GADGET_PARAM = "gadget";
   public static final String CONTAINER_PARAM = "container";
   // Old form container name, retained for legacy compatibility.

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java?rev=705846&r1=705845&r2=705846&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
 Fri Oct 17 23:00:44 2008
@@ -46,16 +46,13 @@
  */
 @Singleton
 public class ProxyHandler extends ProxyBase {
-  private static final Logger logger =
-      Logger.getLogger(ProxyHandler.class.getPackage().getName());
+  private static final Logger logger = 
Logger.getLogger(ProxyHandler.class.getName());
 
   private static final Collection<String> DISALLOWED_RESPONSE_HEADERS = 
Sets.newHashSet(
       "set-cookie", "content-length", "content-encoding", "etag", 
"last-modified" ,"accept-ranges",
       "vary", "expires", "date", "pragma", "cache-control"
   );
 
-  // This isn't a final field because we want to support optional injection.
-  // This is a limitation of Guice, but this workaround...works.
   private final HttpFetcher fetcher;
   private final LockedDomainService lockedDomainService;
   private final ContentRewriterRegistry contentRewriterRegistry;
@@ -69,6 +66,14 @@
     this.contentRewriterRegistry = contentRewriterRegistry;
   }
 
+  private boolean getIgnoreCache(HttpServletRequest request) {
+    String ignoreCache = request.getParameter(IGNORE_CACHE_PARAM);
+    if (ignoreCache == null) {
+      return false;
+    }
+    return !ignoreCache.equals("0");
+  }
+
   /**
    * Generate a remote content request based on the parameters sent from the 
client.
    */
@@ -87,6 +92,8 @@
     // a content type like text/html which unfortunately happens all too often
     req.setRewriteMimeType(request.getParameter(REWRITE_MIME_TYPE_PARAM));
 
+    req.setIgnoreCache(getIgnoreCache(request));
+
     // If the proxy request specifies a refresh param then we want to force 
the min TTL for
     // the retrieved entry in the cache regardless of the headers on the 
content when it
     // is fetched from the original source.

Modified: 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java?rev=705846&r1=705845&r2=705846&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java
 Fri Oct 17 23:00:44 2008
@@ -121,4 +121,23 @@
     assertEquals(magicGarbage, recorder.getHeader("X-Magic-Garbage"));
     assertTrue(rewriter.responseWasRewritten());
   }
+
+  public void testNoCache() throws Exception {
+    String url = "http://example.org/file.evil";;
+    String domain = "example.org";
+
+    
expect(lockedDomainService.isSafeForOpenProxy(domain)).andReturn(true).atLeastOnce();
+    setupProxyRequestMock(domain, url);
+    
expect(request.getParameter(ProxyBase.IGNORE_CACHE_PARAM)).andReturn("1").atLeastOnce();
+
+    HttpRequest req = new HttpRequest(Uri.parse(url)).setIgnoreCache(true);
+    HttpResponse resp = new HttpResponse("Hello");
+    expect(fetcher.fetch(req)).andReturn(resp);
+
+    replay();
+
+    proxyHandler.fetch(request, recorder);
+
+    verify();
+  }
 }


Reply via email to