public List <FileObject> GenerateFileList() { WoWRepository repository = RepositoriesManager.GetRepositoryByMfil(WoWRegeneration.CurrentSession.MFil); var tmp = new List <FileObject>(); foreach (string line in Lines) { if (IsLineARepositorFile(repository, line)) { var file = new FileObject { Path = GetFilePath(line) }; if (file.Path == null) { continue; } file.Url = line; file.Info = GetFileInfo(repository, line); if (IsAcceptedFile(repository, file)) { tmp.Add(file); } } } return(tmp); }
public Session(string mfil, string locale, string os) : this() { Mfil = mfil; Locale = locale; OS = os; Repository rep = RepositoriesManager.GetRepositoryByMfil(mfil) ?? throw new Exception("Unknown mfil file"); WoWRepositoryName = rep.VersionName; }
private static void EntryPointResumeSession(Session previousSession) { CurrentSession = previousSession; IWoWRepository repository = RepositoriesManager.GetRepositoryByMfil(CurrentSession.MFil); ManifestFile manifest = ManifestFile.FromRepository(repository); CurrentSession.SaveSession(); StartProcess(manifest); }
private static void StartProcess(ManifestFile manifest) { Program.Log("Generating file list"); IWoWRepository repository = RepositoriesManager.GetRepositoryByMfil(CurrentSession.MFil); List <FileObject> files = manifest.GenerateFileList(); var downloader = new FileDownloader(repository, files); downloader.Start(); CurrentSession.SessionCompleted = true; CurrentSession.SaveSession(); CurrentSession.Destroy(); Program.Log("Download Complete !!", ConsoleColor.Green); }
public Session(string mfil, string locale, string os) : this() { MFil = mfil; Locale = locale; Os = os; WoWRepository rep = RepositoriesManager.GetRepositoryByMfil(mfil); if (rep == null) { throw new Exception("Unknow mfil file"); } WoWRepositoryName = rep.GetVersionName(); }
private static void StartProcess(ManifestFile manifest) { Program.Log("Generating file list"); Repository repository = RepositoriesManager.GetRepositoryByMfil(CurrentSession.Mfil); List <FileObject> files = manifest.GenerateFileList(); using (var downloader = new FileDownloader(repository, files)) downloader.Start(); using (var installer = new Installer(repository)) installer.Start(); CurrentSession.Delete(); Program.Log("Download Complete !!", ConsoleColor.Green); }
public List <FileObject> GenerateFileList() { Repository repository = RepositoriesManager.GetRepositoryByMfil(MFILDownloader.CurrentSession.Mfil); BaseUrl = repository.BaseUrl; var fileObjects = new List <FileObject>(); for (int i = 0; i < Lines.Count; i++) { if (IsLineARepositorFile(Lines[i])) { string path = GetToken(i, "path="); string name = GetToken(i, "name="); string size = GetToken(i, "size="); if (path == null || name == null) { continue; } string fileinfo = path.Replace("locale_", ""); string filepath = GetFilePath(i); if (repository.Type == RepoType.Direct) { // direct download fileObjects.Add(new FileObject() { Info = fileinfo, Path = filepath, Url = Lines[i] }); } else { string fileurl = Path.Combine(BaseUrl, ServerPaths[path], name); // each MPQ has upto 30 parts of varying size for (int j = 0; j < 30; j++) { fileObjects.Add(new FileObject() { Info = fileinfo, Path = filepath + "." + j, Url = fileurl + "." + j, }); } } } } // Add the manifest itself fileObjects.Add(new FileObject() { Path = repository.Type == RepoType.Direct ? ".mfil." : repository.MfilName, Url = BaseUrl + repository.MfilName, }); // remove invalid objects fileObjects.RemoveAll(x => !IsAcceptedFile(repository, x)); return(fileObjects); }