コード例 #1
0
        private void setupRelays()
        {
            _logger.LogInformation("Setting up attendance relays...");
            var relayConfigs = _configuration.GetSection("Relays").GetChildren();

            foreach (var relayConfig in relayConfigs)
            {
                var fromChatServiceName   = relayConfig.GetValue <string>("FromChatServiceName");
                var fromChannelName       = relayConfig.GetValue <string>("FromChannelName");
                var toChatServiceName     = relayConfig.GetValue <string>("ToChatServiceName");
                var toChannelName         = relayConfig.GetValue <string>("ToChannelName");
                var chatPrefix            = relayConfig.GetValue <string>("ChatPrefix");
                var attendanceStarted     = relayConfig.GetValue <string>("AttendanceStarted");
                var attendancePrefix      = relayConfig.GetValue <string>("AttendancePrefix");
                var attendanceEndedPrefix = relayConfig.GetValue <string>("AttendanceEndedPrefix");
                var relayChat             = relayConfig.GetValue <bool>  ("RelayChat");
                var relayAttendance       = relayConfig.GetValue <bool>  ("RelayAttendance");

                var fromChatService = _chatServiceConnections
                                      .SingleOrDefault(c => c.Name == fromChatServiceName);
                var toChatService = _chatServiceConnections
                                    .SingleOrDefault(c => c.Name == toChatServiceName);
                if (fromChatService == null || toChatService == null)
                {
                    _logger.LogError(
                        "Could not find chat services. Check to make sure {from} and {to} exist.",
                        fromChatServiceName,
                        toChatServiceName);
                }
                else
                {
                    _relays.Add(new RelayChannel()
                    {
                        IsActive                      = false,
                        FromChatService               = fromChatService,
                        FromChannelName               = fromChannelName,
                        ToChatService                 = toChatService,
                        ToChannelName                 = toChannelName,
                        ChatPrefix                    = chatPrefix,
                        AttendanceStarted             = attendanceStarted,
                        AttendancePrefix              = attendancePrefix,
                        AttendanceEndedPrefix         = attendanceEndedPrefix,
                        RelayChat                     = relayChat,
                        RelayAttendance               = relayAttendance,
                        AttendanceSessionStarted      = DateTimeOffset.MinValue,
                        AttendanceSessionMessageId    = "",
                        CurrentAttendanceSessionUsers = new List <UserModel>(),
                        TotalAttendanceSessionUsers   = new List <UserModel>(),
                    });
                    _logger.LogInformation(
                        "Added new [chat: {chat}, attendance: {attendance}] relay: {fromService}/{fromChannel} -> {toService}/{toChannel}",
                        relayChat,
                        relayAttendance,
                        fromChatServiceName,
                        fromChannelName,
                        toChatServiceName,
                        toChannelName);
                }
            }

            // Subscribe to connected event
            var fromChatServices = _relays.Select(r => r.FromChatService).Distinct();
            var toChatServices   = _relays.Select(r => r.ToChatService).Distinct();
            var allChatServices  = fromChatServices.Concat(toChatServices).Distinct();

            // Wait for all services to connect so we can extract channel and user info
            foreach (var chatService in allChatServices)
            {
                chatService.Connected += chatServiceConnected;
            }
        }
コード例 #2
0
 /// <inheritdoc />
 IPeriodicLoggingConfiguration ICalculationsConfiguration.Wal()
 => ConfigurationSection
 .GetSection("Wal")
 .To(subSection => new PeriodicLoggingConfiguration(subSection));
コード例 #3
0
 /// <inheritdoc />
 IPeriodicLoggingConfiguration ICalculationsConfiguration.Autovacuum()
 => ConfigurationSection
 .GetSection("Autovacuum")
 .To(subSection => new PeriodicLoggingConfiguration(subSection));
コード例 #4
0
 /// <inheritdoc />
 IGeneralConfiguration ICalculationsConfiguration.General()
 => ConfigurationSection
 .GetSection("General")
 .To(subSection => new GeneralConfiguration(subSection));
コード例 #5
0
 /// <inheritdoc />
 ConnectionString IDatabaseAccessConfiguration.ConnectionString()
 => ConfigurationSection
 .GetSection("ConnectionString")
 .To(stringSection => new ConnectionString(stringSection.Value));
コード例 #6
0
 /// <inheritdoc />
 Uri IControlAppConfiguration.HostApiUri()
 => ConfigurationSection
 .GetSection("HostApiUri")
 .Value
 .To(uriString => new Uri(uriString));