Inheritance: java.io.Writer
        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 String testFreemarker()
        {
            Assembly _assembly;
            _assembly = Assembly.GetExecutingAssembly();
            //Console.WriteLine(_assembly.
            try{
                Configuration cfg = new Configuration();
                cfg.setDirectoryForTemplateLoading(new File("template"));
                //cfg.setDirectoryForTemplateLoading(new File(""));
                cfg.setObjectWrapper(new DefaultObjectWrapper());

                Template temp = cfg.getTemplate("c.ftl");

                Map root = new HashMap();
                root.put("codeGen", this);

                ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
                Writer output = new OutputStreamWriter(outputStream);

                temp.process(root, output);
                output.flush();
                //System.Console.WriteLine(outputStream.toString());
                return outputStream.toString();

            }
            catch (IOException exception) {

            } catch (TemplateException exception) {

            }
            return "";
        }
Exemple #3
0
        private bool Closing = false;         // To avoid recursive closing

        /// <summary>
        /// Closes the stream.  This is done by flushing the stream and then closing
        /// the underlying output stream.
        /// </summary>
        /// <seealso cref=        java.io.OutputStream#close() </seealso>
        public override void Close()
        {
            lock (this)
            {
                if (!Closing)
                {
                    Closing = true;
                    try
                    {
                        TextOut.Close();
                        @out.Close();
                    }
                    catch (IOException)
                    {
                        Trouble = true;
                    }
                    TextOut = null;
                    CharOut = null;
                    @out    = null;
                }
            }
        }
 public virtual void save(OutputStream outStream, Configuration config)
 {
   ArrayList arrayList = new ArrayList();
   Iterator propertyKeys = config.findPropertyKeys("");
   while (propertyKeys.hasNext())
   {
     string str = (string) propertyKeys.next();
     arrayList.add((object) str);
   }
   Collections.sort((List) arrayList);
   OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outStream, "iso-8859-1");
   for (int index = 0; index < arrayList.size(); ++index)
   {
     string str = (string) arrayList.get(index);
     string configProperty = config.getConfigProperty(str);
     string description = this.getDescription(str);
     if (description != null)
       this.writeDescription(description, (Writer) outputStreamWriter);
     this.saveConvert(str, 0, (Writer) outputStreamWriter);
     ((Writer) outputStreamWriter).write("=");
     this.saveConvert(configProperty, 1, (Writer) outputStreamWriter);
     ((Writer) outputStreamWriter).write(SortedConfigurationWriter.END_OF_LINE);
   }
   outputStreamWriter.flush();
 }
        protected override void onCreate(Bundle savedInstanceState)
        {
            base.onCreate(savedInstanceState);

            height = getWindowManager().getDefaultDisplay().getHeight();
            width = getWindowManager().getDefaultDisplay().getWidth();

            this.ToFullscreen();

            if (width > height)
            {
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);


                // http://stackoverflow.com/questions/8469112/hide-ics-back-home-task-switcher-buttons
                // http://developer.android.com/reference/android/view/View.OnSystemUiVisibilityChangeListener.html
                // http://stackoverflow.com/questions/9131790/android-lights-out-mode-not-working
                // http://baroqueworksdev.blogspot.com/2012/02/request-that-visibility-of.html
            }


            var r = new System.Random();
            var port = r.Next(1024, 32000);


            uri = "http://" + getLocalIpAddress();

            uri += ":";
            uri += ((object)(port)).ToString();

            this.setTitle(uri);


            ServerSocket serversocket = null;
            bool isRunning = true;

            #region openFileFromAssets
            Func<string, InputStream> openFileFromAssets = (string spath) =>
            {
                InputStream value = null;
                try
                {
                    value = this.getResources().getAssets().open(spath);
                }
                catch
                {

                }
                return value;

            };
            #endregion

            #region getStringFromInput
            Func<BufferedReader, string> getStringFromInput = (BufferedReader input) =>
            {
                StringBuilder sb = new StringBuilder();
                string sTemp;

                try
                {
                    sTemp = input.readLine();

                    while (!(sTemp == ""))
                    {
                        sb.append(sTemp + "\n");
                        sTemp = input.readLine();
                    }
                }
                catch
                {
                    sb = new StringBuilder();
                }

                return sb.ToString();
            };
            #endregion

            #region AtConnection
            Action<Socket> AtConnection = (clientsocket) =>
            {
      


                BufferedReader input = null;
                OutputStream output = null;

                try
                {
                    input = new BufferedReader(new InputStreamReader(clientsocket.getInputStream(), "ISO-8859-2"));
                    output = clientsocket.getOutputStream();
                }
                catch
                {
                }

                #region send_text
                Action<string> send_text = (s) =>
                {
                    string header =
                            "HTTP/1.1 200 OK\n" +
                            "Connection: close\n" +
                            "Content-type: text/html; charset=utf-8\n";
                    //"Content-Length: " + s.Length + "\n" +
                    header += "\n";

                    var w = new OutputStreamWriter(output);

                    try
                    {
                        w.write(header + s);
                        w.flush();
                    }
                    catch
                    {

                    }


                };
                #endregion

                #region send_stream
                Action<InputStream, string> send_stream = (fis, contenttype) =>
                {
                    string header =
                         "HTTP/1.1 200 OK\n";

                    header += "Expires: Sun, 17 Jan 2038 19:14:07 GMT\n";

                    header += "Content-type: ";
                    header += contenttype;
                    header += "\n";

                    //header += "Content-Length: " + fis.available() + "\n" +
                    header += "\n";
                    try
                    {
                        var w = new OutputStreamWriter(output);
                        w.write(header);
                        w.flush();

                        sbyte[] buffer = new sbyte[0x10000];
                        int bytes = 0;

                        bytes = fis.read(buffer);
                        while (bytes != -1)
                        {
                            output.write(buffer, 0, bytes);
                            bytes = fis.read(buffer);
                        }

                    }
                    catch
                    {
                    }
                };
                #endregion

                new System.Threading.Thread(
                    delegate()
                    {

                        try
                        {


                            string sAll = getStringFromInput(input);

                            var i0 = sAll.IndexOf(" ", 0);
                            var i1 = sAll.IndexOf(" ", i0 + 1);


                            var path = sAll.Substring(i0, i1 - i0);

                            path = path.Replace("%20", " ");

                            if (path.Length > 0)
                                path = path.Substring(2);

                            if (path.Length > 1)
                            {
                                var last = path.Substring(path.Length - 1);

                                if (last == "/")
                                {
                                    path = path.Substring(0, path.Length - 1);
                                }
                            }

                            if (this.width > this.height)
                                if (path == "")
                                    path = this.ApplicationFile;


                            var asset = openFileFromAssets(path);



                            if (asset != null)
                            {
                                var _get = path;

                                _get += " size: ";
                                _get += ((object)asset.available()).ToString();

                                Log.i("jsc get", _get);


                                if (path.EndsWith(".gif"))
                                    send_stream(asset, "image/gif");
                                if (path.EndsWith(".htm"))
                                    send_stream(asset, "text/html");
                                else
                                    send_stream(asset, "application/octet-stream");
                            }
                            else
                            {
                                string firstpage = "<body style='padding: 0; margin: 0;'>";

                                #region AttachQRToElement
                                Action<string, string> AttachQRToElement =
                                    (itemuri, Container) =>
                                    {
                                        firstpage += "<script>";
                                        firstpage += "\n";
                                        firstpage += "var i = document.getElementById('";
                                        firstpage += Container;
                                        firstpage += "').appendChild( qr.image(";
                                        firstpage += "\n";
                                        firstpage += "{value:'";



                                        firstpage += itemuri;
                                        firstpage += "'}";
                                        firstpage += "\n";
                                        firstpage += "));";
                                        firstpage += "\n";
                                        firstpage += "</script>";

                                    };
                                #endregion


                                #region firstpage

                                firstpage += "<script src='/qr.js'></script>";
                                firstpage += "<center>";

                                firstpage += "<div style='background-color: black; color: white; padding: 2em;'>";
                                firstpage += "&laquo; Rotate your device to left to <b>launch</b>";
                                firstpage += "</div>";

                                firstpage += "<h1>";
                                firstpage += path;
                                firstpage += "</h1>";


                                firstpage += "<div  id='newdevice'>";


                                firstpage += "</div>";
                                AttachQRToElement(this.uri, "newdevice");




                                firstpage += "<br />";



                                var ApplicationFileLink = this.uri;

                                ApplicationFileLink += "/";
                                ApplicationFileLink += this.ApplicationFile;

                                firstpage += "<a";
                                firstpage += " href='";
                                firstpage += ApplicationFileLink;
                                firstpage += "' id='ApplicationFile";
                                firstpage += "'";
                                firstpage += ">";

                                firstpage += "<div>";
                                firstpage += "Connect any other device on the same network to";
                                firstpage += "</div>";

                                firstpage += "\n";
                                firstpage += "<div>";
                                firstpage += "<code>";
                                firstpage += this.uri;
                                firstpage += "</code>";
                                firstpage += "</div>";
                                firstpage += "</a>";
                                firstpage += "\n";


                                firstpage += "<div style='padding: 1em; margin: 0; overflow: hidden;'>";

                                //ScriptCoreLib.JavaScript.DOM.IStyle.OverflowEnum.hidden




                                var assets = this.getResources().getAssets();

                                var collection = assets.list(path);

                                var index = 0;

                                #region AtItem
                                Action<string> AtItem =
                                    item =>
                                    {
                                        index++;

                                        if (!item.Contains("."))
                                        {
                                            item += "/";
                                        }

                                        firstpage += "<div style='border-top: 0.3em solid black; padding: 1em; '>";


                                        firstpage += "<a";
                                        firstpage += " href='";
                                        firstpage += item;
                                        firstpage += "' id='item";
                                        firstpage += ((object)index).ToString();
                                        firstpage += "'";
                                        firstpage += ">";

                                        var path_preview = "assets.preview/";

                                        path_preview += item;
                                        path_preview += ".png";

                                        var asset_preview = openFileFromAssets(path_preview);
                                        if (asset_preview != null)
                                        {
                                            firstpage += "<div>";
                                            firstpage += "<img  src='";
                                            firstpage += path_preview;
                                            firstpage += "' />";
                                            firstpage += "</div>";
                                        }

                                        firstpage += "<div>";
                                        firstpage += item;
                                        firstpage += "</div>";
                                        firstpage += "\n";

                                        #region WithImage
                                        var WithImage = item.EndsWith(".gif");

                                        WithImage |= item.EndsWith(".png");

                                        if (WithImage)
                                        {
                                            firstpage += "<div>";

                                            firstpage += "<img src='";
                                            firstpage += item;
                                            firstpage += "' />";
                                            firstpage += "</div>";

                                        }
                                        #endregion



                                        firstpage += "</a>";

                                        firstpage += "</div>";

                                        #region WithQR
                                        var WithQR = item.EndsWith( ".apk");

                                        if (WithQR)
                                        {
                                            var ContainerID = "item";

                                            ContainerID += ((object)index).ToString();

                                            var itemuri = this.uri + "/";
                                            itemuri += item;

                                            AttachQRToElement(itemuri, ContainerID);
                                        }
                                        #endregion

                                        firstpage += "\n";


                                    };
                                #endregion

                                foreach (var xitem in collection)
                                {
                                    AtItem(xitem);
                                }

                                firstpage += "</center>";


                                firstpage += "<pre>";
                                firstpage += sAll;
                                firstpage += "</pre>";

                                firstpage += "</div>";
                                firstpage += "</body>";

                                send_text(firstpage);
                                #endregion

                            }

                            input.close();
                            output.close();
                        }
                        catch
                        {

                        }
                    }
                ).Start();
            };
            #endregion

            #region serverThread
            var serverThread = new System.Threading.Thread(
               delegate()
               {

                   try
                   {

                       serversocket = new ServerSocket(port);
                       serversocket.setReuseAddress(true);

                       while (isRunning)
                       {

                           var clientsocket = serversocket.accept();

                           AtConnection(clientsocket);

                       }
                   }
                   catch
                   {

                   }
               }
           );

            serverThread.Start();
            #endregion


            #region AtDestroy
            AtDestroy =
                delegate
                {
                    try
                    {
                        if (serversocket != null)
                            serversocket.close();
                    }
                    catch
                    {

                    }
                };
            #endregion


            // http://stackoverflow.com/questions/8955228/webview-with-an-iframe-android
            // http://www.chrisdanielson.com/tag/webviewclient/

            this.alertDialog = new AlertDialog.Builder(this).create();

            this.progressBar = ProgressDialog.show(this,
                "Get ready!",
                "Almost there..."
            );


            #region webview
            this.webview = new WebView(this);


            setContentView(webview);


            webview.getSettings().setBuiltInZoomControls(true);
            webview.getSettings().setSupportZoom(true);
            webview.getSettings().setLoadsImagesAutomatically(true);
            webview.getSettings().setJavaScriptEnabled(true);
            webview.setInitialScale(ApplicationScale);

            webview.setWebViewClient(new MyWebViewClient { __this = this });
            webview.getSettings().setSupportZoom(false);
            webview.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY);

            //webview.getSettings().setJavaScriptEnabled(true);

            // no flash in emulator?
            // works on my phone!
            // no Flash since android 4.1.0!!!
            //webview.getSettings().setPluginsEnabled(true);
            //webview.getSettings().setPluginState(android.webkit.WebSettings.PluginState.ON);



            // OR, you can also load from an HTML string:
            //var summary = "<html><body>You scored <b>192</b> points.</body></html>";
            //webview.loadData(summary, "text/html", null);
            //Log.i(TAG, "loadUrl");
            webview.loadUrl(uri);
            #endregion


        }
