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