public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteStartObject(); SwitcheoBalancesList balancesList = (SwitcheoBalancesList)value; writer.WritePropertyName(BalanceType.Confirming.ToString().ToLower()); writer.WriteStartObject(); foreach (SwitcheoAssetConfirming assetBalance in balancesList.Confirming) { writer.WritePropertyName(assetBalance.Asset.Symbol); writer.WriteStartArray(); foreach (SwitcheoAssetConfirming.SwitcheoConfirmingEvent confirmingEvent in assetBalance.Events) { writer.WriteStartObject(); writer.WritePropertyName("event_type"); writer.WriteValue(confirmingEvent.Type.ToString().ToLower()); writer.WritePropertyName("asset_id"); writer.WriteValue(confirmingEvent.Asset.Id); writer.WritePropertyName("amount"); writer.WriteValue(SwitcheoHelpers.ToAssetAmount(confirmingEvent.Amount, confirmingEvent.Asset?.Precision)); writer.WritePropertyName("transaction_hash"); writer.WriteValue(confirmingEvent.TransactionHash); writer.WritePropertyName("created_at"); writer.WriteValue(confirmingEvent.CreatedAt); writer.WriteEndObject(); } writer.WriteEndArray(); } writer.WriteEndObject(); writer.WritePropertyName(BalanceType.Confirmed.ToString().ToLower()); writer.WriteStartObject(); foreach (SwitcheoAssetBalance assetBalance in balancesList.Confirmed) { writer.WritePropertyName(assetBalance.Asset.Symbol); writer.WriteValue(SwitcheoHelpers.ToAssetAmount(assetBalance.Amount, assetBalance.Asset?.Precision)); } writer.WriteEndObject(); writer.WritePropertyName(BalanceType.Locked.ToString().ToLower()); writer.WriteStartObject(); foreach (SwitcheoAssetBalance assetBalance in balancesList.Locked) { writer.WritePropertyName(assetBalance.Asset.Symbol); writer.WriteValue(SwitcheoHelpers.ToAssetAmount(assetBalance.Amount, assetBalance.Asset?.Precision)); } writer.WriteEndObject(); writer.WriteEndObject(); }
public void GetMyContractBalances_Should_RespondWithUserContractBalancesArray() { // arrange var balances = new SwitcheoBalancesList() { Confirming = new SwitcheoAssetConfirming[] { new SwitcheoAssetConfirming() { Asset = SampleTokensList[1], Events = new SwitcheoAssetConfirming.SwitcheoConfirmingEvent[] { new SwitcheoAssetConfirming.SwitcheoConfirmingEvent() { Type = EventType.Withdrawal, Asset = SampleTokensList[1], Amount = SwitcheoHelpers.FromAssetAmount("-100000000", SampleTokensList[1].Precision), TransactionHash = null, CreatedAt = DateTime.Now } } } }, Confirmed = new SwitcheoAssetBalance[] { new SwitcheoAssetBalance() { Asset = SampleTokensList[1], Amount = SwitcheoHelpers.FromAssetAmount("47320000000", SampleTokensList[1].Precision) }, new SwitcheoAssetBalance() { Asset = SampleTokensList[2], Amount = SwitcheoHelpers.FromAssetAmount("421549852102", SampleTokensList[2].Precision) }, new SwitcheoAssetBalance() { Asset = SampleTokensList[0], Amount = SwitcheoHelpers.FromAssetAmount("50269113921", SampleTokensList[0].Precision) } }, Locked = new SwitcheoAssetBalance[] { new SwitcheoAssetBalance() { Asset = SampleTokensList[1], Amount = SwitcheoHelpers.FromAssetAmount("500000000", SampleTokensList[1].Precision) }, new SwitcheoAssetBalance() { Asset = SampleTokensList[0], Amount = SwitcheoHelpers.FromAssetAmount("1564605000", SampleTokensList[0].Precision) } } }; var client = PrepareClient(JsonConvert.SerializeObject(balances), true); // act var result = client.GetMyContractBalances(); // assert Assert.AreEqual(true, result.Success); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(balances.Confirming[0].Asset, result.Data.Confirming[0].Asset)); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(balances.Confirming[0].Events[0], result.Data.Confirming[0].Events[0])); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(balances.Confirmed[0], result.Data.Confirmed[0])); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(balances.Confirmed[1], result.Data.Confirmed[1])); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(balances.Confirmed[2], result.Data.Confirmed[2])); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(balances.Locked[0], result.Data.Locked[0])); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(balances.Locked[1], result.Data.Locked[1])); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { SwitcheoBalancesList balancesList = new SwitcheoBalancesList(); var client = (SwitcheoClient)serializer.Context.Context; if (reader.TokenType == JsonToken.StartObject) { JObject rootObject = JObject.Load(reader); if (rootObject.ContainsKey(BalanceType.Confirming.ToString().ToLower())) { JToken confirmingBalances = rootObject.GetValue(BalanceType.Confirming.ToString().ToLower()); balancesList.Confirming = new SwitcheoAssetConfirming[confirmingBalances.Children().Count()]; int tabIndex = 0; foreach (JProperty assetConfirming in confirmingBalances.Children()) { SwitcheoAssetConfirming _assetConfirming = new SwitcheoAssetConfirming() { Asset = client.GetToken(assetConfirming.Name), }; List <SwitcheoConfirmingEvent> events = new List <SwitcheoConfirmingEvent>(); foreach (JObject confirmingEvent in (JArray)assetConfirming.Value) { var switcheoConfirmingEvent = JsonConvert.DeserializeObject <SwitcheoConfirmingEvent>(confirmingEvent.ToString(), new JsonSerializerSettings() { Context = new StreamingContext(StreamingContextStates.Other, client) }); events.Add(switcheoConfirmingEvent); } _assetConfirming.Events = events.ToArray(); balancesList.Confirming[tabIndex] = _assetConfirming; tabIndex++; } } if (rootObject.ContainsKey(BalanceType.Confirmed.ToString().ToLower())) { JToken confirmedBalances = rootObject.GetValue(BalanceType.Confirmed.ToString().ToLower()); balancesList.Confirmed = new SwitcheoAssetBalance[confirmedBalances.Children().Count()]; int tabIndex = 0; foreach (JProperty assetBalance in confirmedBalances.Children()) { var asset = client.GetToken(assetBalance.Name); balancesList.Confirmed[tabIndex] = new SwitcheoAssetBalance() { Asset = asset, Amount = SwitcheoHelpers.FromAssetAmount(assetBalance.Value.ToString(), asset.Precision) }; tabIndex++; } } if (rootObject.ContainsKey(BalanceType.Locked.ToString().ToLower())) { JToken lockedBalances = rootObject.GetValue(BalanceType.Locked.ToString().ToLower()); balancesList.Locked = new SwitcheoAssetBalance[lockedBalances.Children().Count()]; int tabIndex = 0; foreach (JProperty assetBalance in lockedBalances.Children()) { var asset = client.GetToken(assetBalance.Name); balancesList.Locked[tabIndex] = new SwitcheoAssetBalance() { Asset = asset, Amount = SwitcheoHelpers.FromAssetAmount(assetBalance.Value.ToString(), asset.Precision) }; tabIndex++; } } } return(balancesList); }