Ejemplo n.º 1
0
        public TypedObject DecodeInvoke(byte[] data)
        {
            Reset();

            dataBuffer = data;
            dataPos = 0;

            TypedObject result = new TypedObject("Invoke");
            if (dataBuffer[0] == 0x00)
            {
                dataPos++;
                result.Add("version", 0x00);
            }
            result.Add("result", DecodeAMF0());
            result.Add("invokeId", DecodeAMF0());
            result.Add("serviceCall", DecodeAMF0());
            result.Add("data", DecodeAMF0());

            if (dataPos != dataBuffer.Length)
                throw new Exception("Did not consume entire buffer: " + dataPos + " of " + dataBuffer.Length);

            string[] typeNames = new string[classDefinitions.Count];
            for (int i = 0; i < classDefinitions.Count; i++)
            {
                typeNames[i] = classDefinitions[i].type;
            }

            return result;
        }
        public void Alter()
        {
            //var dict2 = new Dictionary<string, object>();
            //var x = dict2["abc"];

            var testObj = new TypedObject();
            var dict = new PropertyDictionaryAdapter(testObj);
            dict.Options.CanAlterProperties = false;

            Assert.Throws<InvalidOperationException>(() =>
            {
                dict["newprop"] = "newdata";
            }, "Can't add a prop");

            Assert.Throws<InvalidOperationException>(() =>
            {
                dict.Remove("Stringprop");
            }, "Can't add a prop");

            // These are OK to do
            dict["stringprop"] = "stringdata";

            dict.Options.CanAlterProperties = true;

            dict["newprop"] = "newdata";
            Assert.AreEqual("newdata",dict["Newprop"]);

            Assert.IsTrue(dict.ContainsKey("stringprop"));
            dict.Remove("Stringprop");
            Assert.IsFalse(dict.ContainsKey("stringprop"));
        }
Ejemplo n.º 3
0
        public TypedObject DecodeConnect(byte[] data)
        {
            Reset();

            dataBuffer = data;
            dataPos = 0;

            TypedObject result = new TypedObject("Invoke");
            result.Add("result", DecodeAMF0());
            result.Add("invokeId", DecodeAMF0());
            result.Add("serviceCall", DecodeAMF0());
            result.Add("data", DecodeAMF0());
            if (dataPos != dataBuffer.Length)
            {
                for (int i = dataPos; i < data.Length; i++)
                {
                    if (ReadByte() != '\0')
                        throw new Exception("There is other data in the buffer!");
                }
            }
            if (dataPos != dataBuffer.Length)
                throw new Exception("Did not consume entire buffer: " + dataPos + " of " + dataBuffer.Length);

            return result;
        }
Ejemplo n.º 4
0
        public void Alter()
        {
            var testObj = new TypedObject();
            var dict = new DynamicAdapter(testObj, new MapOptions {
                CanAlterProperties = false
            });

            dynamic dyn = dict;

            Assert.Throws<InvalidOperationException>(() =>
            {
                dyn.newprop = "newdata";
            }, "Can't add a prop");

            Assert.Throws<InvalidOperationException>(() =>
            {
                dict.Remove("Stringprop");
            }, "Can't rmove a prop");

            // we can update with just CanAlterProprerties=false but IsReadOnly=true

            dyn.stringprop = "stringdata";

            dict.Options.CanAlterProperties = true;

            dyn.newprop = "newdata";
            Assert.AreEqual("newdata",dict["Newprop"]);

            Assert.IsTrue(dict.ContainsKey("stringprop"));
            dict.Remove("Stringprop");
            Assert.IsFalse(dict.ContainsKey("stringprop"));
        }
