Пример #1
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            SwitcheoContractsList contractsList = new SwitcheoContractsList();

            if (reader.TokenType == JsonToken.StartObject)
            {
                JObject rootObject = JObject.Load(reader);

                if (rootObject.ContainsKey(BlockchainType.Neo.GetSymbol()))
                {
                    JToken neoContracts = rootObject.GetValue(BlockchainType.Neo.GetSymbol());

                    contractsList.NeoContracts = new SwitcheoContract[neoContracts.Children().Count()];
                    int tabIndex = 0;

                    foreach (JProperty neoContract in neoContracts.Children())
                    {
                        contractsList.NeoContracts[tabIndex] = new SwitcheoContract()
                        {
                            Version = neoContract.Name, Hash = neoContract.Value.ToString()
                        };
                        tabIndex++;
                    }
                }
                if (rootObject.ContainsKey(BlockchainType.Qtum.GetSymbol()))
                {
                    JToken qtumContracts = rootObject.GetValue(BlockchainType.Qtum.GetSymbol());

                    contractsList.QtumContracts = new SwitcheoContract[qtumContracts.Children().Count()];
                    int tabIndex = 0;

                    foreach (JProperty qtumContract in qtumContracts.Children())
                    {
                        contractsList.QtumContracts[tabIndex] = new SwitcheoContract()
                        {
                            Version = qtumContract.Name, Hash = qtumContract.Value.ToString()
                        };
                        tabIndex++;
                    }
                }
                if (rootObject.ContainsKey(BlockchainType.Ethereum.GetSymbol()))
                {
                    JToken ethContracts = rootObject.GetValue(BlockchainType.Ethereum.GetSymbol());

                    contractsList.EthereumContracts = new SwitcheoContract[ethContracts.Children().Count()];
                    int tabIndex = 0;

                    foreach (JProperty ethContract in ethContracts.Children())
                    {
                        contractsList.EthereumContracts[tabIndex] = new SwitcheoContract()
                        {
                            Version = ethContract.Name, Hash = ethContract.Value.ToString()
                        };
                        tabIndex++;
                    }
                }
            }

            return(contractsList);
        }
Пример #2
0
        public void GetContractsList_Should_RespondWithContractsArray()
        {
            // arrange
            var expected = new SwitcheoContractsList()
            {
                NeoContracts = new SwitcheoContract[]
                {
                    new SwitcheoContract()
                    {
                        Version = "V1", Hash = "0ec5712e0f7c63e4b0fea31029a28cea5e9d551f"
                    },
                    new SwitcheoContract()
                    {
                        Version = "V1_5", Hash = "c41d8b0c30252ce7e8b6d95e9ce13fdd68d2a5a8"
                    },
                    new SwitcheoContract()
                    {
                        Version = "V2", Hash = "48756743d524af03aa75729e911651ffd3cbe7d8"
                    }
                }
            };

            var client = PrepareClient(JsonConvert.SerializeObject(expected));

            // act
            var result = client.GetContracts();

            // assert
            Assert.AreEqual(true, result.Success);
            Assert.IsTrue(Compare.PublicInstancePropertiesEqual(expected.NeoContracts[0], result.Data.NeoContracts[0]));
            Assert.IsTrue(Compare.PublicInstancePropertiesEqual(expected.NeoContracts[1], result.Data.NeoContracts[1]));
            Assert.IsTrue(Compare.PublicInstancePropertiesEqual(expected.NeoContracts[2], result.Data.NeoContracts[2]));
        }
Пример #3
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            writer.WriteStartObject();

            SwitcheoContractsList contractsList = (SwitcheoContractsList)value;

            if (contractsList.NeoContracts != null && contractsList.NeoContracts.Length > 0)
            {
                writer.WritePropertyName(BlockchainType.Neo.GetSymbol());
                writer.WriteStartObject();

                foreach (SwitcheoContract neoContract in contractsList.NeoContracts)
                {
                    writer.WritePropertyName(neoContract.Version);
                    writer.WriteValue(neoContract.Hash);
                }

                writer.WriteEndObject();
            }
            if (contractsList.QtumContracts != null && contractsList.QtumContracts.Length > 0)
            {
                writer.WritePropertyName(BlockchainType.Qtum.GetSymbol());
                writer.WriteStartObject();

                foreach (SwitcheoContract qtumContract in contractsList.QtumContracts)
                {
                    writer.WritePropertyName(qtumContract.Version);
                    writer.WriteValue(qtumContract.Hash);
                }

                writer.WriteEndObject();
            }
            if (contractsList.EthereumContracts != null && contractsList.EthereumContracts.Length > 0)
            {
                writer.WritePropertyName(BlockchainType.Ethereum.GetSymbol());
                writer.WriteStartObject();

                foreach (SwitcheoContract ethContract in contractsList.EthereumContracts)
                {
                    writer.WritePropertyName(ethContract.Version);
                    writer.WriteValue(ethContract.Hash);
                }

                writer.WriteEndObject();
            }

            writer.WriteEndObject();
        }