Author: ssievers
Date: Tue Feb 19 02:09:22 2013
New Revision: 1447571
URL: http://svn.apache.org/r1447571
Log:
SHINDIG-1894 | ProxyHandler does not forward User-Agent | Patch from Marshal
Shi. Thanks!
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/ProxyUriManager.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java?rev=1447571&r1=1447570&r2=1447571&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
Tue Feb 19 02:09:22 2013
@@ -208,6 +208,7 @@ public abstract class AbstractHttpCache
* - the resize width parameter
* - the resize quality parameter
* - the no_expand parameter
+ * - the User-Agent request header
*
* Except for the first two, all of these may be unset or <code>null</code>,
* depending on authentication rules. See individual methods for details.
New cache key items
@@ -234,8 +235,8 @@ public abstract class AbstractHttpCache
.setParam("rw", request.getParam(RESIZE_WIDTH))
.setParam("rq", request.getParam(RESIZE_QUALITY))
.setParam("ne", request.getParam(NO_EXPAND))
- .setParam("rm", request.getRewriteMimeType());
-
+ .setParam("rm", request.getRewriteMimeType())
+ .setParam("ua", request.getHeader("User-Agent"));
return keyBuilder.build();
}
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java?rev=1447571&r1=1447570&r2=1447571&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
Tue Feb 19 02:09:22 2013
@@ -86,6 +86,12 @@ public class ProxyHandler {
// convert String into InputStream
req.setPostBody(new ByteArrayInputStream(postBody.getBytes()));
}
+ if (req.getHeader("User-Agent") == null) {
+ final String userAgent = uriCtx.getUserAgent();
+ if (userAgent != null) {
+ req.setHeader("User-Agent", userAgent);
+ }
+ }
return req;
}
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java?rev=1447571&r1=1447570&r2=1447571&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java
Tue Feb 19 02:09:22 2013
@@ -104,6 +104,7 @@ public class ProxyServlet extends Inject
ProxyUriManager.ProxyUri proxyUri = proxyUriManager.process(reqUri);
SecurityToken st = AuthInfoUtil.getSecurityTokenFromRequest(request);
proxyUri.setSecurityToken(st);
+ proxyUri.setUserAgent(request.getHeader("User-Agent"));
// get gadget from security token
if(proxyUri.getGadget() == null) {
if(st != null && !st.isAnonymous()) {
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/ProxyUriManager.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/ProxyUriManager.java?rev=1447571&r1=1447570&r2=1447571&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/ProxyUriManager.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/ProxyUriManager.java
Tue Feb 19 02:09:22 2013
@@ -70,6 +70,9 @@ public interface ProxyUriManager {
// The html tag that requested this ProxyUri.
private String htmlTagContext;
+ // The User-Agent from the request
+ private String userAgent;
+
public ProxyUri(Gadget gadget, Uri resource) {
super(gadget);
this.resource = resource;
@@ -103,6 +106,12 @@ public interface ProxyUriManager {
this.returnOriginalContentOnError = returnOriginalContentOnError ? "1" :
null;
}
+ public void setUserAgent(String ua) {
+ this.userAgent = ua;
+ }
+ public String getUserAgent() {
+ return userAgent;
+ }
public void setHtmlTagContext(String htmlTagContext) {
this.htmlTagContext = htmlTagContext;
}
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java?rev=1447571&r1=1447570&r2=1447571&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
Tue Feb 19 02:09:22 2013
@@ -71,7 +71,7 @@ public class AbstractHttpCacheTest {
}
private HttpRequest getMockImageRequest(String height, String width, String
quality,
- boolean noExpand, String mimeType) {
+ boolean noExpand, String mimeType, String ua) {
HttpRequest request = EasyMock.createMock(HttpRequest.class);
expect(request.getUri()).andReturn(IMAGE_URI).anyTimes();
expect(request.getAuthType()).andReturn(AuthType.NONE).anyTimes();
@@ -81,6 +81,7 @@ public class AbstractHttpCacheTest {
expect(request.getParam(Param.RESIZE_QUALITY.getKey())).andReturn(quality).anyTimes();
expect(request.getParam(Param.NO_EXPAND.getKey())).andReturn(noExpand ?
"1" : null).anyTimes();
expect(request.getRewriteMimeType()).andReturn(mimeType).anyTimes();
+ expect(request.getHeader("User-Agent")).andReturn(ua).anyTimes();
replay(request);
return request;
}
@@ -88,13 +89,14 @@ public class AbstractHttpCacheTest {
@Test
public void createKeySimpleImageRequest() throws Exception {
// Mock the Request with Image Resize (Quality) params, without rewrite
mimeType.
- HttpRequest request = getMockImageRequest("100", "80", "70", false, null);
+ HttpRequest request = getMockImageRequest("100", "80", "70", false, null,
"Mozilla");
CacheKeyBuilder key = new CacheKeyBuilder()
.setLegacyParam(0, IMAGE_URI)
.setLegacyParam(1, AuthType.NONE)
.setParam("rh", "100")
.setParam("rw", "80")
- .setParam("rq", "70");
+ .setParam("rq", "70")
+ .setParam("ua", "Mozilla");
assertEquals(key.build(), cache.createKey(request));
}
@@ -102,7 +104,7 @@ public class AbstractHttpCacheTest {
@Test
public void createKeyImageRequestRewrite() throws Exception {
// Mock the Request with Image Resize (Quality) params and specified
rewrite mimeType.
- HttpRequest request = getMockImageRequest("100", "80", "70", true,
"image/jpg");
+ HttpRequest request = getMockImageRequest("100", "80", "70", true,
"image/jpg", "Mozilla");
CacheKeyBuilder key = new CacheKeyBuilder()
.setLegacyParam(0, IMAGE_URI)
.setLegacyParam(1, AuthType.NONE)
@@ -110,7 +112,8 @@ public class AbstractHttpCacheTest {
.setParam("rw", "80")
.setParam("rq", "70")
.setParam("ne", "1")
- .setParam("rm", "image/jpg");
+ .setParam("rm", "image/jpg")
+ .setParam("ua", "Mozilla");
assertEquals(key.build(), cache.createKey(request));
}
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java?rev=1447571&r1=1447570&r2=1447571&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java
Tue Feb 19 02:09:22 2013
@@ -61,6 +61,7 @@ public class ProxyRendererTest {
private static final Uri EXPECTED_PROXIED_HTML_HREF
= Uri.parse("http://example.org/proxied.php?lang=all&country=ALL");
private static final String USER_AGENT = "TestUserAgent/1.0";
+ private static final String USER_AGENT_SET = "TestUserAgent/1.0 Shindig";
private static final GadgetContext CONTEXT = new GadgetContext() {
@Override
public SecurityToken getToken() {
@@ -100,6 +101,7 @@ public class ProxyRendererTest {
@Test
public void renderProxied() throws Exception {
HttpRequest request = new HttpRequest(EXPECTED_PROXIED_HTML_HREF);
+ request.setHeader("User-Agent", USER_AGENT_SET);
HttpResponse response = new HttpResponse(PROXIED_HTML_CONTENT);
pipeline.plainResponses.put(EXPECTED_PROXIED_HTML_HREF, response);
@@ -118,6 +120,7 @@ public class ProxyRendererTest {
.toUri();
HttpRequest request = new HttpRequest(resolved);
+ request.setHeader("User-Agent", USER_AGENT_SET);
HttpResponse response = new HttpResponse(PROXIED_HTML_CONTENT);
pipeline.plainResponses.put(resolved, response);
@@ -138,6 +141,7 @@ public class ProxyRendererTest {
@Test
public void renderProxiedRelativeBadPath() throws Exception {
HttpRequest request = new HttpRequest(EXPECTED_PROXIED_HTML_HREF);
+ request.setHeader("User-Agent", USER_AGENT_SET);
HttpResponse response = new HttpResponse(PROXIED_HTML_CONTENT);
pipeline.plainResponses.put(EXPECTED_PROXIED_HTML_HREF, response);
@@ -158,6 +162,7 @@ public class ProxyRendererTest {
@Test
public void renderProxiedFromCache() throws Exception {
HttpRequest request = new HttpRequest(EXPECTED_PROXIED_HTML_HREF);
+ request.setHeader("User-Agent", USER_AGENT_SET);
HttpResponse response = new HttpResponse(PROXIED_HTML_CONTENT);
cache.addResponse(request, response);
String content = proxyRenderer.render(makeHrefGadget("none"));