示例#1
0
        private IEnumerable <FileSyncFile> GetAllFilesOnClient(SystemFilepath currentDirectory)
        {
            var directory = directoryFactory.Open(currentDirectory);

            foreach (var file in directory.GetFiles())
            {
                yield return(FileSyncFile.FromFileInfo(file, currentDirectory));
            }

            foreach (var subdirectory in directory.GetSubdirectories())
            {
                var fullPath = currentDirectory.Combine(subdirectory.Name);
                foreach (var file in GetAllFilesOnClient(fullPath))
                {
                    yield return(file);
                }
            }
        }
示例#2
0
        public Conflict(FileSyncFile clientFile, FileSyncFile serviceFile)
        {
            ClientFile  = clientFile;
            ServiceFile = serviceFile;

            ChosenVersion = Func.Invoke(() =>
            {
                bool serviceVersionIsNewer = serviceFile.LastWriteTimeUtc > clientFile.LastWriteTimeUtc;

                if (serviceVersionIsNewer)
                {
                    return(ChosenVersion.Service);
                }
                else
                {
                    return(ChosenVersion.Client);
                }
            });
        }
        public IEnumerable <Either <FileSyncDirectory, FileSyncFile> > GetListing(SystemFilepath systemPath)
        {
            var directory = directoryFactory.Open(systemPath);

            foreach (var directoryInfo in directory.GetSubdirectories())
            {
                yield return(FileSyncDirectory.FromDirectoryInfo(
                                 directoryInfo,
                                 parentDirectory: systemPath,
                                 listingEndpoint: Endpoints.Listing));
            }

            foreach (var fileInfo in directory.GetFiles())
            {
                yield return(FileSyncFile.FromFileInfo(
                                 fileInfo,
                                 parentDirectory: systemPath,
                                 fileHasher,
                                 contentEndpoint: Endpoints.Content));
            }
        }
示例#4
0
 public async Task <Stream> GetFileContentAsync(FileSyncFile file)
 => await httpClient.GetStreamAsync(file.ContentUrl ?? throw new ArgumentNullException(nameof(file)));