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); } } }
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)); } }
public async Task <Stream> GetFileContentAsync(FileSyncFile file) => await httpClient.GetStreamAsync(file.ContentUrl ?? throw new ArgumentNullException(nameof(file)));