Ejemplo n.º 5
0
        public void Contains()
        {
            var testObj = new TypedObject();
            var dict = new PropertyDictionaryAdapter(testObj);

            var intArray = new int[] {1,2,3};
            testObj.IntArray = intArray;
            Assert.IsTrue(dict.Contains(new KeyValuePair<string,object>("IntArray",intArray)));
            Assert.IsFalse(dict.Contains(new KeyValuePair<string,object>("IntArray",new int[] {1,2,3})));
        }
        public void Clear()
        {
            var testObj = new TypedObject();
            var dict = new PropertyDictionaryAdapter(testObj);
            testObj.StringField = "changed";

            Assert.AreEqual("changed", dict["stringfield"],"Propert of underlying object affected by a change to dict");

            dict.Clear();
            Assert.AreEqual(0, dict.Count);
            dict["stringfield"] = "string data";

            Assert.AreEqual("changed", testObj.StringField,"Same-named property no longer affects object after a clear");
            Assert.AreEqual("string data", dict["stringfield"], "Same-named property no longer affects object after a clear");
        }
        public void Add()
        {
            var testObj = new TypedObject();
            var dict = new PropertyDictionaryAdapter(testObj);

            Assert.AreEqual(13, dict.Count);

            dict["stringfield"] = "New string data";
            Assert.AreEqual(13, dict.Count);
            Assert.AreEqual("New string data", dict["Stringfield"]);
            Assert.AreEqual("New string data", testObj.StringField);

            dict["MyNewProp"] = "added data";
            Assert.AreEqual(14, dict.Count);
            Assert.AreEqual("added data", dict["mynewprop"]);
        }
        public byte[] EncodeConnect(Dictionary<string, object> paramaters)
        {
            startTime = (long)DateTime.Now.TimeOfDay.TotalMilliseconds;
            List<Byte> result = new List<Byte>();

            WriteStringAMF0(result, "connect");
            WriteIntAMF0(result, 1); // invokeId

            // Write params
            result.Add((byte)0x11); // AMF3 object
            result.Add((byte)0x09); // Array
            WriteAssociativeArray(result, paramaters);

            // Write service call args
            result.Add((byte)0x01);
            result.Add((byte)0x00); // false
            WriteStringAMF0(result, "nil"); // "nil"
            WriteStringAMF0(result, ""); // ""

            // Set up CommandMessage
            TypedObject cm = new TypedObject("flex.messaging.messages.CommandMessage");
            cm.Add("operation", 5);
            cm.Add("correlationId", "");
            cm.Add("timestamp", 0);
            cm.Add("messageId", RandomUID());
            cm.Add("body", new TypedObject(null));
            cm.Add("destination", "");
            Dictionary<string, object> headers = new Dictionary<string, object>();
            headers.Add("DSMessagingVersion", 1.0);
            headers.Add("DSId", "my-rtmps");
            cm.Add("headers", headers);
            cm.Add("clientId", null);
            cm.Add("timeToLive", 0);

            // Write CommandMessage
            result.Add((byte)0x11); // AMF3 object
            Encode(result, cm);

            byte[] ret = new byte[result.Count];
            for (int i = 0; i < ret.Length; i++)
                ret[i] = result[i];

            ret = AddHeaders(ret);
            ret[7] = (byte)0x14; // Change message type

            return ret;
        }
