Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
 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);
     }
 }