public static MVersion Parse(MVersionMetadata info) { if (string.IsNullOrEmpty(info.Path)) { throw new NullReferenceException("info.Path was null"); } try { if (!info.IsLocalVersion) { using (var wc = new WebClient()) { var json = wc.DownloadString(info.Path); return(ParseFromJson(json)); } } else { return(ParseFromFile(info.Path)); } } catch (MVersionParseException ex) { ex.VersionName = info.Name; throw; } }
public static MVersion ParseAndSave(MVersionMetadata info, MinecraftPath savePath) { try { string json; if (!info.IsLocalVersion) { using (var wc = new WebClient()) { json = wc.DownloadString(info.Path); var path = savePath.GetVersionJsonPath(info.Name); Directory.CreateDirectory(Path.GetDirectoryName(path)); File.WriteAllText(path, json); return(ParseFromJson(json)); } } else { return(ParseFromFile(info.Path)); } } catch (MVersionParseException ex) { ex.VersionName = info.Name; throw ex; } }
/// <summary> /// Get All MVersionInfo from mojang server /// </summary> public MVersionCollection GetVersionMetadatasFromWeb() { string latestReleaseId = null; string latestSnapshotId = null; MVersionMetadata latestRelease = null; MVersionMetadata latestSnapshot = null; JArray jarr; using (WebClient wc = new WebClient()) { var jobj = JObject.Parse(wc.DownloadString(MojangServer.Version)); jarr = JArray.Parse(jobj["versions"].ToString()); var latest = jobj["latest"]; if (latest != null) { latestReleaseId = latest["release"]?.ToString(); latestSnapshotId = latest["snapshot"]?.ToString(); } } var checkLatestRelease = !string.IsNullOrEmpty(latestReleaseId); var checkLatestSnapshot = !string.IsNullOrEmpty(latestSnapshotId); var arr = new List <MVersionMetadata>(jarr.Count); for (int i = 0; i < jarr.Count; i++) { var obj = jarr[i].ToObject <MVersionMetadata>(); obj.IsLocalVersion = false; obj.MType = MVersionTypeConverter.FromString(obj.Type); arr.Add(obj); if (checkLatestRelease && obj.Name == latestReleaseId) { latestRelease = obj; } if (checkLatestSnapshot && obj.Name == latestSnapshotId) { latestSnapshot = obj; } } return(new MVersionCollection(arr.ToArray(), null, latestRelease, latestSnapshot)); }
public static MVersion Parse(MVersionMetadata info) { string json; if (!info.IsLocalVersion) { using (var wc = new WebClient()) { json = wc.DownloadString(info.Path); return(ParseFromJson(json)); } } else { return(ParseFromFile(info.Path)); } }
public static MVersion ParseAndSave(MVersionMetadata info, MinecraftPath savePath) { if (string.IsNullOrEmpty(info.Path)) { throw new NullReferenceException("info.Path was null"); } try { if (!info.IsLocalVersion) { using (var wc = new WebClient()) { var json = wc.DownloadString(info.Path); if (!string.IsNullOrEmpty(info.Name)) { string path = savePath.GetVersionJsonPath(info.Name); var directoryName = Path.GetDirectoryName(path); if (!string.IsNullOrEmpty((directoryName))) { Directory.CreateDirectory(directoryName); } File.WriteAllText(path, json); } return(ParseFromJson(json)); } } else { return(ParseFromFile(info.Path)); } } catch (MVersionParseException ex) { ex.VersionName = info.Name; throw; } }
public static MVersion ParseAndSave(MVersionMetadata info, MinecraftPath savePath) { string json; if (!info.IsLocalVersion) { using (var wc = new WebClient()) { json = wc.DownloadString(info.Path); var jsonpath = Path.Combine(savePath.Versions, info.Name); Directory.CreateDirectory(jsonpath); File.WriteAllText(Path.Combine(jsonpath, info.Name + ".json"), json); return(ParseFromJson(json)); } } else { return(ParseFromFile(info.Path)); } }
private List <MVersionMetadata> getFromLocal(MinecraftPath path) { var dirs = new DirectoryInfo(path.Versions).GetDirectories(); var arr = new List <MVersionMetadata>(dirs.Length); for (int i = 0; i < dirs.Length; i++) { var dir = dirs[i]; var filepath = Path.Combine(dir.FullName, dir.Name + ".json"); if (File.Exists(filepath)) { var info = new MVersionMetadata(); info.IsLocalVersion = true; info.Name = dir.Name; info.Path = filepath; info.Type = "local"; info.MType = MVersionType.Custom; arr.Add(info); } } return(arr); }
public static MVersion Parse(MVersionMetadata info) { try { string json; if (!info.IsLocalVersion) { using (var wc = new WebClient()) { json = wc.DownloadString(info.Path); return(ParseFromJson(json)); } } else { return(ParseFromFile(info.Path)); } } catch (MVersionParseException ex) { ex.VersionName = info.Name; throw ex; } }