@Test public void testProcessFields() { Set<String> srcFields = ImmutableSet.of("A", "b", "c.d.e.f", "Case", "cAse", "CASE"); Set<String> newFields = beanFilter.processBeanFields(srcFields); assertEquals(7, newFields.size()); assertTrue(newFields.contains("a")); assertTrue(newFields.contains("b")); assertTrue(newFields.contains("c")); assertTrue(newFields.contains("c.d")); assertTrue(newFields.contains("c.d.e")); assertTrue(newFields.contains("c.d.e.f")); assertTrue(newFields.contains("case")); }
@Test public void testProcessFields() { Set<String> srcFields = ImmutableSet.of("A", "b", "c.d.e.f", "Case", "cAse", "CASE"); Set<String> newFields = beanFilter.processBeanFields(srcFields); assertEquals(7, newFields.size()); assertTrue(newFields.contains("a")); assertTrue(newFields.contains("b")); assertTrue(newFields.contains("c")); assertTrue(newFields.contains("c.d")); assertTrue(newFields.contains("c.d.e")); assertTrue(newFields.contains("c.d.e.f")); assertTrue(newFields.contains("case")); }
@Test public void testProcessFields() { Set<String> srcFields = ImmutableSet.of("A", "b", "c.d.e.f", "Case", "cAse", "CASE"); Set<String> newFields = beanFilter.processBeanFields(srcFields); assertEquals(7, newFields.size()); assertTrue(newFields.contains("a")); assertTrue(newFields.contains("b")); assertTrue(newFields.contains("c")); assertTrue(newFields.contains("c.d")); assertTrue(newFields.contains("c.d.e")); assertTrue(newFields.contains("c.d.e.f")); assertTrue(newFields.contains("case")); }
@Test public void testProcessFields() { Set<String> srcFields = ImmutableSet.of("A", "b", "c.d.e.f", "Case", "cAse", "CASE"); Set<String> newFields = beanFilter.processBeanFields(srcFields); assertEquals(7, newFields.size()); assertTrue(newFields.contains("a")); assertTrue(newFields.contains("b")); assertTrue(newFields.contains("c")); assertTrue(newFields.contains("c.d")); assertTrue(newFields.contains("c.d.e")); assertTrue(newFields.contains("c.d.e.f")); assertTrue(newFields.contains("case")); }
@Test public void testProcessFields() { Set<String> srcFields = ImmutableSet.of("A", "b", "c.d.e.f", "Case", "cAse", "CASE"); Set<String> newFields = beanFilter.processBeanFields(srcFields); assertEquals(7, newFields.size()); assertTrue(newFields.contains("a")); assertTrue(newFields.contains("b")); assertTrue(newFields.contains("c")); assertTrue(newFields.contains("c.d")); assertTrue(newFields.contains("c.d.e")); assertTrue(newFields.contains("c.d.e.f")); assertTrue(newFields.contains("case")); }
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); } }
/** * Get gadget metadata information and iframe url. Support filtering of fields * @param request request parameters * @return gadget metadata nd iframe url * @throws ProcessingException */ public GadgetsHandlerApi.MetadataResponse getMetadata(GadgetsHandlerApi.MetadataRequest request) throws ProcessingException { if (request.getUrl() == null) { throw new ProcessingException("Missing url paramater", HttpResponse.SC_BAD_REQUEST); } if (request.getContainer() == null) { throw new ProcessingException("Missing container paramater", HttpResponse.SC_BAD_REQUEST); } if (request.getFields() == null) { throw new ProcessingException("Missing fields paramater", HttpResponse.SC_BAD_REQUEST); } Set<String> fields = beanFilter.processBeanFields(request.getFields()); GadgetContext context = new MetadataGadgetContext(request); Gadget gadget = processor.process(context); String iframeUrl = (fields.contains("iframeurl") || fields.contains(BeanFilter.ALL_FIELDS)) ? iframeUriManager.makeRenderingUri(gadget).toString() : null; Boolean needsTokenRefresh = (fields.contains("needstokenrefresh") || fields.contains(BeanFilter.ALL_FIELDS)) ? gadget.getAllFeatures().contains("auth-refresh") : null; return createMetadataResponse(context.getUrl(), gadget.getSpec(), iframeUrl, needsTokenRefresh, fields); }
/** * Get gadget metadata information and iframe url. Support filtering of fields * @param request request parameters * @return gadget metadata nd iframe url * @throws ProcessingException */ public GadgetsHandlerApi.MetadataResponse getMetadata(GadgetsHandlerApi.MetadataRequest request) throws ProcessingException { if (request.getUrl() == null) { throw new ProcessingException("Missing url paramater", HttpResponse.SC_BAD_REQUEST); } if (request.getContainer() == null) { throw new ProcessingException("Missing container paramater", HttpResponse.SC_BAD_REQUEST); } if (request.getFields() == null) { throw new ProcessingException("Missing fields paramater", HttpResponse.SC_BAD_REQUEST); } Set<String> fields = beanFilter.processBeanFields(request.getFields()); GadgetContext context = new MetadataGadgetContext(request); Gadget gadget = processor.process(context); String iframeUrl = (fields.contains("iframeurl") || fields.contains(BeanFilter.ALL_FIELDS)) ? iframeUriManager.makeRenderingUri(gadget).toString() : null; return createMetadataResponse(context.getUrl(), gadget.getSpec(), iframeUrl, fields); }
public GadgetsHandlerApi.CajaResponse getCaja(GadgetsHandlerApi.CajaRequest request) throws ProcessingException { verifyBaseParams(request, true); Set<String> fields = beanFilter.processBeanFields(request.getFields()); MessageContext mc = new MessageContext(); CajoledResult result = cajaContentRewriter.rewrite(request.getUrl(), request.getContainer(), request.getMimeType(), true /* only support es53 */, request.getDebug()); String html = null; String js = null; if (!result.hasErrors && null != result.html) { html = Nodes.render(result.html); } if (!result.hasErrors && null != result.js) { StringBuilder builder = new StringBuilder(); TokenConsumer tc = request.getDebug() ? new JsPrettyPrinter(new Concatenator(builder)) : new JsMinimalPrinter(new Concatenator(builder)); RenderContext rc = new RenderContext(tc) .withAsciiOnly(true) .withEmbeddable(true); result.js.render(rc); rc.getOut().noMoreTokens(); js = builder.toString(); } // TODO(jasvir): Improve Caja responses expiration handling return createCajaResponse(request.getUrl(), html, js, convertMessages(result.messages, mc), fields, timeSource.currentTimeMillis() + specRefreshInterval); }
/** * Create security token * @param request token paramaters (gadget, owner and viewer) * @return Security token * @throws SecurityTokenException */ public GadgetsHandlerApi.TokenResponse getToken(GadgetsHandlerApi.TokenRequest request) throws SecurityTokenException, ProcessingException { if (request.getUrl() == null) { throw new ProcessingException("Missing url paramater", HttpResponse.SC_BAD_REQUEST); } if (request.getContainer() == null) { throw new ProcessingException("Missing container paramater", HttpResponse.SC_BAD_REQUEST); } if (request.getFields() == null) { throw new ProcessingException("Missing fields paramater", HttpResponse.SC_BAD_REQUEST); } Set<String> fields = beanFilter.processBeanFields(request.getFields()); SecurityToken tokenData = convertToken(request.getToken(), request.getContainer(), request.getUrl().toString()); String token = securityTokenCodec.encodeToken(tokenData); return createTokenResponse(request.getUrl(), token, fields); }
/** * Create security token * @param request token paramaters (gadget, owner and viewer) * @return Security token * @throws SecurityTokenException */ public GadgetsHandlerApi.TokenResponse getToken(GadgetsHandlerApi.TokenRequest request) throws SecurityTokenException, ProcessingException { if (request.getUrl() == null) { throw new ProcessingException("Missing url paramater", HttpResponse.SC_BAD_REQUEST); } if (request.getContainer() == null) { throw new ProcessingException("Missing container paramater", HttpResponse.SC_BAD_REQUEST); } if (request.getFields() == null) { throw new ProcessingException("Missing fields paramater", HttpResponse.SC_BAD_REQUEST); } Set<String> fields = beanFilter.processBeanFields(request.getFields()); SecurityToken tokenData = convertToken(request.getToken(), request.getContainer(), request.getUrl().toString()); String token = securityTokenCodec.encodeToken(tokenData); return createTokenResponse(request.getUrl(), token, fields); }
public GadgetsHandlerApi.JsResponse getJs(GadgetsHandlerApi.JsRequest request) throws ProcessingException { verifyBaseParams(request, false); Set<String> fields = beanFilter.processBeanFields(request.getFields()); JsUri jsUri = createJsUri(request); Uri servedUri = jsUriManager.makeExternJsUri(jsUri); String content = null; Long expireMs = null; if (isFieldIncluded(fields, "jsContent")) { JsResponse response; try { response = jsPipeline.execute(jsRequestBuilder.build(jsUri, servedUri.getAuthority())); } catch (JsException e) { throw new ProcessingException(e.getMessage(), e.getStatusCode()); } content = response.toJsString(); if (response.isProxyCacheable()) { expireMs = getDefaultExpiration(); } } else { expireMs = getDefaultExpiration(); } return createJsResponse(request.getUrl(), servedUri, content, fields, expireMs); }
throws ProcessingException { verifyBaseParams(request, true); Set<String> fields = beanFilter.processBeanFields(request.getFields());
throws SecurityTokenException, ProcessingException { verifyBaseParams(request, true); Set<String> fields = beanFilter.processBeanFields(request.getFields()); AuthContext authContext = request.getAuthContext();