Example #1
0
        public ChatContext(string serverId, IConfig config, IDatabaseBackend databaseBackend, IDataProvider dataProvider)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            DatabaseWrapper db       = new DatabaseWrapper(databaseBackend ?? throw new ArgumentNullException(nameof(databaseBackend)));
            IMessageStorage msgStore = db.IsNullBackend
                ? new MemoryMessageStorage()
                : new ADOMessageStorage(db);

            DataProvider = dataProvider ?? throw new ArgumentNullException(nameof(dataProvider));
            Sessions     = new SessionManager(this, serverId, config.ScopeTo(@"sessions"));
            Messages     = new MessageManager(this, msgStore, config.ScopeTo(@"messages"));
            Users        = new UserManager(this);
            Channels     = new ChannelManager(this, config, Bot);
            ChannelUsers = new ChannelUserRelations(this, Channels, Users, Sessions, Messages);
            RateLimiter  = new RateLimiter(config.ScopeTo(@"flood"));

            Channels.UpdateChannels();

            // Should probably not rely on Timers in the future
            BumpTimer = new Timer(e => {
                Logger.Write(@"Bumping last online times...");
                IEnumerable <IUser> users             = null;
                Sessions.GetActiveSessions(s => users = s.Select(s => s.User));
                DataProvider.UserBumpClient.SubmitBumpUsers(Sessions, users);
            }, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));
        }
Example #2
0
 public WhoCommand(UserManager users, ChannelManager channels, ChannelUserRelations channelUsers, IUser sender)
 {
     Users        = users ?? throw new ArgumentNullException(nameof(users));
     Channels     = channels ?? throw new ArgumentNullException(nameof(channels));
     ChannelUsers = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
     Sender       = sender ?? throw new ArgumentNullException(nameof(sender));
 }
Example #3
0
 public MessageSendPacketHandler(
     UserManager users,
     ChannelManager channels,
     ChannelUserRelations channelUsers,
     MessageManager messages,
     ChatBot bot,
     IEnumerable <ICommand> commands
     )
 {
     Users        = users ?? throw new ArgumentNullException(nameof(users));
     Channels     = channels ?? throw new ArgumentNullException(nameof(channels));
     ChannelUsers = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
     Messages     = messages ?? throw new ArgumentNullException(nameof(messages));
     Bot          = bot ?? throw new ArgumentNullException(nameof(bot));
     Commands     = commands ?? throw new ArgumentNullException(nameof(commands));
 }
Example #4
0
        public Context(IConfig config, IDatabaseBackend databaseBackend, IDataProvider dataProvider)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            ServerId = RNG.NextString(ID_LENGTH); // maybe read this from the cfg instead
            Created  = DateTimeOffset.Now;        // read this from config definitely

            DatabaseWrapper db       = new DatabaseWrapper(databaseBackend ?? throw new ArgumentNullException(nameof(databaseBackend)));
            IMessageStorage msgStore = db.IsNullBackend
                ? new MemoryMessageStorage()
                : new ADOMessageStorage(db);

            DataProvider = dataProvider ?? throw new ArgumentNullException(nameof(dataProvider));
            Sessions     = new SessionManager(this, Users, config.ScopeTo(@"sessions"), ServerId);
            Messages     = new MessageManager(this, msgStore, config.ScopeTo(@"messages"));
            Users        = new UserManager(this);
            Channels     = new ChannelManager(this, config, Bot);
            ChannelUsers = new ChannelUserRelations(this, Channels, Users, Sessions, Messages);
            RateLimiter  = new RateLimiter(config.ScopeTo(@"flood"));

            WelcomeMessage = new WelcomeMessage(config.ScopeTo(@"welcome"));

            AddEventHandler(Sessions);
            AddEventHandler(Users);
            AddEventHandler(Channels);
            AddEventHandler(ChannelUsers);
            AddEventHandler(Messages);

            Channels.UpdateChannels();

            // Should probably not rely on Timers in the future
            BumpTimer = new Timer(e => {
                Logger.Write(@"Nuking dead sessions and bumping online times...");
                Sessions.CheckTimeOut();
                IEnumerable <IUser> users             = null;
                Sessions.GetActiveSessions(s => users = s.Select(s => s.User));
                DataProvider.UserBumpClient.SubmitBumpUsers(Sessions, users);
            }, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));
        }
