Exemple #1
0
    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)
            {
Exemple #2
0
    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);
        }
    }
Exemple #3
0
 private string PreprocessPath(string path) => _pathService.RightTrimPathSeparators(path);