private static async Task <int> MainAsync(string[] args) { string currentVersion = "1.0.0"; string baseUrl = "https://start-menu-manager.jam-es.com/versions"; // Create instance of VersionController by passing in this version of the application, and the URL of the directory containing changelog file: VersionController versionController = new VersionController(currentVersion, baseUrl); Console.WriteLine($"This Version: {currentVersion}"); // Check this is the latest version bool isLatestVersion = await versionController.IsLatestVersion(); Console.WriteLine($"Is Latest Version: {isLatestVersion}"); // If not latest, you can check this version is still meant to function correctly bool isFunctioningVersion = await versionController.IsFunctioningVersion(); Console.WriteLine($"Is Version Functioning: {isFunctioningVersion}"); // The ChangeLog object contains a list of all versions that have been released // We can list version properties like this: ChangeLog changeLog = await versionController.GetChangeLog(); Console.WriteLine(); Console.WriteLine("All Versions:"); foreach (VersionRef versionRef in changeLog.Versions) { Version version = await versionRef.GetVersion(); Console.WriteLine($"Version Name: {version.VersionName}"); Console.WriteLine($"Version Description: {version.Description}"); Console.WriteLine($"Version Download Link: {version.DownloadLink}"); Console.WriteLine($"Version Release Date: {version.ReleaseDate}"); // You can get all changes in a version with version.Changes } // Get individual versions with: VersionRef firstAppVersionRef = await versionController.GetFirstVersionRef(); Version latestAppVersionRef = await versionController.GetLatestVersion(); VersionRef specificVersionRef = await versionController.GetVersionRef("1.0.0b4"); Console.WriteLine(); Console.WriteLine($"First Version: {firstAppVersionRef.VersionName}"); Console.WriteLine($"Latest Version: {latestAppVersionRef.VersionName}"); Console.WriteLine($"Found Version 1.0.0b4: {specificVersionRef != null}"); // Convert references to Version objects to get all the properties Version firstVersion = await firstAppVersionRef.GetVersion(); Console.WriteLine($"First Version Description: {firstVersion.Description}"); // ChangeLog, Version and Change objects can all have additional data stored within them (set in the WPF app) // You can access this data by deserializing the AdditionalData property (it is a JObject) // For example, to retrieve additional data from a version ExtraVersionData extraData = firstVersion.AdditionalData.ToObject <ExtraVersionData>(); // ^ The version files with the given URI don't actually use additional data so this is null // You could use this to order lists of versions or changes using Linq: /* * List<Task<Version>> getVersionTasks = changeLog.Versions.Select(async v => await v.GetVersion()).ToList(); * IEnumerable<Version> versions = await Task.WhenAll(getVersionTasks); * versions.OrderBy(v => v.AdditionalData.ToObject<ExtraVersionData>().Importance); * // It is gerenally a good idea to surround this in try{}catch{} in case ToObject throws an error */ Console.ReadKey(); return(0); }