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); } }
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); }
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); }
verifyBaseParams(request, true); Set<String> fields = beanFilter.processBeanFields(request.getFields());
verifyBaseParams(request, true); Set<String> fields = beanFilter.processBeanFields(request.getFields()); AuthContext authContext = request.getAuthContext();