Exemplo n.º 1
0
        public async Task SendAsync(string type, string sender, string message)
        {
            if (type.Equals(ChannelTypes.Monitor, StringComparison.InvariantCultureIgnoreCase))
            {
                await _sender.SendAsync(type, sender, message);

                return;
            }

            await _sender.SendAsync(ChannelTypes.MarginTrading, sender, GetSlackMsg(message));
        }
Exemplo n.º 2
0
        public void SetMode(bool isEnabled)
        {
            IsEnabled = isEnabled;

            _slackNotificationsSender.SendAsync(ChannelTypes.Monitor, $"Backend {_settings.Env}",
                                                $"Maintenance mode is {(isEnabled ? "ENABLED" : "DISABLED")}");
        }
Exemplo n.º 3
0
 public void AlertRiskOfficer(string assetPairId, string message, EventTypeEnum eventType)
 {
     var(slackChannelType, traceLevel) = _alertSeverityLevelService.GetLevel(eventType);
     Trace.Write(traceLevel, assetPairId, $"{nameof(AlertRiskOfficer)}: {message}", new {});
     if (!string.IsNullOrWhiteSpace(slackChannelType))
     {
         _slack.SendAsync(slackChannelType, "MT OrderbookAggregator", message);
     }
 }
Exemplo n.º 4
0
        public async Task Process()
        {
            var multisigsWithOldRequests = await PrepareExistingRequests();

            var channels = await GetChannels(Constants.BtcAssetId);

            var ordered = channels.Balances.Where(x => x.ClientAmount == 0).OrderByDescending(x => x.HubAmount);

            var broadcastedCount = 0;

            var maxBroadcastCount = await _offchainSettingsRepository.Get(Constants.MaxCommitmentBroadcastCountSettingsKey, MaxBroadcastCount);

            try
            {
                foreach (var item in ordered)
                {
                    if (broadcastedCount >= maxBroadcastCount)
                    {
                        return;
                    }

                    if (multisigsWithOldRequests.ContainsKey(item.Multisig))
                    {
                        try
                        {
                            await _logger.WriteInfoAsync(nameof(BroadcastCommitmentFunction), nameof(Process),
                                                         $"Multisig: {item.Multisig}", "Start commitment broadcasting");

                            var response = await BroadcastCommitment(item.Multisig, Constants.BtcAssetId);

                            broadcastedCount++;

                            await _offchainRequestService.Complete(multisigsWithOldRequests[item.Multisig]);

                            await _logger.WriteInfoAsync(nameof(BroadcastCommitmentFunction), nameof(Process),
                                                         $"Multisig: {item.Multisig}, hash: {response.TransactionHash}",
                                                         "Finish commitment broadcasting");
                        }
                        catch (Exception e)
                        {
                            await _logger.WriteErrorAsync(nameof(BroadcastCommitmentFunction), nameof(Process),
                                                          $"Multisig: {item.Multisig}", e);
                        }
                    }
                }
            }
            finally
            {
                if (broadcastedCount > 0)
                {
                    await _slackNotificationsSender.SendAsync("Offchain", ":information_source:", $"New {broadcastedCount} hub commitments were broadcasted");
                }
            }
        }
Exemplo n.º 5
0
        private async Task GenerateRequestsForAsset(string asset, decimal minAmount, DateTime?lastActivity = null)
        {
            var createdCount = 0;

            try
            {
                var channels = await GetChannels(asset);

                var existingRequests = await PrepareExistingRequests(asset);

                foreach (var channel in channels.Balances)
                {
                    // check balance
                    if (channel.HubAmount < minAmount || existingRequests.Contains(channel.Multisig))
                    {
                        continue;
                    }

                    //check last activity date
                    if (lastActivity != null && channel.UpdateDt > lastActivity)
                    {
                        continue;
                    }

                    var client = await _walletCredentialsRepository.GetClientIdByMultisig(channel.Multisig);

                    if (string.IsNullOrWhiteSpace(client))
                    {
                        continue;
                    }

                    await _offchainRequestService.CreateHubCashoutRequests(asset, client);

                    createdCount++;
                }
            }
            finally
            {
                if (createdCount != 0)
                {
                    await _slackNotificationsSender.SendAsync("Offchain", ":information_source:", $"New {createdCount} hub requests were created for {asset}. (min. {minAmount})");
                }

                await _log.WriteInfoAsync(nameof(ManualHubCashoutFunction), nameof(GenerateRequestsForAsset), $"Asset: {asset}, requests created: {createdCount}", "Finished");
            }
        }
