Exemple #1
0
        private async Task Initialize()
        {
            if (_initialized)
            {
                return;
            }

            for (int i = 0; i < 5; i++)
            {
                try
                {
                    var optionsBuilder = new DbContextOptionsBuilder <WoodchuckDbContext>();
                    optionsBuilder.UseNpgsql(_woodchuck);

                    using (var context = new WoodchuckDbContext(optionsBuilder.Options))
                    {
                        _config = context.WorkerSettings.ToDictionary(x => x.Key, x => x.Value);
                    }

                    _initialized = true;
                    break;
                }
                catch (Exception)
                {
                    if (i >= 4)
                    {
                        throw;
                    }

                    await Task.Delay(10000);
                }
            }
        }
Exemple #2
0
        private async Task Consumer_Received(object sender, BasicDeliverEventArgs @event)
        {
            _logger.LogInformation("[Worker] Worker processing message at {0}", DateTime.Now);

            var optionsBuilder = new DbContextOptionsBuilder <WoodchuckDbContext>();

            optionsBuilder.UseNpgsql(_woodchuck);

            using (var context = new WoodchuckDbContext(optionsBuilder.Options))
            {
                var photographer = new Photographer(
                    context.CameraSettings.ToList <CameraSettings>());
                var photos = await photographer.GetPhotos();

                var scribe = new Scribe(
                    _config["Storage_Uri"]);
                var recordedPhotos = await scribe.SaveStreams(photos);

                var messenger = new Messenger(
                    _config["Twilio_User"],
                    _config["Twilio_Password"],
                    _config["Twilio_Telephone"],
                    context.NotificationSettings.Where(
                        x => x.Enabled == true).
                    ToList <NotificationSettings>());

                messenger.SendMessage("Doorbell alert!", recordedPhotos);
            }
        }
Exemple #3
0
        public QueueService(ILogger <QueueService> logger, WoodchuckDbContext context)
        {
            _logger = logger;

            _hostName = (from setting in context.MonitorSettings
                         where setting.Key == "RabbitMQ-HostName"
                         select setting.Value).FirstOrDefault();

            _exchangeName = (from setting in context.MonitorSettings
                             where setting.Key == "RabbitMQ-ExchangeName"
                             select setting.Value).FirstOrDefault();

            _queueName = (from setting in context.MonitorSettings
                          where setting.Key == "RabbitMQ-QueueName"
                          select setting.Value).FirstOrDefault();

            _routingKey = (from setting in context.MonitorSettings
                           where setting.Key == "RabbitMQ-RoutingKey"
                           select setting.Value).FirstOrDefault();
        }