Beispiel #1
0
        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)
            {

            }
        }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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));
        }
Beispiel #5
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));
        }
Beispiel #7
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);
        }