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); }
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])); }
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(); }