private MutableContent GetMutableContent(GadgetSpec spec, View v) { // TODO - Consider using caching here to avoid parse costs MutableContent mc = new MutableContent(htmlParser, v.getContent()); return(mc); }
public RewriterResults rewrite(Gadget gadget, MutableContent content) { if (gadget.getSpec().getModulePrefs().getFeatures().ContainsKey("caja") || "1".Equals(gadget.getContext().getParameter("caja"))) { URI retrievedUri = gadget.getContext().getUrl(); UriCallback2 cb = new UriCallback2(retrievedUri); MessageQueue mq = new SimpleMessageQueue(); DefaultGadgetRewriter rw = new DefaultGadgetRewriter(mq); CharProducer input = CharProducer.Factory.create( new java.io.StringReader(content.getContent()), FilePosition.instance(new InputSource(new java.net.URI(retrievedUri.ToString())), 2, 1, 1)); java.lang.StringBuilder output = new java.lang.StringBuilder(); try { rw.rewriteContent(new java.net.URI(retrievedUri.ToString()), input, cb, output); } catch (GadgetRewriteException e) { throwCajolingException(e, mq); return RewriterResults.notCacheable(); } catch (IOException e) { throwCajolingException(e, mq); return RewriterResults.notCacheable(); } content.setContent(tameCajaClientApi() + output.ToString()); } return null; }
public virtual RewriterResults rewrite(sRequest request, sResponse original, MutableContent content) { ByteArrayOutputStream baos = new ByteArrayOutputStream((content.getContent().Length * 110) / 100); OutputStreamWriter output = new OutputStreamWriter(baos); String mimeType = original.getHeader("Content-Type"); if (request.RewriteMimeType != null) { mimeType = request.RewriteMimeType; } GadgetSpec spec = null; if (request.Gadget != null) { spec = _specFactory.getGadgetSpec(request.Gadget.toJavaUri(), false); } if (rewrite(spec, request.getUri(), content, mimeType, output)) { content.setContent(Encoding.Default.GetString(baos.toByteArray())); return RewriterResults.cacheableIndefinitely(); } return null; }
public virtual RewriterResults rewrite(sRequest request, sResponse original, MutableContent content) { ByteArrayOutputStream baos = new ByteArrayOutputStream((content.getContent().Length * 110) / 100); OutputStreamWriter output = new OutputStreamWriter(baos); String mimeType = original.getHeader("Content-Type"); if (request.RewriteMimeType != null) { mimeType = request.RewriteMimeType; } GadgetSpec spec = null; if (request.Gadget != null) { spec = _specFactory.getGadgetSpec(request.Gadget.toJavaUri(), false); } if (rewrite(spec, request.getUri(), content, mimeType, output)) { content.setContent(Encoding.Default.GetString(baos.toByteArray())); return(RewriterResults.cacheableIndefinitely()); } return(null); }
public RewriterResults rewrite(Gadget gadget, MutableContent content) { if (gadget.getSpec().getModulePrefs().getFeatures().ContainsKey("caja") || "1".Equals(gadget.getContext().getParameter("caja"))) { URI retrievedUri = gadget.getContext().getUrl(); UriCallback2 cb = new UriCallback2(retrievedUri); MessageQueue mq = new SimpleMessageQueue(); DefaultGadgetRewriter rw = new DefaultGadgetRewriter(mq); CharProducer input = CharProducer.Factory.create( new java.io.StringReader(content.getContent()), FilePosition.instance(new InputSource(new java.net.URI(retrievedUri.ToString())), 2, 1, 1)); java.lang.StringBuilder output = new java.lang.StringBuilder(); try { rw.rewriteContent(new java.net.URI(retrievedUri.ToString()), input, cb, output); } catch (GadgetRewriteException e) { throwCajolingException(e, mq); return(RewriterResults.notCacheable()); } catch (IOException e) { throwCajolingException(e, mq); return(RewriterResults.notCacheable()); } content.setContent(tameCajaClientApi() + output.ToString()); } return(null); }
private bool rewrite(GadgetSpec spec, Uri source, MutableContent mc, String mimeType, java.io.Writer writer) { // Dont rewrite content if the spec is unavailable if (spec == null) { return(false); } // Store the feature in the spec so we dont keep parsing it ContentRewriterFeature rewriterFeature = new ContentRewriterFeature(spec, includeUrls, excludeUrls, expires, includeTags); if (!rewriterFeature.isRewriteEnabled()) { return(false); } if (isHTML(mimeType)) { Dictionary <String, IHtmlTagTransformer> transformerMap = new Dictionary <string, IHtmlTagTransformer>(); if (ProxyUrl != null) { ILinkRewriter linkRewriter = CreateLinkRewriter(spec, rewriterFeature); LinkingTagRewriter rewriter = new LinkingTagRewriter(linkRewriter, source); HashSet <String> toProcess = new HashSet <string>(); foreach (var item in rewriter.getSupportedTags()) { toProcess.Add(item); } toProcess.IntersectWith(rewriterFeature.getIncludedTags()); foreach (string tag in toProcess) { transformerMap[tag] = rewriter; } if (rewriterFeature.getIncludedTags().Contains("style")) { transformerMap["style"] = new StyleTagRewriter(source, linkRewriter); } } if (ConcatUrl != null && rewriterFeature.getIncludedTags().Contains("script")) { transformerMap["script"] = new JavascriptTagMerger(spec, rewriterFeature, ConcatUrl, source); } HtmlRewriter.rewrite(new StringReader(mc.getContent()), source, transformerMap, writer); return(true); } if (isCSS(mimeType)) { if (ProxyUrl != null) { CssRewriter.rewrite(new StringReader(mc.getContent()), source, CreateLinkRewriter(spec, rewriterFeature), writer, false); return(true); } return(false); } return(false); }
public RewriterResults rewrite(Gadget gadget, MutableContent mutableContent) { Document document = mutableContent.getDocument(); Element head = (Element)DomUtil.getFirstNamedChildNode(document.getDocumentElement(), "head"); // Remove all the elements currently in head and add them back after we inject content NodeList children = head.getChildNodes(); List<Node> existingHeadContent = new List<Node>(children.getLength()); for (int i = 0; i < children.getLength(); i++) { existingHeadContent.Add(children.item(i)); } foreach(Node n in existingHeadContent) { head.removeChild(n); } // Only inject default styles if no doctype was specified. if (document.getDoctype() == null) { Element defaultStyle = document.createElement("style"); defaultStyle.setAttribute("type", "text/css"); head.appendChild(defaultStyle); defaultStyle.appendChild(defaultStyle.getOwnerDocument(). createTextNode(DEFAULT_CSS)); } InjectBaseTag(gadget, head); InjectFeatureLibraries(gadget, head); // This can be one script block. Element mainScriptTag = document.createElement("script"); InjectMessageBundles(gadget, mainScriptTag); InjectDefaultPrefs(gadget, mainScriptTag); InjectPreloads(gadget, mainScriptTag); // We need to inject our script before any developer scripts. head.appendChild(mainScriptTag); Element body = (Element)DomUtil.getFirstNamedChildNode(document.getDocumentElement(), "body"); LocaleSpec localeSpec = gadget.getLocale(); if (localeSpec != null) { body.setAttribute("dir", localeSpec.getLanguageDirection()); } // re append head content foreach(Node node in existingHeadContent) { head.appendChild(node); } InjectOnLoadHandlers(body); mutableContent.documentChanged(); return RewriterResults.notCacheable(); }
public String rewriteGadget(Gadget gadget, View currentView) { if (currentView == null) { // Nothing to rewrite. return(null); } MutableContent mc = GetMutableContent(gadget.getSpec(), currentView); foreach (IContentRewriter rewriter in rewriters) { rewriter.rewrite(gadget, mc); } return(mc.getContent()); }
public virtual RewriterResults rewrite(Gadget gadget, MutableContent content) { java.io.StringWriter sw = new java.io.StringWriter(); GadgetSpec spec = gadget.getSpec(); Uri _base = spec.getUrl(); View view = gadget.getCurrentView(); if (view != null && view.getHref() != null) { _base = view.getHref(); } if (rewrite(spec, _base, content, "text/html", sw)) { content.setContent(sw.toString()); } return(null); }
public String rewriteGadget(Gadget gadget, String content) { if (content == null) { // Nothing to rewrite. return(null); } MutableContent mc = GetMutableContent(content); foreach (IContentRewriter rewriter in rewriters) { rewriter.rewrite(gadget, mc); } return(mc.getContent()); }
public sResponse rewriteHttpResponse(sRequest req, sResponse resp) { String originalContent = resp.responseString; MutableContent mc = GetMutableContent(originalContent); foreach (IContentRewriter rewriter in rewriters) { rewriter.rewrite(req, resp, mc); } String rewrittenContent = mc.getContent(); if (rewrittenContent.Equals(originalContent)) { return(resp); } return(new HttpResponseBuilder(resp).setResponseString(rewrittenContent).create()); }
public RewriterResults rewrite(Gadget gadget, MutableContent mutableContent) { Document document = mutableContent.getDocument(); Element head = (Element)DomUtil.getFirstNamedChildNode(document.getDocumentElement(), "head"); // Remove all the elements currently in head and add them back after we inject content NodeList children = head.getChildNodes(); List <Node> existingHeadContent = new List <Node>(children.getLength()); for (int i = 0; i < children.getLength(); i++) { existingHeadContent.Add(children.item(i)); } foreach (Node n in existingHeadContent) { head.removeChild(n); } // Only inject default styles if no doctype was specified. if (document.getDoctype() == null) { Element defaultStyle = document.createElement("style"); defaultStyle.setAttribute("type", "text/css"); head.appendChild(defaultStyle); defaultStyle.appendChild(defaultStyle.getOwnerDocument(). createTextNode(DEFAULT_CSS)); } InjectBaseTag(gadget, head); InjectFeatureLibraries(gadget, head); // This can be one script block. Element mainScriptTag = document.createElement("script"); InjectMessageBundles(gadget, mainScriptTag); InjectDefaultPrefs(gadget, mainScriptTag); InjectPreloads(gadget, mainScriptTag); // We need to inject our script before any developer scripts. head.appendChild(mainScriptTag); Element body = (Element)DomUtil.getFirstNamedChildNode(document.getDocumentElement(), "body"); LocaleSpec localeSpec = gadget.getLocale(); if (localeSpec != null) { body.setAttribute("dir", localeSpec.getLanguageDirection()); } // re append head content foreach (Node node in existingHeadContent) { head.appendChild(node); } InjectOnLoadHandlers(body); mutableContent.documentChanged(); return(RewriterResults.notCacheable()); }
public RewriterResults rewrite(sRequest req, sResponse resp, MutableContent content) { return(RewriterResults.cacheableIndefinitely()); }
public virtual RewriterResults rewrite(Gadget gadget, MutableContent content) { java.io.StringWriter sw = new java.io.StringWriter(); GadgetSpec spec = gadget.getSpec(); Uri _base = spec.getUrl(); View view = gadget.getCurrentView(); if (view != null && view.getHref() != null) { _base = view.getHref(); } if (rewrite(spec, _base, content, "text/html", sw)) { content.setContent(sw.toString()); } return null; }
private bool rewrite(GadgetSpec spec, Uri source, MutableContent mc, String mimeType, java.io.Writer writer) { // Dont rewrite content if the spec is unavailable if (spec == null) { return false; } // Store the feature in the spec so we dont keep parsing it ContentRewriterFeature rewriterFeature = new ContentRewriterFeature(spec, includeUrls, excludeUrls, expires, includeTags); if (!rewriterFeature.isRewriteEnabled()) { return false; } if (isHTML(mimeType)) { Dictionary<String, IHtmlTagTransformer> transformerMap = new Dictionary<string, IHtmlTagTransformer>(); if (ProxyUrl != null) { ILinkRewriter linkRewriter = CreateLinkRewriter(spec, rewriterFeature); LinkingTagRewriter rewriter = new LinkingTagRewriter(linkRewriter, source); HashSet<String> toProcess = new HashSet<string>(); foreach (var item in rewriter.getSupportedTags()) { toProcess.Add(item); } toProcess.IntersectWith(rewriterFeature.getIncludedTags()); foreach (string tag in toProcess) { transformerMap[tag] = rewriter; } if (rewriterFeature.getIncludedTags().Contains("style")) { transformerMap["style"] = new StyleTagRewriter(source, linkRewriter); } } if (ConcatUrl != null && rewriterFeature.getIncludedTags().Contains("script")) { transformerMap["script"] = new JavascriptTagMerger(spec, rewriterFeature, ConcatUrl, source); } HtmlRewriter.rewrite(new StringReader(mc.getContent()), source, transformerMap, writer); return true; } if (isCSS(mimeType)) { if (ProxyUrl != null) { CssRewriter.rewrite(new StringReader(mc.getContent()), source, CreateLinkRewriter(spec, rewriterFeature), writer, false); return true; } return false; } return false; }
private MutableContent GetMutableContent(GadgetSpec spec, View v) { // TODO - Consider using caching here to avoid parse costs MutableContent mc = new MutableContent(htmlParser, v.getContent()); return mc; }
public RewriterResults rewrite(sRequest req, sResponse resp, MutableContent content) { return RewriterResults.cacheableIndefinitely(); }
private MutableContent GetMutableContent(String content) { MutableContent mc = new MutableContent(htmlParser, content); return(mc); }
public RewriterResults rewrite(sRequest req, sResponse resp, MutableContent content) { return null; }
public RewriterResults rewrite(sRequest req, sResponse resp, MutableContent content) { return(null); }
private MutableContent GetMutableContent(String content) { MutableContent mc = new MutableContent(htmlParser, content); return mc; }