public ICollection <IPackage> GetList() { packages.Clear(); var result = new List <IPackage>(); var response = Utils.GET($"{serverURL}pkg/list"); var jArray = JArray.Parse(Utils.GetResponseBody(response)); foreach (JObject jo in jArray) { Utils.SafeWrap(() => { var pack = new DataModel.Default.Package() { Name = jo["name"].ToObject <string>(), Author = jo["author"].ToObject <string>(), Version = jo["version"].ToObject <Version>(), ModName = jo["mod"].ToObject <string>(), Language = jo["language"].ToObject <CultureInfo>(), Description = jo["description"].ToObject <string>(), }; packages.Add(pack, jo["id"].Value <int>()); result.Add(pack); }); } return(result); }
private static DataModel.Default.Package Merge(IPackageGroup group, IEnumerable <IFileImportService> services) { var result = new DataModel.Default.Package { Mod = group.Mod, ModName = group.Mod.Name, Files = new List <IFile>(), FileList = new List <string>() }; foreach (var package in group.Packages) { foreach (var file in package.Files) { if (result.Files.All(f => f.GetType() != file.GetType())) { result.Files.Add(file); } else { var main = package.Files.FirstOrDefault(f => f.GetType() == file.GetType()); foreach (var service in services) { var merged = service.Merge(main, file); result.Files.Remove(main); result.Files.Add(merged); } } } } return(result); }
internal static DataModel.Default.Package Merge(IPackageGroup group) { var result = new DataModel.Default.Package { Mod = group.Mod, ModName = group.Mod.Name, Files = new List <IFile>(), FileList = new List <string>() }; foreach (var package in group.Packages) { foreach (dynamic file in package.Files) { if (result.Files.All(f => f.GetType() != file.GetType())) { result.Files.Add(file); } else { var main = package.Files.FirstOrDefault(f => f.GetType() == file.GetType()); var s = GetImportService(file); var merged = s.Merge(main, file); result.Files.Remove(main); result.Files.Add(merged); } } } return(result); }
public ICollection <IPackage> GetList() { packages.Clear(); var result = new List <IPackage>(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"{serverURL}pkg/list"); request.Method = "GET"; request.ContentType = "application/json;charset=UTF-8"; request.UserAgent = null; request.Timeout = 9000; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (Stream myResponseStream = response.GetResponseStream()) { using (StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"))) { string retString = myStreamReader.ReadToEnd(); var jArray = JArray.Parse(retString); foreach (JObject jo in jArray) { try { var pack = new DataModel.Default.Package() { Name = jo["name"].ToObject <string>(), Author = jo["author"].ToObject <string>(), Version = jo["version"].ToObject <Version>(), ModName = jo["mod"].ToObject <string>(), Language = jo["language"].ToObject <CultureInfo>(), Description = jo["description"].ToObject <string>(), }; packages.Add(pack, jo["id"].Value <int>()); result.Add(pack); } catch (Exception e) { Utils.LogError(e); } } } } return(result); }
internal DataModel.Default.Package Merge(IPackageGroup group) { var result = new DataModel.Default.Package { Mod = group.Mod, ModName = group.Mod.Name, Files = new List <IFile>(), FileList = new List <string>() }; foreach (var package in group.Packages) { Utils.SafeWrap(() => { foreach (var file in package.Files) { if (result.Files.All(f => f.GetType() != file.GetType())) { result.Files.Add(file); } else { var main = package.Files.FirstOrDefault(f => f.GetType() == file.GetType()); var importer = GetImporter(file); if (importer is null) { continue; } var merged = importer.Merge(main, file); result.Files.Remove(main); result.Files.Add(merged); } } }); } return(result); }
private void Export(bool withTranslation) { try { if (string.IsNullOrWhiteSpace(_modList.SelectedItem?.Text ?? "")) { return; } var name = _modList.SelectedItem.Text; var mod = Localizer.GetWrappedMod(name); var enabledPackages = pkgManager.PackageGroups .FirstOrDefault(g => g.Mod.Name == name)?.Packages .Where(p => p.Enabled) .OrderBy(p => p.ModVersion ?? new Version(0, 0, 0, 0)) .ToList(); var oldPack = enabledPackages?.FirstOrDefault(); var package = new DataModel.Default.Package { Name = oldPack?.Name ?? name, LocalizedModName = oldPack?.LocalizedModName ?? name, Language = CultureInfo.GetCultureInfo(Language.ActiveCulture.Name), ModName = name, Files = new ObservableCollection <IFile>(), Version = oldPack?.Version ?? new Version("1.0.0.0"), Author = oldPack?.Author ?? "", Description = oldPack?.Description ?? "", Mod = mod, ModVersion = Version.Parse($"{Math.Max(mod.Version.Major, 0)}.{Math.Max(mod.Version.Minor, 0)}.{Math.Max(mod.Version.Build, 0)}.{Math.Max(mod.Version.Revision, 0)}") }; var dirPath = Utils.EscapePath(Path.Combine(Localizer.SourcePackageDirPath, name)); packageExportService.Export(package, new DataModel.Default.ExportConfig { WithTranslation = withTranslation }); if (!Directory.Exists(dirPath)) { Directory.CreateDirectory(dirPath); } if (enabledPackages != null && enabledPackages.Count > 0) { oldPack.ModVersion = package.ModVersion; var updateLogger = Localizer.Kernel.Get <IUpdateLogger>(); updateLogger.Init($"{package.Name}-{Utils.DateTimeToFileName(DateTime.Now)}"); foreach (var item in enabledPackages.Skip(1)) { packageUpdateService.Update(oldPack, item, updateLogger); } packageUpdateService.Update(oldPack, package, updateLogger); packageSaveService.Save(oldPack, dirPath, fileSaveService); } else { packageSaveService.Save(package, dirPath, fileSaveService); } } catch (Exception e) { Localizer.Log.Error(e); } }