Exemple #6
0
 private PrintStream(bool autoFlush, OutputStream @out, Charset charset) : base(@out)
 {
     this.AutoFlush = autoFlush;
     this.CharOut   = new OutputStreamWriter(this, charset);
     this.TextOut   = new BufferedWriter(CharOut);
 }
            void send(InputStream fis, string contenttype = "application/octet-stream")
            {
                string header =
                     "HTTP/1.1 200 OK\n";

                header += "Content-type: ";
                header += contenttype;
                header += "\n";

                //header += "Content-Length: " + fis.available() + "\n" +
                header += "\n";
                try
                {
                    var w = new OutputStreamWriter(output);
                    w.write(header);
                    w.flush();

                    sbyte[] buffer = new sbyte[1024];
                    int bytes = 0;

                    bytes = fis.read(buffer);
                    while (bytes != -1)
                    {
                        output.write(buffer, 0, bytes);
                        bytes = fis.read(buffer);
                    }

                }
                catch
                {
                }
            }
            void send(string s)
            {
                string header =
                        "HTTP/1.1 200 OK\n" +
                        "Connection: close\n" +
                        "Content-type: text/html; charset=utf-8\n" +
                    //"Content-Length: " + s.Length + "\n" +
                        "\n";

                var w = new OutputStreamWriter(output);

                try
                {
                    w.write(header + s);
                    w.flush();
                }
                catch
                {

                }


            }