public async Task AddOverwrite(FSItem item) { try { Directory.CreateDirectory(cachePath); // To copy a source file to file in cache folder var sourceFile = Path.Combine(cachePath, item.Id); var sourceFileInfoPath = sourceFile + ".info"; var tempFile = sourceFile + ".temp"; File.Copy(sourceFile, tempFile, true); BoschHelper.Encrypt(sourceFile, tempFile); var tempFileInfo = new FileInfo(tempFile); File.Delete(sourceFileInfoPath); var info = new UploadInfo(item) { Length = tempFileInfo.Length, Path = tempFile, SourcePath = tempFile, Overwrite = true }; await WriteInfo(sourceFileInfoPath, info); leftUploads.Add(info); allUploads.TryAdd(info.Id, info); OnUploadAdded?.Invoke(info); } catch(Exception ex) { } }
private void CheckOldUploads() { var files = Directory.GetFiles(cachePath, "*.info"); if (files.Length == 0) { return; } Log.Warn($"{files.Length} not uploaded files found. Resuming."); foreach (var info in files.Select(f => new FileInfo(f)).OrderBy(f => f.CreationTime)) { try { var id = Path.GetFileNameWithoutExtension(info.Name); var uploadinfo = JsonConvert.DeserializeObject<UploadInfo>(File.ReadAllText(info.FullName)); try { Contract.Assert(info.DirectoryName != null, "info.DirectoryName!=null"); leftUploads.Add(uploadinfo); allUploads.TryAdd(id, uploadinfo); OnUploadAdded?.Invoke(uploadinfo); } catch (FileNotFoundException) { Log.ErrorTrace("Cached upload file not found: " + uploadinfo.Path + " id:" + id); CleanUpload(uploadinfo); } } catch (Exception ex) { Log.Error(ex); } } }
public async Task AddUpload(FSItem parent, string file) { Directory.CreateDirectory(cachePath); var fileinfo = new FileInfo(file); var infoId = Guid.NewGuid().ToString(); // To copy a source file to file in cache folder var tempFile = Path.Combine(cachePath, infoId) + ".temp"; var tempFileInfo = new FileInfo(tempFile); File.Copy(file, tempFile, true); BoschHelper.Encrypt(file, tempFile); var info = new UploadInfo { Id = infoId, Length = tempFileInfo.Length, Path = Path.Combine(parent.Path, Path.GetFileName(file)), ParentId = parent.Id, SourcePath = tempFile }; var path = Path.Combine(cachePath, info.Id); await WriteInfo(path + ".info", info); leftUploads.Add(info); allUploads.TryAdd(info.Id, info); OnUploadAdded?.Invoke(info); }
private async Task AddUpload(FSItem item) { var info = new UploadInfo(item); var path = Path.Combine(cachePath, item.Id); await WriteInfo(path + ".info", info); leftUploads.Add(info); allUploads.TryAdd(info.Id, info); await (OnUploadAdded?.Invoke(info) ?? Task.FromResult(0)); }
public async Task AddOverwrite(FSItem item) { var info = new UploadInfo(item) { Overwrite = true }; var path = Path.Combine(cachePath, item.Id); await WriteInfo(path + ".info", info); leftUploads.Add(info); allUploads.TryAdd(info.Id, info); await OnUploadAdded?.Invoke(info); }
public async Task AddOverwrite(FSItem item) { var info = new UploadInfo(item) { Overwrite = true }; Directory.CreateDirectory(cachePath); var path = Path.Combine(cachePath, item.Id); await WriteInfo(path + ".info", info); leftUploads.Add(info); allUploads.TryAdd(info.Id, info); await(OnUploadAdded?.Invoke(info) ?? Task.FromResult(0)); }
public async Task AddUpload(FSItem parent, string file) { var fileinfo = new FileInfo(file); var info = new UploadInfo { Id = Guid.NewGuid().ToString(), Length = fileinfo.Length, Path = Path.Combine(parent.Path, Path.GetFileName(file)), ParentId = parent.Id }; var path = Path.Combine(cachePath, info.Id); SymbolicLink.CreateFile(file, path); await WriteInfo(path + ".info", info); leftUploads.Add(info); allUploads.TryAdd(info.Id, info); OnUploadAdded?.Invoke(info); }