/// <summary> /// Downloaded the given RemotePropery and adds it as a local file /// </summary> /// <param name="remoteProperty"></param> /// <param name="client"></param> /// <param name="conf"></param> /// <param name="logger"></param> /// <param name="indexManager"></param> private void FetchFileFromServer(CancellationToken cancleToken, IRemoteProperty remoteProperty, ISyncClient client, Configuration conf, ILogger logger, SyncIndexManager indexManager) { try { string localFilePath = conf.Local.LocalSyncDir + remoteProperty.DecodedRelativeRemotePath; if (!File.Exists(localFilePath)) { //File does not exist local, will be downloaded and added _logger.Debug(remoteProperty.DecodedRelativeRemotePath + " does not exist locally. Will be downloaded and added to index"); FileInfo temp = client.DownloadRemoteFileToTemp(cancleToken, remoteProperty.DecodedRelativeRemotePath); if (temp != null) { FileInfo newFile = FileManager.CopyFile(temp.FullName, localFilePath, true, _logger); if (newFile != null) { FileSyncElement newFileElement = new FileSyncElement(newFile, conf.Local.LocalSyncDir, logger); indexManager.AddOrUpdate(CreateIndexElement(newFileElement, remoteProperty)); } } } } catch (Exception exc) { logger.Error("Unexpected error while fetching " + remoteProperty.RelativeRemotePath + " from server: ", exc); } }
/// <summary> /// Downloads the File from the ISync client and /// patches the current local file with the downloaded version /// or creates new file /// </summary> /// <returns>An IFileInfo property continaing information about the overwritten File, or null if download failed</returns> public FileInfo PatchLocalFile(CancellationToken cancleToken, ISyncClient client) { //Get Temp File from Remote _logger.Debug("Patching " + _relativePath + " with version from server"); FileInfo tempFile = client.DownloadRemoteFileToTemp(cancleToken, _relativePath.UrlDecode()); if (tempFile != null) { if (cancleToken.IsCancellationRequested) { return(null); } _info = FileManager.CopyFile(tempFile.FullName, _rootDirPath + _relativePath, true, _logger); return(_info); } return(null); }