public GadgetsHandlerApi.ProxyResponse getProxy(GadgetsHandlerApi.ProxyRequest request) throws ProcessingException { verifyBaseParams(request, true); Set<String> fields = beanFilter.processBeanFields(request.getFields()); ProxyUri proxyUri = createProxyUri(request); List<Uri> uris = proxyUriManager.make(ImmutableList.of(proxyUri), null); HttpResponse httpResponse = null; try { if (isFieldIncluded(fields, "proxyContent")) { httpResponse = proxyHandler.fetch(proxyUri); } } catch (IOException e) { LOG.log(Level.INFO, "Failed to fetch resource " + proxyUri.getResource().toString(), e); throw new ProcessingException("Error getting response content", HttpResponse.SC_BAD_GATEWAY); } catch (GadgetException e) { // TODO: Clean this log if it is too spammy LOG.log(Level.INFO, "Failed to fetch resource " + proxyUri.getResource().toString(), e); throw new ProcessingException("Error getting response content", HttpResponse.SC_BAD_GATEWAY); } try { return createProxyResponse(uris.get(0), httpResponse, fields, getProxyExpireMs(proxyUri, httpResponse)); } catch (IOException e) { // Should never happen! LOG.log(Level.WARNING, "Error creating proxy response", e); throw new ProcessingException("Error getting response content", HttpResponse.SC_INTERNAL_SERVER_ERROR); } }
@Test public void testFilterProxyResponse() throws Exception { HttpResponse httpResponse = new HttpResponse("data"); GadgetsHandlerApi.ProxyResponse response = gadgetHandler.createProxyResponse(RESOURCE, httpResponse, ImmutableSet.<String> of("proxyurl"), 1000001L); assertNull(response.getProxyContent()); assertEquals(RESOURCE, response.getProxyUrl()); }
@Test public void testFilterProxyResponse() throws Exception { HttpResponse httpResponse = new HttpResponse("data"); GadgetsHandlerApi.ProxyResponse response = gadgetHandler.createProxyResponse(RESOURCE, httpResponse, ImmutableSet.<String> of("proxyurl"), 1000001L); assertNull(response.getProxyContent()); assertEquals(RESOURCE, response.getProxyUrl()); }
@Test public void testValidateProxyResponse() throws Exception { GadgetsHandlerApi.ProxyResponse response = gadgetHandler.createProxyResponse(RESOURCE, null, ImmutableSet.<String> of("*"), 1000001L); BeanDelegator.validateDelegator(response); assertEquals(RESOURCE, response.getProxyUrl()); assertNull(response.getProxyContent()); }
@Test public void testValidateProxyResponse() throws Exception { GadgetsHandlerApi.ProxyResponse response = gadgetHandler.createProxyResponse(RESOURCE, null, ImmutableSet.<String> of("*"), 1000001L); BeanDelegator.validateDelegator(response); assertEquals(RESOURCE, response.getProxyUrl()); assertNull(response.getProxyContent()); }
@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()); }