コード例 #1
0
        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);
                }
            });
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }