Пример #1
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);
        }
Пример #2
0
        public async Task <WalletAddressesResult> GetAddressesAsync(WalletAddressContext context)
        {
            var api     = ApiProvider.GetApi(context);
            var accsRaw = await api.GetAccountsAsync().ConfigureAwait(false);

            CheckResponseErrors(accsRaw);

            var accs = accsRaw.GetContent();

            var addresses = new WalletAddressesResult();

            var accountIds = accs.data.Select(x => new KeyValuePair <string, string>(x.currency, x.id));

            foreach (var kvp in accountIds)
            {
                var r = await api.GetAddressesAsync(kvp.Value).ConfigureAwait(false);

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

                    addresses.Add(new WalletAddress(this, kvp.Key.ToAsset(this))
                    {
                        Address = rAddress.address
                    });
                }
            }

            return(addresses);
        }
Пример #3
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);
        }
Пример #4
0
        public async Task <WalletAddressesResult> GetAddressesAsync(WalletAddressContext context)
        {
            var addresses = new WalletAddressesResult();
            var wac       = new WalletAddressAssetContext("ETH".ToAsset(this), context.UserContext, context.L);

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

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

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

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

            return(addresses);
        }
Пример #5
0
        public async Task <WalletAddressesResult> 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 WalletAddressesResult();
            var walletAddress = new WalletAddress(this, context.Asset)
            {
                Address = depositAddress
            };

            addresses.Add(walletAddress);

            return(addresses);
        }
Пример #6
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);
        }
Пример #7
0
        public async Task <WalletAddressesResult> GetAddressesAsync(WalletAddressContext context)
        {
            var api = ApiProvider.GetApi(context);

            var rRaw = await api.GetBalancesAsync().ConfigureAwait(false);

            CheckResponseErrors(rRaw);

            var r = rRaw.GetContent();

            var addresses = new WalletAddressesResult();

            foreach (var rBalance in r.result)
            {
                addresses.Add(new WalletAddress(this, rBalance.Currency.ToAsset(this))
                {
                    Address = rBalance.CryptoAddress
                });
            }

            return(addresses);
        }
Пример #8
0
        public async Task <WalletAddressesResult> GetAddressesAsync(WalletAddressContext context)
        {
            var api    = ApiProvider.GetApi(context);
            var assets = await GetAssetPairsAsync(context).ConfigureAwait(false);

            var addresses = new WalletAddressesResult();

            foreach (var pair in assets)
            {
                var fundingMethod = await GetFundingMethodAsync(context, pair.Asset1).ConfigureAwait(false);

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

                var localAddresses = await GetAddressesLocalAsync(api, fundingMethod, pair.Asset1).ConfigureAwait(false);

                addresses.AddRange(localAddresses.WalletAddresses);
            }

            return(addresses);
        }
Пример #9
0
        private async Task <WalletAddressesResult> GetAddressesLocalAsync(IKrakenApi api, string fundingMethod, Asset asset, bool generateNew = false)
        {
            var body = CreateKrakenBody();

            // BUG: do we need "aclass"?
            //body.Add("aclass", asset.ToRemoteCode(this));
            body.Add("asset", asset.ToRemoteCode(this));
            body.Add("method", fundingMethod);
            body.Add("new", generateNew);

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

            CheckResponseErrors(r);

            var walletAddresses = new WalletAddressesResult();

            foreach (var addr in r.result)
            {
                var walletAddress = new WalletAddress(this, asset)
                {
                    Address = addr.address
                };

                if (addr.expiretm != 0)
                {
                    var time = addr.expiretm.ToUtcDateTime();
                    walletAddress.ExpiresUtc = time;
                }

                walletAddresses.Add(new WalletAddress(this, asset)
                {
                    Address = addr.address
                });
            }

            return(walletAddresses);
        }
Пример #10
0
        public async Task <WalletAddressesResult> GetAddressesForAssetAsync(WalletAddressAssetContext context)
        {
            var api = ApiProvider.GetApi(context);

            var rRaw = await api.GetBalancesAsync().ConfigureAwait(false);

            CheckResponseErrors(rRaw);

            var r = rRaw.GetContent();

            var addresses = new WalletAddressesResult();

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