public UploadResumeReport GetRemainingFiles()
        {
            var filesToCheck    = _filesToCheck.ToList();
            int filesExistCount = 0;

            for (int i = 0; i < filesToCheck.Count(); i++)
            {
                IZipEntry zipEntry = filesToCheck[i];

                _notifier.CheckingForUploadedFile(_gameName, zipEntry.FileName);

                if (!_xboxGameRepository.Exists(_gameName, zipEntry.FileName, zipEntry.UncompressedSize))
                {
                    break;
                }

                filesExistCount++;
                _notifier.FileAlreadyExists(_gameName, zipEntry.FileName);
            }

            var  filesUploaded = filesToCheck.GetRange(0, filesExistCount);
            long sizeUploaded  = filesUploaded.Sum(x => x.UncompressedSize);

            filesToCheck.RemoveRange(0, filesExistCount);

            return(new UploadResumeReport(filesToCheck, sizeUploaded));
        }
        private void ExtractZipToDisk(IZipEntry zipEntry, string gameName)
        {
            _notifier.ExtractFileToDisk(gameName, zipEntry.FileName);

            var xboxTempFileDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "XboxFtp", "Temp", gameName);

            zipEntry.Extract(xboxTempFileDirectory, ExtractExistingFileAction.OverwriteSilently);

            XboxTempFileTransferRequest request = new XboxTempFileTransferRequest()
            {
                Path         = zipEntry.FileName,
                TempFilePath = Path.Combine(xboxTempFileDirectory, zipEntry.FileName)
            };

            _notifier.AddingToUploadQueue(gameName, zipEntry.FileName);
            _xboxFtpRequests.Add(request);
        }
Example #3
0
        public void SetUp()
        {
            mFileSystem = A.Fake <IFileSystem>();
            mZipFile    = A.Fake <IFile>();
            A.CallTo(() => mFileSystem.GetFile("zip file name")).Returns(mZipFile);
            mZip = A.Fake <IZipFile>();
            A.CallTo(() => mZipFile.ReadZip()).Returns(mZip);
            mZipEntry = A.Fake <IZipEntry>();
            IEnumerator <IZipEntry> enumerator = new List <IZipEntry>()
            {
                mZipEntry
            }.GetEnumerator();

            A.CallTo(() => mZip.GetEnumerator()).Returns(enumerator);
            mFileExistenceChecker = A.Fake <IFileExistenceChecker>();
            mUnderTest            = new DbUnzipper(mFileSystem, mFileExistenceChecker);
            Settings.Default.TemporaryTxtDbPath = "unpack directory";
        }
        private void ExtractZipToMemory(IZipEntry zipEntry, string gameName)
        {
            using (Stream reader = zipEntry.OpenReader())
            {
                byte[] data;
                data = new byte[zipEntry.UncompressedSize];
                reader.Read(data, 0, (int)zipEntry.UncompressedSize);

                XboxInMemoryTransferRequest request = new XboxInMemoryTransferRequest()
                {
                    Path = zipEntry.FileName,
                    Data = data
                };
                reader.Close();
                _notifier.AddingToUploadQueue(gameName, zipEntry.FileName);
                _xboxFtpRequests.Add(request);
            }
        }
        private bool CreateNode(IZipEntry entry)
        {
            // create internal node
            var currentNode = this;
            var pathBuilder = new StringBuilder(FullName());
            var nameBuilder = new StringBuilder();

            foreach (char c in entry.FullName.Substring(FullName().Length))
            {
                pathBuilder = pathBuilder.Append(c);
                if (c == '/')
                {
                    var dirEntry = new CustomZipEntry(
                        0,
                        pathBuilder.ToString(),
                        entry.LastWriteTime,
                        0,
                        nameBuilder.ToString(),
                        null
                        );

                    var node = new FileTreeNode(dirEntry);
                    currentNode.mChildren.Add(node);
                    node.mParent = currentNode;
                    currentNode  = node;

                    nameBuilder = nameBuilder.Clear();
                }
                else
                {
                    nameBuilder = nameBuilder.Append(c);
                }
            }

            // create leaf node for the zip entry
            if (!entry.FullName.EndsWith('/'))
            {
                var node = new FileTreeNode(entry);
                currentNode.mChildren.Add(node);
                node.mParent = currentNode;
            }

            return(true);
        }
        public bool Insert(IZipEntry entry)
        {
            if (IsDirectory() && entry.FullName.StartsWith(FullName()))
            {
                foreach (FileTreeNode child in mChildren)
                {
                    if (child.Insert(entry))
                    {
                        return(true);
                    }
                }

                return(CreateNode(entry));
            }
            else
            {
                return(false);
            }
        }
 public FileTreeNode(IZipEntry entry)
 {
     mNodeEntry = entry;
 }
 public FileTreeNode(ZipArchiveEntry entry)
 {
     mNodeEntry = new ZipEntry(entry);
 }