public void GetDepositAddresses()
            {
                var provider = Networks.I.Providers.OfType <BittrexProvider>().FirstProvider();

                var ctx    = new WalletAddressAssetContext("BTC".ToAsset(provider), UserContext.Current);
                var ctxAll = new WalletAddressContext(UserContext.Current);

                var addresses    = AsyncContext.Run(() => provider.GetAddressesForAssetAsync(ctx));
                var addressesAll = AsyncContext.Run(() => provider.GetAddressesAsync(ctxAll));

                try
                {
                    System.Console.WriteLine("Addresses for 1 asset");
                    foreach (var address in addresses)
                    {
                        System.Console.WriteLine($"{address.Asset} : {address.Address}");
                    }

                    System.Console.WriteLine("Addresses for all assets");
                    foreach (var address in addressesAll)
                    {
                        System.Console.WriteLine($"{address.Asset} : {address.Address}");
                    }
                }
                catch (Exception e)
                {
                    System.Console.WriteLine(e);
                    throw;
                }
            }
示例#2
0
        public async Task <WalletAddressesResult> GetAddressesForAssetAsync(WalletAddressAssetContext context)
        {
            var api  = ApiProvider.GetApi(context);
            var body = CreatePoloniexBody(PoloniexBodyType.ReturnDepositAddresses);

            var addresses = new WalletAddressesResult();

            var rRaw = await api.GetDepositAddressesAsync(body).ConfigureAwait(false);

            CheckResponseErrors(rRaw);

            var r = rRaw.GetContent();

            var assetBalances = r.Where(x => Equals(x.Key.ToAsset(this), context.Asset)).ToArray();

            foreach (var balance in assetBalances)
            {
                if (string.IsNullOrWhiteSpace(balance.Value))
                {
                    continue;
                }

                addresses.Add(new WalletAddress(this, balance.Key.ToAsset(this))
                {
                    Address = balance.Value
                });
            }

            return(addresses);
        }
示例#3
0
        public override void TestGetAddressesForAsset()
        {
            // BUG: EFunding:Too many addresses. Should investigate that.
            var context = new WalletAddressAssetContext("MLN".ToAssetRaw(), UserContext.Current);

            base.TestGetAddressesForAsset(context);
        }
示例#4
0
        public async Task <WalletAddresses> GetAddressesForAssetAsync(WalletAddressAssetContext context)
        {
            var api  = ApiProvider.GetApi(context);
            var body = CreatePoloniexBody(PoloniexBodyType.ReturnDepositAddresses);

            var addresses = new WalletAddresses();

            try
            {
                var r = await api.GetDepositAddressesAsync(body).ConfigureAwait(false);

                var assetBalances = r.Where(x => Equals(x.Key.ToAsset(this), context.Asset)).ToArray();

                foreach (var balance in assetBalances)
                {
                    if (string.IsNullOrWhiteSpace(balance.Value))
                    {
                        continue;
                    }

                    addresses.Add(new WalletAddress(this, balance.Key.ToAsset(this))
                    {
                        Address = balance.Value
                    });
                }
            }
            catch (Exception e)
            {
                // "Unable to get deposit addresses, please check that your account is verified"
                throw new ApiResponseException(e, this);
            }

            return(addresses);
        }
示例#5
0
        public async Task <WalletAddresses> GetAddressesForAssetAsync(WalletAddressAssetContext context)
        {
            var api = ApiProvider.GetApi(context);

            var accid = "";

            var accs = await api.GetAccountsAsync().ConfigureAwait(false);

            var ast = context.Asset.ToRemoteCode(this);

            var acc = accs.data.FirstOrDefault(x => string.Equals(x.currency, ast, StringComparison.OrdinalIgnoreCase));

            if (acc == null)
            {
                return(null);
            }

            accid = acc.id;

            if (accid == null)
            {
                return(null);
            }

            var r = await api.GetAddressesAsync(acc.id).ConfigureAwait(false);

            // TODO: re-implement.
            //if (r.data.Count == 0 && context.CanGenerateAddress)
            //{
            //    var cr = await api.CreateAddressAsync(accid);
            //    if (cr != null)
            //        r.data.AddRange(cr.data);
            //}

            var addresses = new WalletAddresses();

            foreach (var a in r.data)
            {
                if (string.IsNullOrWhiteSpace(a.address))
                {
                    continue;
                }

                var forasset = FromNetwork(a.network);
                if (!context.Asset.Equals(forasset))
                {
                    continue;
                }

                addresses.Add(new WalletAddress(this, context.Asset)
                {
                    Address = a.address
                });
            }

            return(addresses);
        }
