/// <summary> /// Initializes the controller: Loads settings, starts web server, sets up the camera and storage providers, /// tries to log into OneDrive (if OneDrive is selected), and starts the file upload and deletion timers /// </summary> /// <returns></returns> public async Task Initialize() { try { // Load settings from file XmlSettings = await AppSettings.RestoreAsync("Settings.xml"); // Start web server on port 8000 if (!Server.IsRunning) Server.Start(8000); // Create local storage folder if it doesn't exist StorageFolder folder = KnownFolders.PicturesLibrary; try { await folder.GetFolderAsync(AppSettings.FolderName); }catch(System.IO.FileNotFoundException) { await folder.CreateFolderAsync(AppSettings.FolderName); } Camera = CameraFactory.Get(XmlSettings.CameraType); Storage = StorageFactory.Get(XmlSettings.StorageProvider); await Camera.Initialize(); // Try to log into OneDrive using existing Access Token in settings file if (Storage.GetType() == typeof(OneDrive)) { var oneDrive = App.Controller.Storage as OneDrive; if (oneDrive != null) { if (!oneDrive.IsLoggedIn()) { try { await oneDrive.AuthorizeWithRefreshToken(XmlSettings.OneDriveRefreshToken); } catch (Exception ex) { Debug.WriteLine(ex.Message); // Log telemetry event about this exception var events = new Dictionary<string, string> { { "Controller", ex.Message } }; App.Controller.TelemetryClient.TrackEvent("FailedToLoginOneDrive", events); } } } } this.alljoynManager = new AllJoynManager(); await this.alljoynManager.Initialize(this.Camera, this.Storage); //Timer controlling camera pictures with motion uploadPicturesTimer = new DispatcherTimer(); uploadPicturesTimer.Interval = TimeSpan.FromSeconds(uploadInterval); uploadPicturesTimer.Tick += uploadPicturesTimer_Tick; uploadPicturesTimer.Start(); //Timer controlling deletion of old pictures deletePicturesTimer = new DispatcherTimer(); deletePicturesTimer.Interval = TimeSpan.FromHours(deleteInterval); deletePicturesTimer.Tick += deletePicturesTimer_Tick; deletePicturesTimer.Start(); IsInitialized = true; } catch (Exception ex) { Debug.WriteLine("Controller.Initialize() Error: " + ex.Message); // Log telemetry event about this exception var events = new Dictionary<string, string> { { "Controller", ex.Message } }; App.Controller.TelemetryClient.TrackEvent("FailedToInitialize", events); } }
/// <summary> /// Initializes the controller: Loads settings, starts web server, sets up the camera and storage providers, /// tries to log into OneDrive (if OneDrive is selected), and starts the file upload and deletion timers /// </summary> /// <returns></returns> public async Task Initialize() { try { // Load settings from file XmlSettings = await AppSettings.RestoreAsync("Settings.xml"); // Start web server on port 8000 if (!Server.IsRunning) { Server.Start(8000); } // Create local storage folder if it doesn't exist StorageFolder folder = KnownFolders.PicturesLibrary; try { await folder.GetFolderAsync(AppSettings.FolderName); }catch (System.IO.FileNotFoundException) { await folder.CreateFolderAsync(AppSettings.FolderName); } Camera = CameraFactory.Get(XmlSettings.CameraType); Storage = StorageFactory.Get(XmlSettings.StorageProvider); await Camera.Initialize(); // Try to log into OneDrive using existing Access Token in settings file if (Storage.GetType() == typeof(OneDrive)) { var oneDrive = App.Controller.Storage as OneDrive; if (oneDrive != null) { if (!oneDrive.IsLoggedIn()) { try { await oneDrive.AuthorizeWithRefreshToken(XmlSettings.OneDriveRefreshToken); } catch (Exception ex) { Debug.WriteLine(ex.Message); // Log telemetry event about this exception var events = new Dictionary <string, string> { { "Controller", ex.Message } }; App.Controller.TelemetryClient.TrackEvent("FailedToLoginOneDrive", events); } } } } this.alljoynManager = new AllJoynManager(); await this.alljoynManager.Initialize(this.Camera, this.Storage); //Timer controlling camera pictures with motion uploadPicturesTimer = new DispatcherTimer(); uploadPicturesTimer.Interval = TimeSpan.FromSeconds(uploadInterval); uploadPicturesTimer.Tick += uploadPicturesTimer_Tick; uploadPicturesTimer.Start(); //Timer controlling deletion of old pictures deletePicturesTimer = new DispatcherTimer(); deletePicturesTimer.Interval = TimeSpan.FromHours(deleteInterval); deletePicturesTimer.Tick += deletePicturesTimer_Tick; deletePicturesTimer.Start(); IsInitialized = true; } catch (Exception ex) { Debug.WriteLine("Controller.Initialize() Error: " + ex.Message); // Log telemetry event about this exception var events = new Dictionary <string, string> { { "Controller", ex.Message } }; App.Controller.TelemetryClient.TrackEvent("FailedToInitialize", events); } }