public async Task <IActionResult> Get() { try { var generatedWallet = await _walletGenerator.GenerateWalletAsync(); if (string.IsNullOrEmpty(generatedWallet.Address) || string.IsNullOrEmpty(generatedWallet.PrivateKey) || string.IsNullOrEmpty(generatedWallet.PublicKey)) { throw new Exception("Response lacked one of the fields"); } var storage = new AzureTableStorage <WalletStorageEntity>(_options.Value.ConnectionString, _options.Value.TableName, _logger); await storage.InsertAsync(new WalletStorageEntity { PartitionKey = "part", RowKey = generatedWallet.Address, Address = generatedWallet.Address, PublicKey = generatedWallet.PublicKey, PrivateKey = generatedWallet.PrivateKey }); return(Json(new GenerateWalletControllerResponseModel { Address = generatedWallet.Address })); } catch (Exception e) { await _slackNotifier.Notify(new SlackMessage { Sender = "SolarCoinApi.Facade", Type = "Errors", Message = "Error occured during SolarCoin address generation." }); await _logger.WriteErrorAsync("Wallet generator", "", "", e); int i = 0; while (e.InnerException != null) { e = e.InnerException; await _logger.WriteErrorAsync("Wallet generator", "", $"InnerException-lvl-{i}", e); i++; } } return(new StatusCodeResult(500)); }
private Task TryWriteErrorToSlack(string component, string message) { return(_notifier.Notify(new SlackMessage { Sender = component, Type = "Errors", Message = message })); }