public void rewrite(HttpRequest request, HttpResponseBuilder response, Gadget gadget) throws RewritingException { response.setContent(REWRITE_CONTENT); throw new RewritingException("", 404); } };
public void rewrite(HttpRequest request, HttpResponseBuilder response, Gadget gadget) throws RewritingException { response.setContent(REWRITE_CONTENT); throw new RewritingException("", 404); } };
public void rewrite(HttpRequest request, HttpResponseBuilder original, Gadget gadget) throws RewritingException { ContentRewriterFeature.Config config = rewriterFeatureFactory.get(request); if (!RewriterUtils.isCss(request, original)) { return; } String css = original.getContent(); StringWriter sw = new StringWriter((css.length() * 110) / 100); rewrite(new StringReader(css), request.getUri(), new UriMaker(proxyUriManager, config), sw, false, DomWalker.makeGadget(request).getContext()); original.setContent(sw.toString()); }
public void rewrite(HttpRequest request, HttpResponseBuilder original) throws RewritingException { ContentRewriterFeature.Config config = rewriterFeatureFactory.get(request); if (!RewriterUtils.isCss(request, original)) { return; } String css = original.getContent(); StringWriter sw = new StringWriter((css.length() * 110) / 100); rewrite(new StringReader(css), request.getUri(), new UriMaker(proxyUriManager, config), sw, false, DomWalker.makeGadget(request).getContext()); original.setContent(sw.toString()); }
public void rewrite(HttpRequest request, HttpResponseBuilder original) throws RewritingException { ContentRewriterFeature.Config config = rewriterFeatureFactory.get(request); if (!RewriterUtils.isCss(request, original)) { return; } String css = original.getContent(); StringWriter sw = new StringWriter((css.length() * 110) / 100); rewrite(new StringReader(css), request.getUri(), new UriMaker(proxyUriManager, config), sw, false, DomWalker.makeGadget(request).getContext()); original.setContent(sw.toString()); }
public HttpResponse fetch(final HttpRequest request) throws GadgetException { this.request = request; final HttpResponseBuilder builder = new HttpResponseBuilder(); builder.setStrictNoCache(); builder.setHttpStatusCode(HttpResponse.SC_OK); builder.setHeader("Content-Type", "application/json"); builder.setContent("{\"access_token\":\"xxx\",\"token_type\":\"Bearer\",\"expires_in\":\"1\",\"refresh_token\":\"yyy\",\"example_parameter\":\"example_value\"}"); return builder.create(); } }
public HttpResponse fetch(final HttpRequest request) throws GadgetException { this.request = request; final HttpResponseBuilder builder = new HttpResponseBuilder(); builder.setStrictNoCache(); builder.setHttpStatusCode(HttpResponse.SC_OK); builder.setHeader("Content-Type", "application/json"); builder.setContent("{\"access_token\":\"xxx\",\"token_type\":\"Bearer\",\"expires_in\":\"1\",\"refresh_token\":\"yyy\",\"example_parameter\":\"example_value\"}"); return builder.create(); } }
@Test public void testCreateProxyResponse() throws Exception { HttpResponseBuilder httpResponse = new HttpResponseBuilder(); httpResponse.setContent("Content"); httpResponse.addHeader("header", "hval"); httpResponse.setEncoding(Charset.forName("UTF8")); httpResponse.setHttpStatusCode(404); GadgetsHandlerApi.ProxyResponse response = gadgetHandler.createProxyResponse(RESOURCE, httpResponse.create(), ImmutableSet.<String> of("*"), 1000001L); BeanDelegator.validateDelegator(response); assertEquals("Content", new String(Base64.decodeBase64(response.getProxyContent().getContentBase64()))); assertEquals(404, response.getProxyContent().getCode()); assertEquals(2, response.getProxyContent().getHeaders().size()); assertEquals("Date", response.getProxyContent().getHeaders().get(0).getName()); assertEquals("header", response.getProxyContent().getHeaders().get(1).getName()); assertEquals("hval", response.getProxyContent().getHeaders().get(1).getValue()); assertEquals(1000001L, response.getExpireTimeMs().longValue()); }
@Test public void testCreateProxyResponse() throws Exception { HttpResponseBuilder httpResponse = new HttpResponseBuilder(); httpResponse.setContent("Content"); httpResponse.addHeader("header", "hval"); httpResponse.setEncoding(Charset.forName("UTF8")); httpResponse.setHttpStatusCode(404); GadgetsHandlerApi.ProxyResponse response = gadgetHandler.createProxyResponse(RESOURCE, httpResponse.create(), ImmutableSet.<String> of("*"), 1000001L); BeanDelegator.validateDelegator(response); assertEquals("Content", new String(Base64.decodeBase64(response.getProxyContent().getContentBase64()))); assertEquals(404, response.getProxyContent().getCode()); assertEquals(2, response.getProxyContent().getHeaders().size()); assertEquals("Date", response.getProxyContent().getHeaders().get(0).getName()); assertEquals("header", response.getProxyContent().getHeaders().get(1).getName()); assertEquals("hval", response.getProxyContent().getHeaders().get(1).getValue()); assertEquals(1000001L, response.getExpireTimeMs().longValue()); }
private void validateRewritten(String content, Uri base, String expected) throws Exception { HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css"); response.setContent(content); HttpRequest request = new HttpRequest(base); rewriter.rewrite(request, response); assertEquals(StringUtils.deleteWhitespace(expected), StringUtils.deleteWhitespace(response.getContent())); }
private void validateRewritten(String content, Uri base, String expected, Gadget gadget) throws Exception { HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css"); response.setContent(content); HttpRequest request = new HttpRequest(base); if(gadget == null) { rewriter.rewrite(request, response, gadget); } else { rewriter.rewrite(request, response, gadget); } assertEquals(StringUtils.deleteWhitespace(expected), StringUtils.deleteWhitespace(response.getContent())); }
private void validateRewritten(String content, Uri base, String expected, Gadget gadget) throws Exception { HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css"); response.setContent(content); HttpRequest request = new HttpRequest(base); if(gadget == null) { rewriter.rewrite(request, response, gadget); } else { rewriter.rewrite(request, response, gadget); } assertEquals(StringUtils.deleteWhitespace(expected), StringUtils.deleteWhitespace(response.getContent())); }
@Test public void testWithCache() throws Exception { String url = "http://example.org/file.evil"; String domain = "example.org"; HttpResponse.setTimeSource(new FakeTimeSource()); setupProxyRequestMock(domain, url, false, 120, null, null); setupGadgetAdminMock(true); HttpRequest req = new HttpRequestCache(Uri.parse(url)).setCacheTtl(120).setIgnoreCache(false); HttpResponseBuilder resp = new HttpResponseBuilder().setCacheTtl(1234); resp.setContent("Hello"); expect(pipeline.execute(req)).andReturn(resp.create()); replay(); HttpResponse proxyResp = proxyHandler.fetch(request); assertEquals(120, proxyResp.getCacheTtl() / 1000); verify(); }
@Test public void testWithCache() throws Exception { String url = "http://example.org/file.evil"; String domain = "example.org"; HttpResponse.setTimeSource(new FakeTimeSource()); setupProxyRequestMock(domain, url, false, 120, null, null); setupGadgetAdminMock(true); HttpRequest req = new HttpRequestCache(Uri.parse(url)).setCacheTtl(120).setIgnoreCache(false); HttpResponseBuilder resp = new HttpResponseBuilder().setCacheTtl(1234); resp.setContent("Hello"); expect(pipeline.execute(req)).andReturn(resp.create()); replay(); HttpResponse proxyResp = proxyHandler.fetch(request); assertEquals(120, proxyResp.getCacheTtl() / 1000); verify(); }
@Test public void testWithBadTtl() throws Exception { String url = "http://example.org/file.evil"; String domain = "example.org"; HttpResponse.setTimeSource(new FakeTimeSource()); setupProxyRequestMock(domain, url, false, -1, null, null); setupGadgetAdminMock(true); HttpRequest req = new HttpRequestCache(Uri.parse(url)).setCacheTtl(-1).setIgnoreCache(false); HttpResponseBuilder resp = new HttpResponseBuilder().setCacheTtl(1234); resp.setContent("Hello"); expect(pipeline.execute(req)).andReturn(resp.create()); replay(); HttpResponse proxyResp = proxyHandler.fetch(request); assertEquals(1234, proxyResp.getCacheTtl() / 1000); verify(); }
@Test public void testWithBadTtl() throws Exception { String url = "http://example.org/file.evil"; String domain = "example.org"; HttpResponse.setTimeSource(new FakeTimeSource()); setupProxyRequestMock(domain, url, false, -1, null, null); setupGadgetAdminMock(true); HttpRequest req = new HttpRequestCache(Uri.parse(url)).setCacheTtl(-1).setIgnoreCache(false); HttpResponseBuilder resp = new HttpResponseBuilder().setCacheTtl(1234); resp.setContent("Hello"); expect(pipeline.execute(req)).andReturn(resp.create()); replay(); HttpResponse proxyResp = proxyHandler.fetch(request); assertEquals(1234, proxyResp.getCacheTtl() / 1000); verify(); }
@Test public void testEncodingDetectionBig5() throws Exception { HttpResponse response = new HttpResponseBuilder() .addHeader("Content-Type", "text/plain; charset=BIG5") .setResponse(BIG5_DATA) .create(); assertEquals(BIG5_STRING, response.getResponseAsString()); assertEquals("text/plain; charset=BIG5", response.getHeader("Content-Type")); HttpResponseBuilder subResponseBuilder = new HttpResponseBuilder(response); subResponseBuilder.setContent(response.getResponseAsString()); HttpResponse subResponse = subResponseBuilder.create(); // Same string. assertEquals("text/plain; charset=UTF-8", subResponse.getHeader("Content-Type")); assertEquals(BIG5_STRING, subResponse.getResponseAsString()); // New encoding. }
@Test public void testEncodingDetectionBig5() throws Exception { HttpResponse response = new HttpResponseBuilder() .addHeader("Content-Type", "text/plain; charset=BIG5") .setResponse(BIG5_DATA) .create(); assertEquals(BIG5_STRING, response.getResponseAsString()); assertEquals("text/plain; charset=BIG5", response.getHeader("Content-Type")); HttpResponseBuilder subResponseBuilder = new HttpResponseBuilder(response); subResponseBuilder.setContent(response.getResponseAsString()); HttpResponse subResponse = subResponseBuilder.create(); // Same string. assertEquals("text/plain; charset=UTF-8", subResponse.getHeader("Content-Type")); assertEquals(BIG5_STRING, subResponse.getResponseAsString()); // New encoding. }
@Test public void testEncodingDetectionBig5() throws Exception { HttpResponse response = new HttpResponseBuilder() .addHeader("Content-Type", "text/plain; charset=BIG5") .setResponse(BIG5_DATA) .create(); assertEquals(BIG5_STRING, response.getResponseAsString()); assertEquals("text/plain; charset=BIG5", response.getHeader("Content-Type")); HttpResponseBuilder subResponseBuilder = new HttpResponseBuilder(response); subResponseBuilder.setContent(response.getResponseAsString()); HttpResponse subResponse = subResponseBuilder.create(); // Same string. assertEquals("text/plain; charset=UTF-8", subResponse.getHeader("Content-Type")); assertEquals(BIG5_STRING, subResponse.getResponseAsString()); // New encoding. }
@Test public void verifyFixedDate() throws Exception { HttpRequest request = new HttpRequest(DEFAULT_URI).setAuthType(AuthType.NONE); int time = roundToSeconds(HttpResponseTest.timeSource.currentTimeMillis()); String date = DateUtil.formatRfc1123Date(1000L * time - 1000 - DefaultRequestPipeline.DEFAULT_DRIFT_LIMIT_MS); HttpResponseBuilder builder = new HttpResponseBuilder().setCacheTtl(100) .addHeader("Date", date); builder.setContent("response"); fetcher.response = builder.create(); RequestPipeline pipeline = new DefaultRequestPipeline(fetcher, cache, oauth, oauth2, new DefaultResponseRewriterRegistry(null, null), new NoOpInvalidationService(), new HttpResponseMetadataHelper()); HttpResponse response = pipeline.execute(request); // Verify time is current time instead of expired assertEquals(DateUtil.formatRfc1123Date(1000L * time), response.getHeader("Date")); assertEquals(roundToSeconds(100000 - 1), roundToSeconds(response.getCacheTtl() - 1)); }