Beispiel #1
0
        //jesus f**k note to self: fix this
        private static void parseType(Amf0Types type, EndianBinaryReader reader,
                                      ref uint Nulls,
                                      List <double> Numbers = null,
                                      List <bool> Booleans  = null,
                                      List <string> Strings = null,
                                      Dictionary <string, string> objectStrings = null,
                                      Dictionary <string, double> objectNumbers = null,
                                      Dictionary <string, bool> objectBooleans  = null,
                                      string property = "")
        {
            Console.WriteLine(BitConverter.ToString(BitConverter.GetBytes((byte)type)) + ":" + type);
            switch (type)
            {
            case Amf0Types.Number:
                if (Numbers != null)
                {
                    Numbers.Add(reader.ReadDouble());
                }
                else
                {
                    objectNumbers.Add(property, reader.ReadDouble());
                }
                break;

            case Amf0Types.Boolean:
                if (Booleans != null)
                {
                    Booleans.Add(reader.ReadBoolean());
                }
                else
                {
                    objectBooleans.Add(property, reader.ReadBoolean());
                }
                break;

            case Amf0Types.String:
            {
                var count      = reader.ReadUInt16();
                var pushString = "";
                for (var i = 0; i < count; i++)
                {
                    pushString += (char)reader.ReadByte();
                }
                if (Strings != null)
                {
                    Strings.Add(pushString);
                }
                else
                {
                    objectStrings.Add(property, pushString);
                }
            }
            break;

            case Amf0Types.Null:
                Nulls++;
                break;

            case Amf0Types.Array:
                break;

            case Amf0Types.ObjectEnd:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Beispiel #2
0
 //jesus f**k note to self: fix this
 private static void parseType(Amf0Types type, EndianBinaryReader reader,
     ref uint Nulls,
     List<double> Numbers = null,
     List<bool> Booleans = null,
     List<string> Strings = null,
     Dictionary<string, string> objectStrings = null,
     Dictionary<string, double> objectNumbers = null,
     Dictionary<string, bool> objectBooleans = null,
     string property = "")
 {
     Console.WriteLine(BitConverter.ToString(BitConverter.GetBytes((byte)type)) + ":" + type);
     switch (type)
     {
         case Amf0Types.Number:
             if (Numbers != null)
                 Numbers.Add(reader.ReadDouble());
             else
                 objectNumbers.Add(property, reader.ReadDouble());
             break;
         case Amf0Types.Boolean:
             if (Booleans != null)
                 Booleans.Add(reader.ReadBoolean());
             else
                 objectBooleans.Add(property, reader.ReadBoolean());
             break;
         case Amf0Types.String:
             {
                 var count = reader.ReadUInt16();
                 var pushString = "";
                 for (var i = 0; i < count; i++)
                 {
                     pushString += (char) reader.ReadByte();
                 }
                 if (Strings != null)
                     Strings.Add(pushString);
                 else
                     objectStrings.Add(property, pushString);
             }
             break;
         case Amf0Types.Null:
             Nulls++;
             break;
         case Amf0Types.Array:
             break;
         case Amf0Types.ObjectEnd:
             break;
         default:
             throw new ArgumentOutOfRangeException();
     }
 }