public bool IsBetween(string versionStr, string lowerStr, string upperStr) { // arrange ISemanticVersion lower = new SemanticVersion(lowerStr); ISemanticVersion upper = new SemanticVersion(upperStr); ISemanticVersion version = new SemanticVersion(versionStr); // assert Assert.AreEqual(version.IsBetween(lower, upper), version.IsBetween(lower.ToString(), upper.ToString()), "The two signatures returned different results."); return(version.IsBetween(lower, upper)); }
public bool IsBetween(string versionStr, string lowerStr, string upperStr) { ISemanticVersion lower = new SemanticVersion(lowerStr); ISemanticVersion upper = new SemanticVersion(upperStr); ISemanticVersion version = new SemanticVersion(versionStr); return(version.IsBetween(lower, upper)); }
public static void DoUpdateChecks() { try { string version = typeof(Game1).Assembly.GetName().Version.ToString(2); bool Connected; try { using (WebClient client = new WebClient()) using (Stream stream = client.OpenRead("http://www.google.com")) Connected = true; } catch { Connected = false; } if (Connected) { Parallel.ForEach(Map, (pair) => { try { WebClient Client = new WebClient(); Uri uri = new Uri(pair.Value); SemanticVersion modVersion = (SemanticVersion)pair.Key.Version; try { Client.DownloadStringCompleted += (sender, evt) => { try { if (evt.Error != null) { HandleError(pair.Key.Name, (WebException)evt.Error); return; } Dictionary <string, UpdateInfo> Data = JsonConvert.DeserializeObject <Dictionary <string, UpdateInfo> >(evt.Result); UpdateInfo info = null; if (Data.ContainsKey(version)) { info = Data[version]; } else if (Data.ContainsKey("Default")) { info = Data["Default"]; } else { ModEntry.Logger.ExitGameImmediately("[UpdateChecker] The `" + pair.Key.Name + "` mod does not support the current version of SDV."); } if (info != null) { SemanticVersion min = new SemanticVersion(info.Minimum); SemanticVersion rec = new SemanticVersion(info.Recommended); SemanticVersion max = new SemanticVersion(info.Latest); if (min.IsNewerThan(modVersion)) { ModEntry.Logger.ExitGameImmediately("[UpdateChecker] The `" + pair.Key.Name + "` mod is too old, a newer version is required."); } if (rec.IsNewerThan(modVersion)) { ModEntry.Logger.Log("[UpdateChecker] The `" + pair.Key.Name + "` mod has a new version available, it is recommended you update now.", LogLevel.Alert); } if (modVersion.IsBetween(rec, max)) { ModEntry.Logger.Log("[UpdateChecker] The `" + pair.Key.Name + "` mod has a new version available.", LogLevel.Info); } } } catch (WebException err) { HandleError(pair.Key.Name, err); } catch (Exception err) { ModEntry.Logger.Log("[UpdateChecker] The `" + pair.Key.Name + "` mod failed to check for updates, unexpected error occured while reading result." + Environment.NewLine + err.ToString(), LogLevel.Error); } }; Client.DownloadStringAsync(uri); } catch (WebException err) { HandleError(pair.Key.Name, err); } } catch (Exception err) { ModEntry.Logger.Log("[UpdateChecker] The `" + pair.Key.Name + "` mod failed to check for updates, unexpected error occured." + Environment.NewLine + err.ToString(), LogLevel.Error); } }); } else { ModEntry.Logger.Log("[UpdateChecker] No internet connection, skipping update checks.", LogLevel.Debug); } } catch (Exception err) { ModEntry.Logger.Log("[UpdateChecker] Unexpected failure, unexpected error occured." + Environment.NewLine + err.ToString(), LogLevel.Error); } }