private void CreatedAsync(object sender, FileSystemEventArgs e) { logger.LogMessage(e.ChangeType.ToString(), e.FullPath); string userFileSystemParentPath = Path.GetDirectoryName(e.FullPath); logger.LogMessage(e.ChangeType.ToString(), Mapping.ReverseMapPath(userFileSystemParentPath)); fileProviderManager.SignalEnumerator(/*NSFileProviderItemIdentifier.RootContainer*/ Mapping.ReverseMapPath(userFileSystemParentPath), error => { if (error != null) { logger.LogError(error.Description); } }); }
public async Task GetChildrenAsync(string pattern, IOperationContext operationContext, IFolderListingResultContext resultContext) { IEnumerable <FileSystemInfo> remoteStorageChildren = new DirectoryInfo(Mapping.MapPath(Name)).EnumerateFileSystemInfos(pattern); List <IFileSystemItemBasicInfo> infos = new List <IFileSystemItemBasicInfo>(); foreach (FileSystemInfo remoteStorageItem in remoteStorageChildren) { VfsFileSystemItem info = (VfsFileSystemItem)Mapping.GetUserFileSysteItemBasicInfo(remoteStorageItem); info.Name = Mapping.ReverseMapPath(info.Name); infos.Add(info); } resultContext.ReturnChildren(infos.ToArray(), infos.Count); }
public override async Task <IFileSystemItem> GetFileSystemItemAsync(string path) { string remotePath = Mapping.MapPath(path); if (File.Exists(remotePath)) { FileInfo fileInfo = new FileInfo(remotePath); return(new VfsFile(Mapping.ReverseMapPath(fileInfo.FullName), fileInfo.Attributes, fileInfo.CreationTime, fileInfo.LastWriteTime, fileInfo.LastAccessTime, fileInfo.Length, logger)); } else if (Directory.Exists(remotePath)) { DirectoryInfo dirInfo = new DirectoryInfo(remotePath); return(new VfsFolder(Mapping.ReverseMapPath(dirInfo.FullName), dirInfo.Attributes, dirInfo.CreationTime, dirInfo.LastWriteTime, dirInfo.LastAccessTime, logger)); } return(null); }
public async Task UpdateAsync(Stream stream, IResultContext context) { Logger.LogMessage($"IFile.UpdateAsync", UserFileSystemPath); Logger.LogMessage("Sending to remote storage", UserFileSystemPath); FileInfo remoteStorageItem = new FileInfo(RemoteStoragePath); await using (FileStream remoteStorageStream = remoteStorageItem.Open(FileMode.Open, FileAccess.Write, FileShare.None)) { string userFileSystemPath = Mapping.ReverseMapPath(RemoteStoragePath); // update remote storage file content. if (stream != null) { await stream.CopyToAsync(remoteStorageStream); remoteStorageStream.SetLength(stream.Length); } } Logger.LogMessage("Sent to remote storage succesefully", UserFileSystemPath); }