Ejemplo n.º 9
0
        public void Add()
        {
            var testObj = new TypedObject();
            var dict = new DynamicAdapter(testObj);
            dict.Options.CanAlterProperties = true;

            dynamic dyn = dict;
            Assert.AreEqual(13, dict.Count);

            dyn.stringfield = "New string data";
            Assert.AreEqual(13, dict.Count);
            Assert.AreEqual("New string data", dyn.Stringfield);
            Assert.AreEqual("New string data", testObj.StringField);

            dyn.MyNewProp = "added data";
            Assert.AreEqual(14, dict.Count);
            Assert.AreEqual("added data", dyn.mynewprop);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Encodes the given parameters as a val packet
        /// </summary>
        /// <param name="parameters">The connection parameters.</param>
        /// <returns>The val packet.</returns>
        public byte[] encodeConnect(Dictionary<string, object> parameters)
        {
            var result = new List<byte>();

            writestringAMFO(result, "val");
            // Write invokeid
            writeIntAMFO(result, 1);

            // Write params
            result.Add(0x11); // AMF3 object
            result.Add(0x09); // Array
            writeAssociativeArray(result, parameters);

            // Write service call args
            result.Add(0x01);
            result.Add(0x00); // False
            writestringAMFO(result, "nil");
            writestringAMFO(result, "");

            // Set up CommandMessage
            var cm = new TypedObject("flex.messaging.messages.CommandMessage");
            cm.Add("messageRefType", null);
            cm.Add("operation", 5);
            cm.Add("correlationId", "");
            cm.Add("clientId", null);
            cm.Add("destination", "");
            cm.Add("messageId", randomUID());
            cm.Add("timestamp", 0d);
            cm.Add("timeToLive", 0d);
            cm.Add("body", new TypedObject(null));
            var headers = new Dictionary<string, object>();

            headers.Add("DSMessagingVersion", 1d);
            headers.Add("DSId", "my-rtmps");
            cm.Add("headers", headers);

            // Write CommandMessage
            result.Add(0x11); // AMF3 object
            encode(result, cm);

            return AddHeaders(result.ToArray());
        }
Ejemplo n.º 11
0
        public TypedObject DecodeInvoke(byte[] data)
        {
            Reset();

            dataBuffer = data;
            dataPos = 0;

            TypedObject result = new TypedObject("Invoke");
            if (dataBuffer[0] == 0x00)
            {
                dataPos++;
                result.Add("version", 0x00);
            }
            result.Add("result", DecodeAMF0());
            result.Add("invokeId", DecodeAMF0());
            result.Add("serviceCall", DecodeAMF0());
            result.Add("data", DecodeAMF0());


            if (dataPos != dataBuffer.Length)
                throw new Exception("Did not consume entire buffer: " + dataPos + " of " + dataBuffer.Length);

            return result;
        }
        public void WrapperBasic()
        {
            var testObj = new TypedObject
            {
                StringProp="quick brown fox",
                IntArray =new int[] { 1, 2, 4, 8 },
                DoubleProp = 3.14,
                StringList =  new List<string> { "a","b","c" }

            };
            var dict = new PropertyDictionaryAdapter(testObj);

            Assert.AreEqual("quick brown fox", dict["StringProp"]);
            Assert.AreEqual(4, ((int[])dict["IntArray"])[2]);
            Assert.AreEqual(3.14, dict["DoubleProp"]);
            Assert.AreEqual("b", ((IList<string>)dict["StringList"])[1]);
        }
Ejemplo n.º 13
0
 public SummaryAggStat(TypedObject result)
 {
     base.SetFields <SummaryAggStat>(this, result);
 }
Ejemplo n.º 14
0
 public Owner(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 15
0
 public Talent(TypedObject result)
 {
     this.type = "com.riotgames.platform.summoner.Talent";
     base.SetFields <Talent>(this, result);
 }
Ejemplo n.º 16
0
 public TeamMemberInfoDTO(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 17
0
 public MatchHistorySummary(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 18
0
 public PointSummary(TypedObject result)
 {
     this.type = "com.riotgames.platform.reroll.pojo.PointSummary";
     base.SetFields <PointSummary>(this, result);
 }
        private void WriteObject(List<byte> ret, TypedObject val)
        {
            if (val.type == null || val.type.Equals(""))
            {
                ret.Add((byte)0x0B); // Dynamic class

                ret.Add((byte)0x01); // No class name
                foreach (string key in val.Keys)
                {
                    WriteString(ret, key);
                    Encode(ret, val[key]);
                }
                ret.Add((byte)0x01); // End of dynamic
            }
            else if (val.type.Equals("flex.messaging.io.ArrayCollection"))
            {
                ret.Add((byte)0x07); // Externalizable
                WriteString(ret, val.type);

                Encode(ret, val["array"]);
            }
            else if (val.type.Equals("DSK"))
            {
                WriteInt(ret, (val.Count << 4) | 3); // Inline + member count
                WriteString(ret, val.type);
                byte[] flag1 = new byte[8];
                byte[] flag2 = new byte[8];
                if (val["body"] != null)
                    flag1[0] = 1;
                if (val["clientId"] != null)
                    flag1[1] = 1;
                if (val["destination"] != null)
                    flag1[2] = 1;
                if (val["headers"] != null)
                    flag1[3] = 1;
                if (val["messageId"] != null && val["clientId"] != null)
                    flag1[4] = 1;
                if (val["timestamp"] != null && val["destination"] != null)
                    flag1[5] = 1;
                if (val["timeToLive"] != null && val["headers"] != null)
                    flag1[6] = 1;

                if (val["clientIdBytes"] != null)
                    flag2[0] = 1;
                if (val["messageIdBytes"] != null)
                    flag2[1] = 1;

                WriteObject(ret, val.GetTO("data"));
            }
            else
            {
                WriteInt(ret, (val.Count << 4) | 3); // Inline + member count
                WriteString(ret, val.type);

                List<String> keyOrder = new List<String>();
                foreach (string key in val.Keys)
                {
                    WriteString(ret, key);
                    keyOrder.Add(key);
                }

                foreach (string key in keyOrder)
                    Encode(ret, val[key]);
            }
        }
Ejemplo n.º 20
0
 public SummonerRuneInventory(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 21
0
 public PracticeGameConfig(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 22
0
 public PlayerStatSummary(TypedObject result)
 {
     base.SetFields <PlayerStatSummary>(this, result);
 }
Ejemplo n.º 23
0
 public PointSummary(TypedObject result)
 {
     base.SetFields <PointSummary>(this, result);
 }
Ejemplo n.º 24
0
 public override void DoCallback(TypedObject result)
 {
     base.SetFields <FellowPlayerInfo>(this, result);
     this.callback(this);
 }
Ejemplo n.º 25
0
 public PlayerParticipant(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 26
0
 public GameNotification(TypedObject result)
 {
     base.SetFields(this, result);
 }
public SummonerDefaultSpells(TypedObject result)
{
base.SetFields(this, result);
}
Ejemplo n.º 28
0
 public AggregatedStats(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 29
0
 public FellowPlayerInfo(TypedObject result)
 {
     this.type = "com.riotgames.platform.statistics.FellowPlayerInfo";
     base.SetFields <FellowPlayerInfo>(this, result);
 }
 public SummonerActiveBoostsDTO(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 31
0
 public PlayerParticipant(TypedObject result)
 {
     this.type = "com.riotgames.platform.game.PlayerParticipant";
     base.SetFields <PlayerParticipant>(this, result);
 }
Ejemplo n.º 32
0
 public Participant(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 33
0
 public TeamStatSummary(TypedObject result)
 {
     this.type = "com.riotgames.team.stats.TeamStatSummary";
     base.SetFields <TeamStatSummary>(this, result);
 }
Ejemplo n.º 34
0
 public TalentRow(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 35
0
 public override void DoCallback(TypedObject result)
 {
     base.SetFields <Talent>(this, result);
     this.callback(this);
 }
Ejemplo n.º 36
0
 public MasteryBookDTO(TypedObject result)
 {
     base.SetFields(this, result);
 }
        public void Updating()
        {
            var testObj = new TypedObject();
            var dict = new PropertyDictionaryAdapter(testObj);

            Assert.AreEqual(0d, testObj.DoubleProp);
            dict["doubleprop"] = 3.14;
            Assert.AreEqual(3.14, testObj.DoubleProp);

            Assert.Throws<InvalidCastException>(() =>
            {
                dict["doubleprop"] = "abc";
            }, "Can't assign bad data type");
        }
Ejemplo n.º 38
0
 public Inviter(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 39
0
 public AllSummonerData(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 40
0
 public ChampionMastery(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 41
0
 public LoginDataPacket(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 42
0
 public TeamDTO(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 43
0
 public TalentEntry(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 44
0
 public TeamMemberInfoDTO(TypedObject result)
 {
     base.SetFields(this, result);
 }
 public BasePublicSummonerDTO(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 46
0
 public TeamStatDetail(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 47
0
 public PlayerStatSummary(TypedObject result)
 {
     this.type = "com.riotgames.platform.statistics.PlayerStatSummary";
     base.SetFields <PlayerStatSummary>(this, result);
 }
Ejemplo n.º 48
0
 public override void DoCallback(TypedObject result)
 {
     base.SetFields <PlayerParticipant>(this, result);
     this.callback(this);
 }
Ejemplo n.º 49
0
 public LoginDataPacket(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 50
0
 public override void DoCallback(TypedObject result)
 {
     base.SetFields <PlayerStatSummary>(this, result);
     this.callback(this);
 }
Ejemplo n.º 51
0
 public SummonerLeaguesDTO(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 52
0
 public Session(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 53
0
 public PublicSummoner(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 54
0
 public TeamPlayerAggregatedStatsDTO(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 55
0
 public LeagueListDTO(TypedObject result)
 {
     base.SetFields(this, result);
 }
Ejemplo n.º 56
0
 public override void DoCallback(TypedObject result)
 {
     base.SetFields(this, result);
     callback(this);
 }
 public SimpleDialogMessageResponse(TypedObject result)
 {
     base.SetFields(this, result);
 }
 public MatchingThrottleConfig(TypedObject result)
 {
     base.SetFields <MatchingThrottleConfig>(this, result);
 }
Ejemplo n.º 59
0
 public override void DoCallback(TypedObject result)
 {
     base.SetFields(this, result);
     callback(this);
 }
 public SearchingForMatchNotification(TypedObject result)
 {
     base.SetFields(this, result);
 }