Ejemplo n.º 1
0
        public override void PopulateElement(JStream stream)
        {
            if (stream.Char == '"')
            {
                stream.Next();
            }
            else
            {
                throw new Exception(string.Format("String cannot start with '{0}' character", stream.Char));
            }

            var builder = new StringBuilder();

            while (stream.Char != '"')
            {
                if (stream.Char == '\\')
                {
                    builder.Append(stream.Char);
                    stream.Next();
                }

                builder.Append(stream.Char);
                stream.Next();
            }

            value = builder.ToString();
            stream.Next();
        }
Ejemplo n.º 2
0
 public void close()
 {
     try
     {
         if (ins != null && !in_dontclose)
         {
             ins.Close();
         }
         ins = null;
     }
     catch (Exception ee) {}
     try
     {
         if (outs != null && !out_dontclose)
         {
             outs.Close();
         }
         outs = null;
     }
     catch (Exception ee) {}
     try
     {
         if (outs_ext != null && !outs_ext_dontclose)
         {
             outs_ext.Close();
         }
         outs_ext = null;
     }
     catch (Exception ee) {}
 }
Ejemplo n.º 3
0
 public void setExtOutputStream(Stream outs)
 {
     if (outs != null)
     {
         this.outs_ext = new JStream(outs);
     }
     else
     {
         this.outs_ext = null;
     }
 }
Ejemplo n.º 4
0
 public override void PopulateElement(JStream stream)
 {
     if (stream.GetSubString(Constants.Null.Length) == Constants.Null)
     {
         stream.NextTimes(Constants.Null.Length);
     }
     else
     {
         throw new ArgumentException("Cannot parse null value");
     }
 }
Ejemplo n.º 5
0
        public override void PopulateElement(JStream stream)
        {
            var builder = new StringBuilder();

            while (Array.IndexOf(AvailableChars, stream.Char) >= 0)
            {
                builder.Append(stream.Char);
                stream.Next();
            }

            value = double.Parse(builder.ToString(), CultureInfo.InvariantCulture);
        }
Ejemplo n.º 6
0
        public override void PopulateElement(JStream stream)
        {
            var posibleValueStr = stream.Char == TrueValue[0] ? TrueValue : FalseValue;

            if (stream.GetSubString(posibleValueStr.Length) == posibleValueStr)
            {
                value = posibleValueStr == TrueValue;
                stream.NextTimes(posibleValueStr.Length);
            }
            else
            {
                throw new Exception(string.Format("Cannot parse boolean value ({0})", stream.GetSubString(20)));
            }
        }
Ejemplo n.º 7
0
 public void setInputStream(Stream ins)
 {
     //ConsoleStream low buffer patch
     if (ins != null)
     {
         if (ins.GetType() == Type.GetType("System.IO.__ConsoleStream"))
         {
             ins = new Tamir.Streams.ProtectedConsoleStream(ins);
         }
         else if (ins.GetType() == Type.GetType("System.IO.FileStream"))
         {
             ins = new Tamir.Streams.ProtectedConsoleStream(ins);
         }
         this.ins = new JStream(ins);
     }
     else
     {
         this.ins = null;
     }
 }
Ejemplo n.º 8
0
        public override void PopulateElement(JStream stream)
        {
            if (stream.Char == '[')
            {
                stream.Next();
            }
            else
            {
                throw new Exception(string.Format("Cannot parse Array first character '{0}'", stream.Char));
            }

            value.Clear();

            var first = true;

            stream.SkipSpaces();
            while (stream.Char != ']')
            {
                if (!first)
                {
                    if (stream.Char != ',')
                    {
                        throw new Exception("Cannot parse array, no , (comma) found");
                    }

                    stream.Next();
                    stream.SkipSpaces();
                }

                var element = StringFactory.GetJElementFromJSON(stream);

                value.Add(element);

                stream.SkipSpaces();

                first = false;
            }

            stream.Next();
        }
