예제 #1
0
        private void StoreNewNuimoOptions(NuimoOptions newOptions)
        {
            lock (lockObject)
            {
                var     file         = _fileProvider.GetFileInfo("appSettings.json");
                var     settingsJson = System.IO.File.ReadAllText(file.PhysicalPath);
                dynamic settings     = JsonConvert.DeserializeObject(settingsJson);

                settings["NuimoOptions"] = JToken.FromObject(newOptions);

                settingsJson = JsonConvert.SerializeObject(settings, Formatting.Indented);

                System.IO.File.WriteAllText(file.PhysicalPath, settingsJson);
            }
        }
예제 #2
0
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            //
            // TODO: Insert code to perform background work
            //
            // If you start any asynchronous methods here, prevent the task
            // from closing prematurely by using BackgroundTaskDeferral as
            // described in http://aka.ms/backgroundtaskdeferral
            //

            _deferral              = taskInstance.GetDeferral();
            taskInstance.Canceled += OnTaskCanceled;

            NuimoOptions options = await OptionsDownloader.GetOptions();

            while (options == null)
            {
                Debug.WriteLine("Could not get settings. Retrying.");
                await Task.Delay(5000);

                options = await OptionsDownloader.GetOptions();
            }

            _optionsHash = options.GetHashCode();

            var nuimoHub = new NuimoHub(options);

            nuimoHub.Start();

            while (true)
            {
                var newOptions = await OptionsDownloader.GetOptions();

                if (newOptions.GetHashCode() != _optionsHash)
                {
                    Debug.WriteLine("New settings detected. Shutting down.");
                    _deferral.Complete();
                }

                await Task.Delay(5000);
            }
        }
예제 #3
0
        public NuimoHub(NuimoOptions options)
        {
            _options = options;
            var apps = new List <INuimoApp>
            {
                new TimerApp.TimerApp(),
                new TestApp.TestApp()
            };

            if (options.ChromecastOptions != null)
            {
                //apps.Add(new CastApp.CastApp(options.ChromecastOptions));
            }

            if (options.HueOptions != null)
            {
                apps.Add(new HueApp.HueApp(options.HueOptions));
            }

            Applications = new LinkedList <INuimoApp>(apps);
        }
예제 #4
0
 public HueController(IOptionsSnapshot <NuimoOptions> nuimoOptions, INuimoOptionsWriter nuimoOptionsWriter)
 {
     _nuimoOptions       = nuimoOptions.Value;
     _nuimoOptionsWriter = nuimoOptionsWriter;
 }
 public ConfigurationController(IOptionsSnapshot <NuimoOptions> nuimoOptions)
 {
     _nuimoOptions = nuimoOptions.Value;
 }
예제 #6
0
 public NuimoOptionsWriter(IOptionsSnapshot <NuimoOptions> nuimoOptions, IFileProvider fileProvider)
 {
     _nuimoOptions = nuimoOptions.Value;
     _fileProvider = fileProvider;
 }