private IEnumerable <FileSystemEventArgs> GetEvents() { // key: current file name, value: aggregation event var filesDictionary = new Dictionary <string, FileSystemEventArgs>(); while (_eventsQueue.TryDequeue(out var fileSystemEventArgs)) { var filePath = _pathService.RightTrimPathSeparators(GetFullPath(fileSystemEventArgs)); if (!filesDictionary.ContainsKey(filePath)) // always add first event { filesDictionary[fileSystemEventArgs.FullPath] = fileSystemEventArgs; continue; } // not first event var previousEventType = filesDictionary[filePath].ChangeType; var currentEventType = fileSystemEventArgs.ChangeType; switch (previousEventType, currentEventType) {
private FileModel CreateFrom(string file) { try { var fileInfo = _environmentFileService.GetFile(file); var fileModel = new FileModel { Name = fileInfo.Name, FullPath = _pathService.RightTrimPathSeparators(fileInfo.FullName), LastModifiedDateTime = fileInfo.LastWriteTime, Type = GetFileType(fileInfo), SizeBytes = fileInfo.Length, Extension = _pathService.GetExtension(fileInfo.Name), LastAccessDateTime = fileInfo.LastAccessTime, CreatedDateTime = fileInfo.CreationTime }; return(fileModel); } catch { return(null); } }
private string PreprocessPath(string path) => _pathService.RightTrimPathSeparators(path);