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);
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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());
        }
Ejemplo n.º 9
0
        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());
        }
Ejemplo n.º 12
0
        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());
        }
Ejemplo n.º 13
0
 public RewriterResults rewrite(sRequest req, sResponse resp, MutableContent content)
 {
     return(RewriterResults.cacheableIndefinitely());
 }
Ejemplo n.º 14
0
 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;
 }
Ejemplo n.º 15
0
        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;
        }
Ejemplo n.º 16
0
 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;
 }
Ejemplo n.º 17
0
 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);
        }
Ejemplo n.º 19
0
 public RewriterResults rewrite(sRequest req, sResponse resp,  MutableContent content) 
 {
     return null;
 }
Ejemplo n.º 20
0
 public RewriterResults rewrite(sRequest req, sResponse resp, MutableContent content)
 {
     return(null);
 }
Ejemplo n.º 21
0
 private MutableContent GetMutableContent(String content)
 {
     MutableContent mc = new MutableContent(htmlParser, content);
     return mc;
 }