コード例 #1
0
        public async Task <GetWalletBlockResponse> GetBlock(GetWalletBlockRequest request)
        {
            using (var currencyRepo = new Repository <Currency>())
            {
                var currency = await currencyRepo.GetOrDefaultAsync(x => x.Id == request.CurrencyId);

                if (currency == null)
                {
                    Log.Message(LogLevel.Error, "[GetTransaction] - Currency '{0}' not found.", request.CurrencyId);
                    return(null);
                }

                try
                {
                    // var wallet = new WalletConnector("127.0.0.1", 33113, "sa_ddam213.3", "213bit");
                    var wallet    = new WalletConnector(currency.WalletHost, currency.WalletPort, currency.WalletUser, currency.WalletPass);
                    var blockHash = request.BlockHash;
                    if (string.IsNullOrEmpty(blockHash))
                    {
                        blockHash = await wallet.GetBlockHashAsync(request.BlockHeight);
                    }
                    return(new GetWalletBlockResponse {
                        BlockData = await wallet.GetBlockAsync(blockHash.Trim())
                    });
                }
                catch (Exception ex)
                {
                    Log.Exception("[GetBlock] - An exception occured during GetBlock, CurrencyId: {0}.", ex, request.CurrencyId);
                }
                return(null);
            }
        }
コード例 #2
0
        public async Task <List <WalletTransaction> > GetWalletTransactionsSince(TransactionDataType transactionDataType, int currencyId, int walletTimeoutMinutes, int searchBlockLength)
        {
            try
            {
                using (var context = _exchangeDataContextFactory.CreateReadOnlyContext())
                {
                    var currency = await context.Currency.FirstOrDefaultNoLockAsync(c => c.Id == currencyId);

                    var walletConnection = new WalletConnector(currency.WalletHost, currency.WalletPort, currency.WalletUser, currency.WalletPass, Math.Max(walletTimeoutMinutes, 1) * 60000);
                    var blockHash        = await walletConnection.GetBlockHashAsync(searchBlockLength);

                    var walletTransactions = await walletConnection.GetTransactionsAsync(blockHash, transactionDataType);

                    return(walletTransactions.Select(x => new WalletTransaction
                    {
                        Timestamp = x.Time.ToDateTime(),
                        Account = x.Account,
                        Amount = Math.Abs(x.Amount),
                        Txid = x.Txid,
                        Type = Extensions.ToTransactionType(x.Category),
                        Address = x.Address,
                        Confirmations = x.Confirmations
                    })
                           .OrderByDescending(x => x.Timestamp).ToList());
                }
            }
            catch (Exception e)
            {
                _log.Exception("[GetWalletTransactions] - An exception occured while Loading Wallet Transactions", e);
            }

            return(new List <WalletTransaction>());
        }