Ejemplo n.º 9
0
        public override void PopulateElement(JStream stream)
        {
            if (stream.Char == '{')
            {
                stream.Next();
            }
            else
            {
                throw new Exception(string.Format("Cannot parse Object first character '{0}'", stream.Char));
            }

            value.Clear();

            stream.SkipSpaces();
            var first = true;

            while (stream.Char != '}')
            {
                if (!first)
                {
                    if (stream.Char != ',')
                    {
                        throw new Exception("Cannot parse object, no ,(comma) found");
                    }

                    stream.Next();
                    stream.SkipSpaces();
                }

                value.Add(ParseKeyValuePair(stream));

                stream.SkipSpaces();

                first = false;
            }

            stream.Next();
        }
Ejemplo n.º 10
0
        public void close()
        {
            try
            {
                if (ins != null && !in_dontclose) ins.Close();
                ins = null;
            }
            catch (Exception) { }

            try
            {
                if (outs != null && !out_dontclose) outs.Close();
                outs = null;
            }
            catch (Exception) { }

            try
            {
                if (outs_ext != null && !outs_ext_dontclose) outs_ext.Close();
                outs_ext = null;
            }
            catch (Exception) { }
        }
Ejemplo n.º 11
0
        private KeyValuePair <string, Element> ParseKeyValuePair(JStream stream)
        {
            //TODO: just temporary
            var stringKey = new StringElement();

            stringKey.PopulateElement(stream);

            stream.SkipSpaces();

            if (stream.Char != ':')
            {
                throw new Exception("Cannot parse object, not found :");
            }

            stream.Next();

            stream.SkipSpaces();

            var key     = stringKey.Value;
            var element = StringFactory.GetJElementFromJSON(stream);

            return(new KeyValuePair <string, Element>(key, element));
        }
Ejemplo n.º 12
0
 public void close()
 {
     try
     {
         if (ins != null)
         {
             ins.close();
         }
         if (outs != null)
         {
             outs.close();
         }
         if (socket != null)
         {
             socket.close();
         }
     }
     catch (Exception)
     {
     }
     ins    = null;
     outs   = null;
     socket = null;
 }
