public async Task <ActionResult> Transfer(TestingTransferRequest request) { var caps = _api.GetCapabilities(); if (!caps.IsTestingTransfersSupported.HasValue || !caps.IsTestingTransfersSupported.Value) { return(StatusCode(501)); } var asset = await _assets.GetAsync(request.AssetId); if (asset == null) { return(BadRequest(BlockchainErrorResponse.Create("Unknown asset"))); } var amount = 0M; try { amount = Conversions.CoinsFromContract(request.Amount, asset.Accuracy); } catch (ConversionException) { return(BadRequest(BlockchainErrorResponse.Create("Invalid amount format"))); } if (amount < 0 || !_api.AddressIsValid(request.FromAddress) || !_api.AddressIsValid(request.ToAddress)) { return(BadRequest(BlockchainErrorResponse.Create("Invalid address(es) and/or negative amount"))); } var result = await _api.TestingTransfer( request.FromAddress, request.FromPrivateKey, request.ToAddress, asset, amount); return(Ok(result)); }
public async Task <ActionResult> Observe(string address) { if (!Validators.ValidateAzureKey(address) || !_api.AddressIsValid(address)) { return(BadRequest(BlockchainErrorResponse.Create("'address' must be valid blockchain address"))); } if (await _depositWallets.TryObserveAsync(address)) { _chaosKitty?.Meow($"{nameof(Observe)}_Data"); await _api.ObserveAddressAsync(address); _chaosKitty?.Meow($"{nameof(Observe)}_Blockchain"); return(Ok()); } else { return(Conflict($"Address {address} is already observed")); } }