Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
            }
        }