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();
+ }
}