Ejemplo n.º 13
0
        public void Connect(SocketFactory socketFactory, String host, int port, int timeout)
        {
            try
            {
                if (socketFactory == null)
                {
                    Socket       = Util.createSocket(Host, Port, timeout);
                    inputStream  = new JStream(Socket.getInputStream());
                    outputStream = new JStream(Socket.getOutputStream());
                }
                else
                {
                    Socket       = socketFactory.createSocket(Host, Port);
                    inputStream  = new JStream(socketFactory.getInputStream(Socket));
                    outputStream = new JStream(socketFactory.getOutputStream(Socket));
                }
                if (timeout > 0)
                {
                    Socket.setSoTimeout(timeout);
                }
                Socket.setTcpNoDelay(true);

                outputStream.Write(("CONNECT " + host + ":" + port + " HTTP/1.0\r\n").GetBytes());

                if (User != null && Password != null)
                {
                    byte[] _code = (User + ":" + Password).GetBytes();
                    _code = Util.toBase64(_code, 0, _code.Length);
                    outputStream.Write("Proxy-Authorization: Basic ".GetBytes());
                    outputStream.Write(_code);
                    outputStream.Write("\r\n".GetBytes());
                }

                outputStream.Write("\r\n".GetBytes());
                outputStream.flush();

                int foo = 0;

                StringBuilder sb = new StringBuilder();
                while (foo >= 0)
                {
                    foo = inputStream.read();
                    if (foo != 13)
                    {
                        sb.Append((char)foo);
                        continue;
                    }
                    foo = inputStream.read();
                    if (foo != 10)
                    {
                        continue;
                    }
                    break;
                }
                if (foo < 0)
                {
                    throw new IOException();
                }

                String response = sb.ToString();
                String reason   = "Unknow reason";
                int    code     = -1;
                try
                {
                    foo = response.IndexOf(' ');
                    int bar = response.IndexOf(' ', foo + 1);
                    code   = Int32.Parse(response.Substring(foo + 1, bar));
                    reason = response.Substring(bar + 1);
                }
                catch (Exception) { }

                if (code != 200)
                {
                    throw new IOException("proxy error: " + reason);
                }

                int count = 0;
                while (true)
                {
                    count = 0;
                    while (foo >= 0)
                    {
                        foo = inputStream.read();
                        if (foo != 13)
                        {
                            count++;
                            continue;
                        }
                        foo = inputStream.read();
                        if (foo != 10)
                        {
                            continue;
                        }
                        break;
                    }
                    if (foo < 0)
                    {
                        throw new IOException();
                    }
                    if (count == 0)
                    {
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                try
                {
                    if (Socket != null)
                    {
                        Socket.Close();
                    }
                }
                catch (Exception) { }

                String message = "ProxyHTTP: " + e;
                throw e;
            }
        }
Ejemplo n.º 14
0
 public void setInputStream(Stream ins)
 {
     //ConsoleStream low buffer patch
     if (ins != null)
     {
         if (ins.GetType() == Type.GetType("System.IO.__ConsoleStream"))
         {
             ins = new ProtectedConsoleStream(ins);
         }
         else if (ins.GetType() == Type.GetType("System.IO.FileStream"))
         {
             ins = new ProtectedConsoleStream(ins);
         }
         this.ins = new JStream(ins);
     }
     else
     {
         this.ins = null;
     }
 }
Ejemplo n.º 15
0
        public void connect(SocketFactory socket_factory, String host, int port, int timeout)
        {
            try
            {
                if (socket_factory == null)
                {
                    socket = Util.createSocket(proxy_host, proxy_port, timeout);
                    ins    = new JStream(socket.getInputStream());
                    outs   = new JStream(socket.getOutputStream());
                }
                else
                {
                    socket = socket_factory.createSocket(proxy_host, proxy_port);
                    ins    = new JStream(socket_factory.getInputStream(socket));
                    outs   = new JStream(socket_factory.getOutputStream(socket));
                }
                if (timeout > 0)
                {
                    socket.setSoTimeout(timeout);
                }
                socket.setTcpNoDelay(true);

                outs.write(new String("CONNECT " + host + ":" + port + " HTTP/1.0\r\n").getBytes());

                if (user != null && passwd != null)
                {
                    byte[] _code = (user + ":" + passwd).getBytes();
                    _code = Util.toBase64(_code, 0, _code.Length);
                    outs.write(new String("Proxy-Authorization: Basic ").getBytes());
                    outs.write(_code);
                    outs.write(new String("\r\n").getBytes());
                }

                outs.write(new String("\r\n").getBytes());
                outs.flush();

                int foo = 0;

                var sb = new StringBuffer();
                while (foo >= 0)
                {
                    foo = ins.read();
                    if (foo != 13)
                    {
                        sb.append((char)foo);
                        continue;
                    }
                    foo = ins.read();
                    if (foo != 10)
                    {
                        continue;
                    }
                    break;
                }
                if (foo < 0)
                {
                    throw new IOException();
                }

                String response = sb.toString();
                String reason   = "Unknow reason";
                int    code     = -1;
                try
                {
                    foo = response.indexOf(' ');
                    int bar = response.indexOf(' ', foo + 1);
                    code   = Integer.parseInt(response.substring(foo + 1, bar));
                    reason = response.substring(bar + 1);
                }
                catch (Exception)
                {
                }
                if (code != 200)
                {
                    throw new IOException("proxy error: " + reason);
                }

                /*
                 *              while(foo>=0){
                 *                foo=in.read(); if(foo!=13) continue;
                 *                foo=in.read(); if(foo!=10) continue;
                 *                foo=in.read(); if(foo!=13) continue;
                 *                foo=in.read(); if(foo!=10) continue;
                 *                break;
                 *              }
                 */

                int count = 0;
                while (true)
                {
                    count = 0;
                    while (foo >= 0)
                    {
                        foo = ins.read();
                        if (foo != 13)
                        {
                            count++;
                            continue;
                        }
                        foo = ins.read();
                        if (foo != 10)
                        {
                            continue;
                        }
                        break;
                    }
                    if (foo < 0)
                    {
                        throw new IOException();
                    }
                    if (count == 0)
                    {
                        break;
                    }
                }
            }
            catch (RuntimeException e)
            {
                throw e;
            }
            catch (Exception e)
            {
                try
                {
                    if (socket != null)
                    {
                        socket.close();
                    }
                }
                catch (Exception)
                {
                }
                String message = "ProxyHTTP: " + e.toString();
                throw e;
            }
        }
Ejemplo n.º 16
0
        public void connect(SocketFactory socket_factory, String host, int port, int timeout)
        {
            try
            {
                if (socket_factory == null)
                {
                    socket = Util.createSocket(proxy_host, proxy_port, timeout);
                    ins    = new JStream(new NetworkStream(socket));
                    outs   = new JStream(new NetworkStream(socket));
                }
                else
                {
                    socket = socket_factory.createSocket(proxy_host, proxy_port);
                    ins    = new JStream(socket_factory.getInputStream(socket));
                    outs   = new JStream(socket_factory.getOutputStream(socket));
                }
                if (timeout > 0)
                {
                    socket.ReceiveTimeout = timeout;
                    socket.SendTimeout    = timeout;
                }
                socket.NoDelay = true;

                outs.write("CONNECT " + host + ":" + port + " HTTP/1.0\r\n");

                if (user != null && passwd != null)
                {
                    byte[] _code = Encoding.UTF8.GetBytes(user + ":" + passwd);
                    _code = Util.toBase64(_code, 0, _code.Length);
                    outs.write("Proxy-Authorization: Basic ");
                    outs.write(_code);
                    outs.write("\r\n");
                }

                outs.write("\r\n");
                outs.flush();

                int foo = 0;

                string sb = "";
                while (foo >= 0)
                {
                    foo = ins.read(); if (foo != 13)
                    {
                        sb += ((char)foo);  continue;
                    }
                    foo = ins.read(); if (foo != 10)
                    {
                        continue;
                    }
                    break;
                }
                if (foo < 0)
                {
                    throw new System.IO.IOException();
                }

                String response = sb;
                String reason   = "Unknow reason";
                int    code     = -1;
                try
                {
                    foo = response.IndexOf(' ');
                    int bar = response.IndexOf(' ', foo + 1);
                    code   = System.Convert.ToInt32(response.Substring(foo + 1, bar));
                    reason = response.Substring(bar + 1);
                }
                catch (Exception)
                {
                }
                if (code != 200)
                {
                    throw new System.IO.IOException("proxy error: " + reason);
                }

                /*
                 * while(foo>=0){
                 * foo=in.read(); if(foo!=13) continue;
                 * foo=in.read(); if(foo!=10) continue;
                 * foo=in.read(); if(foo!=13) continue;
                 * foo=in.read(); if(foo!=10) continue;
                 * break;
                 * }
                 */

                int count = 0;
                while (true)
                {
                    count = 0;
                    while (foo >= 0)
                    {
                        foo = ins.read(); if (foo != 13)
                        {
                            count++;  continue;
                        }
                        foo = ins.read(); if (foo != 10)
                        {
                            continue;
                        }
                        break;
                    }
                    if (foo < 0)
                    {
                        throw new System.IO.IOException();
                    }
                    if (count == 0)
                    {
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                try{ if (socket != null)
                     {
                         socket.Close();
                     }
                }
                catch (Exception)
                {
                }
                String message = "ProxyHTTP: " + e.ToString();
                throw e;
            }
        }
Ejemplo n.º 17
0
 public void setExtOutputStream(Stream outs)
 {
     if (outs != null)
     {
         this.outs_ext = new JStream(outs);
     }
     else
     {
         this.outs_ext = null;
     }
 }