public async Task <int> UpdateDepositBaseTransactionHistory() { var count = 0; try { var depositBase = _balanceService.GetDepositBaseAddress(); var context = new TransactionContext { Cursor = await _keyValueStoreRepository.GetAsync(GetPagingTokenKey) }; do { count += await QueryAndProcessTransactions(depositBase, context, SaveTransactionHistory); if (!string.IsNullOrEmpty(context.Cursor)) { await _keyValueStoreRepository.SetAsync(GetPagingTokenKey, context.Cursor); } }while (!string.IsNullOrEmpty(context.Cursor)); _lastJobError = null; } catch (Exception ex) { _lastJobError = $"Error in job {nameof(TransactionHistoryService)}.{nameof(UpdateDepositBaseTransactionHistory)}: {ex.Message}"; throw new JobExecutionException("Failed to execute deposit base transaction history update", ex, count); } return(count); }
public async Task <IActionResult> AddObservation([Required] string address) { if (!_balanceService.IsAddressValid(address, out var hasExtension)) { return(BadRequest(ErrorResponse.Create("Invalid parameter").AddModelError("address", "Address must be valid"))); } if (!_balanceService.IsDepositBaseAddress(address)) { return(BadRequest(ErrorResponse.Create("Invalid parameter").AddModelError("address", $"Address must match configured deposit base address. expected={_balanceService.GetDepositBaseAddress()}"))); } if (!hasExtension) { return(BadRequest(ErrorResponse.Create("Invalid parameter").AddModelError("address", "Address must have public address extension"))); } var exists = await _balanceService.IsBalanceObservedAsync(address); if (exists) { return(new StatusCodeResult(StatusCodes.Status409Conflict)); } await _balanceService.AddBalanceObservationAsync(address); return(Ok()); }