public void ImportMcModInfo() { string json = "[{\"modid\":\"" + IntegratedUnitTests.TestModModid + "\",\"name\":\"" + IntegratedUnitTests.TestModName + "\",\"description\":\"Some description\",\"version\":\"1.0\",\"mcversion\":\"12.2\",\"url\":\"some url\",\"updateUrl\":\"some updateurl\",\"credits\":\"me\",\"logoFile\":\"some/logofile\",\"authorList\":[\"I'm Author\"],\"screenshots\":[\"some/screenshot\"],\"dependencies\":[\"OtherMod\"]}]"; McModInfo modInfo = JsonConvert.DeserializeObject <McModInfo>(json, new McModInfoJsonConverter()); Assert.AreEqual(IntegratedUnitTests.TestModName, modInfo.Name); Assert.AreEqual(IntegratedUnitTests.TestModModid, modInfo.Modid); Assert.AreEqual("Some description", modInfo.Description); Assert.AreEqual("1.0", modInfo.Version); Assert.AreEqual("12.2", modInfo.McVersion); Assert.AreEqual("some url", modInfo.Url); Assert.AreEqual("some updateurl", modInfo.UpdateUrl); Assert.AreEqual("me", modInfo.Credits); Assert.AreEqual("some/logofile", modInfo.LogoFile); Assert.IsNotNull(modInfo.AuthorList); Assert.IsNotNull(modInfo.Screenshots); Assert.IsNotNull(modInfo.Dependencies); Assert.AreEqual(1, modInfo.AuthorList.Count); Assert.AreEqual(1, modInfo.Screenshots.Count); Assert.AreEqual(1, modInfo.Dependencies.Count); Assert.AreEqual("I'm Author", modInfo.AuthorList[0]); Assert.AreEqual("some/screenshot", modInfo.Screenshots[0]); Assert.AreEqual("OtherMod", modInfo.Dependencies[0]); modInfo = JsonConvert.DeserializeObject <McModInfo>("{}", new McModInfoJsonConverter()); Assert.IsNull(modInfo); }
public override Mod ReadJson(JsonReader reader, Type objectType, Mod existingValue, bool hasExistingValue, JsonSerializer serializer) { JObject item = JObject.Load(reader); if (!item.HasValues) { return(null); } string organization = item.GetValue(nameof(Mod.Organization), StringComparison.OrdinalIgnoreCase).ToObject <string>(); McModInfo modInfo = item.GetValue(nameof(Mod.ModInfo), StringComparison.OrdinalIgnoreCase).ToObject <McModInfo>(serializer); ForgeVersion forgeVersion = item.GetValue(nameof(Mod.ForgeVersion), StringComparison.OrdinalIgnoreCase).ToObject <ForgeVersion>(serializer); ModSide side = ModSide.ClientServer; if (item.TryGetValue(nameof(Mod.Side), StringComparison.OrdinalIgnoreCase, out JToken sideValue)) { side = sideValue.ToObject <ModSide>(); } LaunchSetup launchSetup = null; if (item.TryGetValue(nameof(Mod.LaunchSetup), StringComparison.OrdinalIgnoreCase, out JToken launchValue)) { launchSetup = launchValue.ToObject <LaunchSetup>(); } WorkspaceSetup workspaceSetup = null; if (item.TryGetValue(nameof(Mod.WorkspaceSetup), StringComparison.OrdinalIgnoreCase, out JToken workspaceValue)) { workspaceSetup = workspaceValue.ToObject <WorkspaceSetup>(serializer); } return(new Mod(modInfo, organization, forgeVersion, side, launchSetup, workspaceSetup)); }
public static void ExportMcInfo(McModInfo modInfo) { string modInfoPath = ModPaths.McModInfoFile(modInfo.Name); string serializedModInfo = JsonConvert.SerializeObject(modInfo, Formatting.Indented, new McModInfoJsonConverter()); using (StreamWriter writer = new StreamWriter(modInfoPath)) { writer.Write(serializedModInfo); } }
public void ExportMcModInfo() { McModInfo modInfo = new McModInfo() { Name = IntegratedUnitTests.TestModName, Modid = IntegratedUnitTests.TestModModid, Description = "Some description", Version = "1.0", McVersion = "12.2", Url = "smth", UpdateUrl = "smth", Credits = "me", LogoFile = "there", AuthorList = new ObservableCollection <string>() { "I'm Author" }, Screenshots = new ObservableCollection <string>() { "Some/screenshot" }, Dependencies = new ObservableCollection <string>() { "OtherMod" }, }; string json = JsonConvert.SerializeObject(modInfo, Formatting.Indented, new McModInfoJsonConverter()); Assert.IsTrue(json.Contains("[\n"), json); Assert.IsTrue(json.Contains("\n]"), json); Assert.IsTrue(json.Contains($"\"modid\": \"{IntegratedUnitTests.TestModModid}\""), json); Assert.IsTrue(json.Contains($"\"name\": \"{IntegratedUnitTests.TestModName}\""), json); Assert.IsTrue(json.Contains("\"description\": \"Some description\""), json); Assert.IsTrue(json.Contains("\"version\": \"1.0\""), json); Assert.IsTrue(json.Contains("\"mcVersion\": \"12.2\""), json); Assert.IsTrue(json.Contains("\"url\": \"smth\""), json); Assert.IsTrue(json.Contains("\"updateUrl\": \"smth\""), json); Assert.IsTrue(json.Contains("\"credits\": \"me\""), json); Assert.IsTrue(json.Contains("\"logoFile\": \"there\""), json); Assert.IsTrue(json.Contains("\"authorList\":"), json); Assert.IsTrue(json.Contains("\"I'm Author\""), json); Assert.IsTrue(json.Contains("\"screenshots\":"), json); Assert.IsTrue(json.Contains("\"Some/screenshot\""), json); Assert.IsTrue(json.Contains("\"dependencies\":"), json); Assert.IsTrue(json.Contains("\"OtherMod\""), json); modInfo.AuthorList = null; modInfo.Screenshots = null; modInfo.Dependencies = null; json = JsonConvert.SerializeObject(modInfo, Formatting.Indented, new McModInfoJsonConverter()); Assert.IsTrue(json.Contains("\"authorList\": []"), json); Assert.IsTrue(json.Contains("\"screenshots\": []"), json); Assert.IsTrue(json.Contains("\"dependencies\": []"), json); }
public override McMod ReadJson(JsonReader reader, Type objectType, McMod existingValue, bool hasExistingValue, JsonSerializer serializer) { JObject item = JObject.Load(reader); if (!item.HasValues) { return(null); } string organization = item.GetValue(nameof(McMod.Organization), StringComparison.OrdinalIgnoreCase).ToObject <string>(); string modname = item.GetValue(nameof(McMod.Name), StringComparison.OrdinalIgnoreCase).ToObject <string>(); string modInfoPath = ModPaths.McModInfoFile(modname); string modInfoContent = File.ReadAllText(modInfoPath); McModInfo modInfo = JsonConvert.DeserializeObject <McModInfo>(modInfoContent, new JsonSerializerSettings { Converters = serializer.Converters }); ForgeVersion forgeVersion = item.GetValue(nameof(McMod.ForgeVersion), StringComparison.OrdinalIgnoreCase).ToObject <ForgeVersion>(serializer); ModSide side = ModSide.ClientServer; if (item.TryGetValue(nameof(McMod.Side), StringComparison.OrdinalIgnoreCase, out JToken sideValue)) { side = sideValue.ToObject <ModSide>(); } LaunchSetup launchSetup = LaunchSetup.Client; if (item.TryGetValue(nameof(McMod.LaunchSetup), StringComparison.OrdinalIgnoreCase, out JToken launchValue)) { launchSetup = launchValue.ToObject <LaunchSetup>(); } WorkspaceSetup workspaceSetup = null; if (item.TryGetValue(nameof(McMod.WorkspaceSetup), StringComparison.OrdinalIgnoreCase, out JToken workspaceValue)) { workspaceSetup = workspaceValue.ToObject <WorkspaceSetup>(serializer); } return(new McMod(modInfo, organization, forgeVersion, side, launchSetup, workspaceSetup)); }
public static void ExportMcInfo(ISerializer <McModInfo> serializer, McModInfo modInfo) => File.WriteAllText(ModPaths.McModInfoFile(modInfo.Name), serializer.Serialize(modInfo));