示例#6
0
        public void TestGetAddressesForAsset(WalletAddressAssetContext context)
        {
            var p = IsType <IDepositProvider>();

            if (p.Success)
            {
                GetAddressesForAsset(p.Provider, context);
            }
        }
示例#7
0
        public async Task <WalletAddressesResult> GetAddressesForAssetAsync(WalletAddressAssetContext context)
        {
            var api = ApiProvider.GetApi(context);

            var fundingMethod = await GetFundingMethodAsync(context, context.Asset).ConfigureAwait(false);

            if (fundingMethod == null)
            {
                throw new NullReferenceException("No funding method is found");
            }

            var addresses = await GetAddressesLocalAsync(api, fundingMethod, context.Asset).ConfigureAwait(false);

            return(addresses);
        }
示例#8
0
        public async Task <WalletAddresses> GetAddressesForAssetAsync(WalletAddressAssetContext context)
        {
            var api = ApiProvider.GetApi(context);

            var r = await api.GetDepositAddressAsync(context.Asset.ShortCode).ConfigureAwait(false);

            var walletAddresses = new WalletAddresses
            {
                new WalletAddress(this, context.Asset)
                {
                    Address = r.address
                }
            };

            return(walletAddresses);
        }
        private void GetAddressesForAsset(IDepositProvider provider, WalletAddressAssetContext context)
        {
            if (context == null)
            {
                return;
            }

            var r = AsyncContext.Run(() => provider.GetAddressesForAssetAsync(context));

            Assert.IsTrue(r != null);

            Trace.WriteLine($"Deposit addresses for {context.Asset}:");
            foreach (var walletAddress in r)
            {
                Trace.WriteLine($"\"{walletAddress.Address}\"");
            }
        }
示例#10
0
        public async Task <WalletAddresses> GetAddressesAsync(WalletAddressContext context)
        {
            var addresses = new WalletAddresses();
            var wac       = new WalletAddressAssetContext("ETH".ToAsset(this), context.UserContext, context.L);

            addresses.AddRange(await GetAddressesForAssetAsync(wac).ConfigureAwait(false));

            wac.Asset = "BTC".ToAsset(this);
            addresses.AddRange(await GetAddressesForAssetAsync(wac).ConfigureAwait(false));

            wac.Asset = "XRP".ToAsset(this);
            addresses.AddRange(await GetAddressesForAssetAsync(wac).ConfigureAwait(false));

            wac.Asset = "LTC".ToAsset(this);
            addresses.AddRange(await GetAddressesForAssetAsync(wac).ConfigureAwait(false));

            return(addresses);
        }
示例#11
0
        public async Task <WalletAddressesResult> GetAddressesForAssetAsync(WalletAddressAssetContext context)
        {
            var api = ApiProvider.GetApi(context);

            var rRaw = await api.GetDepositAddressAsync(context.Asset.ShortCode).ConfigureAwait(false);

            CheckResponseErrors(rRaw);

            var r = rRaw.GetContent();

            var walletAddresses = new WalletAddressesResult(new WalletAddress(this, context.Asset)
            {
                Address = r.address
            }
                                                            );

            return(walletAddresses);
        }
示例#12
0
        private void PullWallet()
        {
            var wac = new WalletAddressAssetContext(Asset.Btc, UserContext.Current);

            foreach (var network in Networks.I.DepositProviders)
            {
                var r = ApiCoordinator.GetDepositAddresses(network, wac);
                if (r.IsNull)
                {
                    continue;
                }

                foreach (var i in r.Response)
                {
                    Addresses.Add(i);
                }
            }
        }
示例#13
0
        public async Task <WalletAddressesResult> GetAddressesForAssetAsync(WalletAddressAssetContext context)
        {
            var api          = ApiProvider.GetApi(context);
            var currencyPath = GetCurrencyPath(context.Asset);

            var r = await api.GetDepositAddressAsync(currencyPath).ConfigureAwait(false);

            var processedAddress = ProcessAddressResponce(context.Asset, r);

            //if (!this.ExchangeHas(context.Asset))
            //    return null;

            var walletAddress = new WalletAddress(this, context.Asset)
            {
                Address = processedAddress
            };

            return(new WalletAddressesResult(walletAddress));
        }
