예제 #1
0
        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();
        }
예제 #2
0
        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]));
        }
예제 #3
0
        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);
        }