public Task <VirtualStorage.VirtualVolume> Restore() { // todo: load last connected session from settings var @virtual = new Settings.VirtualVolume() { MountOptions = DokanOptions.DebugMode | DokanOptions.AltStream | DokanOptions.CurrentSession, Drive = 'Z', DriveMustBeReused = false, Format = "NTFS", Label = "CoreData", MaxPathLength = 256, Features = FileSystemFeatures.CaseSensitiveSearch | FileSystemFeatures.CasePreservedNames | FileSystemFeatures.UnicodeOnDisk | FileSystemFeatures.PersistentAcls }; var local = new Settings.LocalStorage { Home = Environment.CurrentDirectory }; var coreData = new Server.Settings.BasicConnection( new Uri("https://test01-dev.coredata.is"), "autoit", "test123!"); // todo: ^^^ var lastSession = new CoreDataStorage(@virtual, local, coreData); return(Connect(lastSession)); }
public async Task <VirtualStorage.VirtualVolume> Connect(CoreDataStorage session) { var acl = session.VirtualStorage.IsSecuritySupported ? AccessControl.AllAllowed : AccessControl.Undefined; var localStorage = new PhysicalStorage(session.LocalStorage, acl); var coreDataClient = _coreDataConnectionFactory(session.CoreData); var authenticated = await coreDataClient.Authenticate(); if (!localStorage.Exists && !authenticated) { _trayNotifier.Warn(_connectError); return(null); } var drive = _virtualDriveFactory(session.VirtualStorage, coreDataClient, localStorage); // todo: save drive as last successful connections session, to be able to restore within this or next app session. return(drive); }