示例#14
0
        public async Task <WalletAddresses> GetAddressesForAssetAsync(WalletAddressAssetContext context)
        {
            var api = ApiProvider.GetApi(context);

            var remoteAssetCode = context.Asset.ToRemoteCode(this);
            var depositAddress  = await api.GetUserDepositAddressAsync(remoteAssetCode).ConfigureAwait(false);

            depositAddress = depositAddress.Trim('\"');

            var addresses     = new WalletAddresses();
            var walletAddress = new WalletAddress(this, context.Asset)
            {
                Address = depositAddress
            };

            addresses.Add(walletAddress);

            return(addresses);
        }
示例#15
0
        public async Task <WalletAddressesResult> GetAddressesForAssetAsync(WalletAddressAssetContext context)
        {
            var api = ApiProvider.GetApi(context);

            var rAccountId = await GetFirstAccountId(context).ConfigureAwait(false);

            var r = await api.GetAddressesAsync(rAccountId.Result).ConfigureAwait(false);

            //if (r.data.Count == 0 && context.CanGenerateAddress)
            //{
            //    var cr = await api.CreateAddressAsync(accid);
            //    if (cr != null)
            //        r.data.AddRange(cr.data);
            //}

            var addresses = new WalletAddressesResult()
            {
                ApiHitsCount = rAccountId.ApiHitsCount + 1
            };

            foreach (var a in r.data)
            {
                if (string.IsNullOrWhiteSpace(a.address))
                {
                    continue;
                }

                var forasset = FromNetwork(a.network);
                if (!context.Asset.Equals(forasset))
                {
                    continue;
                }

                addresses.Add(new WalletAddress(this, context.Asset)
                {
                    Address = a.address
                });
            }

            return(addresses);
        }
示例#16
0
            public void GetDepositAddresses()
            {
                var provider = Networks.I.Providers.OfType <KrakenProvider>().FirstProvider();

                var ctx = new WalletAddressAssetContext("BTC".ToAsset(provider), UserContext.Testing);

                try
                {
                    var addresses = AsyncContext.Run(() => provider.GetAddressesForAssetAsync(ctx));

                    foreach (var walletAddress in addresses.WalletAddresses)
                    {
                        System.Console.WriteLine($"{walletAddress.Asset} : {walletAddress.Address}");
                    }
                }
                catch (Exception e)
                {
                    System.Console.WriteLine(e.Message);
                    throw;
                }
            }
示例#17
0
        public async Task <WalletAddresses> GetAddressesForAssetAsync(WalletAddressAssetContext context)
        {
            var api = ApiProvider.GetApi(context);

            var r = await api.GetAllBalancesAsync().ConfigureAwait(false);

            CheckResponseErrors(r);

            var addresses = new WalletAddresses();

            var address = r.result.FirstOrDefault(x => x.Currency.ToAsset(this).Equals(context.Asset));

            if (address != null)
            {
                addresses.Add(new WalletAddress(this, context.Asset)
                {
                    Address = address.CryptoAddress
                });
            }

            return(addresses);
        }
示例#18
0
            public void GetDepositAddresses()
            {
                var provider = Networks.I.Providers.OfType <BitMexProvider>().FirstProvider();

                var asset = "BTC".ToAsset(provider);

                var ctx = new WalletAddressAssetContext(asset, UserContext.Current);

                try
                {
                    var r = provider.GetAddressesForAssetAsync(ctx).Result;

                    Console.WriteLine("List of addresses: ");
                    foreach (var walletAddress in r)
                    {
                        Console.WriteLine($"{walletAddress.Asset}: {walletAddress.Address}");
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
            }
示例#19
0
 public Task <WalletAddressesResult> GetAddressesForAssetAsync(WalletAddressAssetContext context)
 {
     return(Task.FromResult <WalletAddressesResult>(null));
 }
示例#20
0
        public override void TestGetAddressesForAsset()
        {
            var context = new WalletAddressAssetContext(Asset.Btc, UserContext.Testing);

            base.PretestGetAddressesForAsset(context);
        }
示例#21
0
 public Task <bool> CreateAddressForAssetAsync(WalletAddressAssetContext context)
 {
     throw new NotImplementedException();
 }
示例#22
0
        public override void TestGetAddressesForAsset()
        {
            var context = new WalletAddressAssetContext("BTC".ToAssetRaw(), UserContext.Current);

            base.TestGetAddressesForAsset(context);
        }