Exemplo n.º 6
0
        public async Task WriteInfoAsync(string component, string process, string context, string info, DateTime?dateTime = null)
        {
            if (!_isInfoEnabled)
            {
                return;
            }

            if (await _spamGuard.ShouldBeMutedAsync(LogLevel.Info, component, process))
            {
                return;
            }

            var message = $"{GetComponentName(component)} : {process} : {info} : {context}";
            await _sender.SendAsync(_channel, ":information_source:", message);
        }
Exemplo n.º 7
0
        /// <inheritdoc />
        public void Notify([NotNull] string healthMessage, [CanBeNull] object context)
        {
            var sender = $":loudspeaker: {_appName} {_appVersion} : {_envInfo}";

            var messageBuilder = new StringBuilder();

            messageBuilder.Append(healthMessage);

            if (context != null)
            {
                messageBuilder.AppendLine();
                messageBuilder.Append(LogContextConversion.ConvertToString(context));
            }

            var message = messageBuilder.ToString();
            var tasks   = new List <Task> {
                _slackSender.SendMonitorAsync(message, sender)
            };

            tasks.AddRange(_customChannels.Select(c => _slackSender.SendAsync(c, sender, message)));

            Task.WhenAll(tasks).ConfigureAwait(false).GetAwaiter().GetResult();
        }
Exemplo n.º 8
0
 protected void WriteInfoToLogAndSlack(string infoMessage)
 {
     _logger.WriteInfoAsync(ApplicationInfo.ApplicationFullName, null, null, infoMessage);
     _slackNotificationsSender.SendAsync(ChannelTypes.MarginTrading, ApplicationInfo.ApplicationFullName,
                                         infoMessage);
 }
 public async Task SendAsync(string type, string sender, string message)
 {
     await _sender.SendAsync(_channelType, sender, GetSlackMsg(message));
 }
Exemplo n.º 10
0
 public Task SendRawAsync(string type, string sender, string message)
 {
     return(_sender?.SendAsync(type, sender, message) ?? Task.CompletedTask);
 }
Exemplo n.º 11
0
 public async Task Send(AzureAlertNotification notification)
 {
     var sender = notification.Context.ResourceName;
     var msg    = FormatMessage(notification);
     await _slackNotificationsSender.SendAsync(Const.SlackMsgType, sender, msg);
 }
Exemplo n.º 12
0
 public async Task FinanceWarningAsync(string message)
 {
     await _slackNotificationsSender.SendAsync("Financewarnings", "bitcoin service", message);
 }
Exemplo n.º 13
0
 public async Task SendNotification(string type, string message, string sender)
 {
     await _slackClient.SendAsync(type, sender, message);
 }
Exemplo n.º 14
0
 public static Task SendInfoAsync(this ISlackNotificationsSender src, string message, string sender = null)
 {
     return(src.SendAsync("Info", sender ?? ":exclamation:", message));
 }
Exemplo n.º 15
0
 public static Task SendMonitorAsync(this ISlackNotificationsSender src, string message, string sender = null)
 {
     return(src.SendAsync("Monitor", sender ?? ":information_source:", message));
 }
Exemplo n.º 16
0
 public static Task SendWarningAsync(this ISlackNotificationsSender src, string message, string sender = null)
 {
     return(src.SendAsync("Warning", sender ?? ":warning:", message));
 }