Example #5
0
 public AuthPacketHandler(
     SessionManager sessions,
     UserManager users,
     ChannelManager channels,
     ChannelUserRelations channelUsers,
     MessageManager messages,
     IDataProvider dataProvider,
     IUser sender,
     int version
     )
 {
     Sessions     = sessions ?? throw new ArgumentNullException(nameof(sessions));
     Users        = users ?? throw new ArgumentNullException(nameof(users));
     Channels     = channels ?? throw new ArgumentNullException(nameof(channels));
     ChannelUsers = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
     Messages     = messages ?? throw new ArgumentNullException(nameof(messages));
     DataProvider = dataProvider ?? throw new ArgumentNullException(nameof(dataProvider));
     Sender       = sender ?? throw new ArgumentNullException(nameof(sender));
     Version      = version;
 }
Example #6
0
 public UserCommand(
     IRCServer server,
     Context context,
     UserManager users,
     ChannelManager channels,
     ChannelUserRelations channelUsers,
     SessionManager sessions,
     IDataProvider dataProvider,
     WelcomeMessage welcomeMessage
     )
 {
     Server         = server ?? throw new ArgumentNullException(nameof(server));
     Context        = context ?? throw new ArgumentNullException(nameof(context));
     Users          = users ?? throw new ArgumentNullException(nameof(users));
     Channels       = channels ?? throw new ArgumentNullException(nameof(channels));
     ChannelUsers   = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
     Sessions       = sessions ?? throw new ArgumentNullException(nameof(sessions));
     DataProvider   = dataProvider ?? throw new ArgumentNullException(nameof(dataProvider));
     WelcomeMessage = welcomeMessage ?? throw new ArgumentNullException(nameof(welcomeMessage));
 }
Example #7
0
 public AuthPacketHandler(
     SockChatServer server,
     SessionManager sessions,
     UserManager users,
     ChannelManager channels,
     ChannelUserRelations channelUsers,
     MessageManager messages,
     IDataProvider dataProvider,
     IUser sender,
     WelcomeMessage welcomeMessage
     )
 {
     Server         = server ?? throw new ArgumentNullException(nameof(server));
     Sessions       = sessions ?? throw new ArgumentNullException(nameof(sessions));
     Users          = users ?? throw new ArgumentNullException(nameof(users));
     Channels       = channels ?? throw new ArgumentNullException(nameof(channels));
     ChannelUsers   = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
     Messages       = messages ?? throw new ArgumentNullException(nameof(messages));
     DataProvider   = dataProvider ?? throw new ArgumentNullException(nameof(dataProvider));
     Sender         = sender ?? throw new ArgumentNullException(nameof(sender));
     WelcomeMessage = welcomeMessage ?? throw new ArgumentNullException(nameof(welcomeMessage));
 }
 public PrivateMessageCommand(ChannelManager channels, ChannelUserRelations channelUsers, MessageManager messages)
 {
     Channels     = channels ?? throw new ArgumentNullException(nameof(channels));
     ChannelUsers = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
     Messages     = messages ?? throw new ArgumentNullException(nameof(messages));
 }
Example #9
0
 public IRCConnectionList(ChannelUserRelations channelUsers) : base(channelUsers)
 {
 }
Example #10
0
 public JoinCommand(ChannelManager channels, ChannelUserRelations channelUsers, SessionManager sessions)
 {
     Channels     = channels ?? throw new ArgumentNullException(nameof(channels));
     ChannelUsers = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
     Sessions     = sessions ?? throw new ArgumentNullException(nameof(sessions));
 }
Example #11
0
 public ConnectionList(ChannelUserRelations channelUsers)
 {
     ChannelUsers = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
 }
Example #12
0
 public InviteCommand(UserManager users, ChannelManager channels, ChannelUserRelations channelUsers)
 {
     Users        = users ?? throw new ArgumentNullException(nameof(users));
     Channels     = channels ?? throw new ArgumentNullException(nameof(channels));
     ChannelUsers = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
 }
Example #13
0
 public CreateChannelCommand(ChannelManager channels, ChannelUserRelations channelUsers, IUser sender)
 {
     Channels     = channels ?? throw new ArgumentNullException(nameof(channels));
     ChannelUsers = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
     Sender       = sender ?? throw new ArgumentNullException(nameof(sender));
 }
Example #14
0
 public PartCommand(ChannelManager channels, ChannelUserRelations channelUsers)
 {
     Channels     = channels ?? throw new ArgumentNullException(nameof(channels));
     ChannelUsers = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
 }