|
| 1 | +using System.Text; |
1 | 2 | using System.Text.RegularExpressions; |
2 | 3 | using System.Web; |
| 4 | +using UniGetUI.Core.Classes; |
3 | 5 | using UniGetUI.Core.Data; |
4 | 6 | using UniGetUI.Core.Tools; |
| 7 | +using UniGetUI.PackageEngine.Enums; |
5 | 8 | using UniGetUI.PackageEngine.Interfaces; |
6 | 9 | using UniGetUI.PackageEngine.ManagerClasses.Classes; |
7 | 10 | using UniGetUI.PackageEngine.ManagerClasses.Manager; |
@@ -104,6 +107,36 @@ protected sealed override IReadOnlyList<Package> FindPackages_UnSafe(string quer |
104 | 107 | return Packages; |
105 | 108 | } |
106 | 109 |
|
| 110 | + protected sealed override IReadOnlyList<Package> GetAvailableUpdates_UnSafe() |
| 111 | + { |
| 112 | + var logger = TaskLogger.CreateNew(LoggableTaskType.ListUpdates); |
| 113 | + |
| 114 | + var installedPackages = TaskRecycler<IReadOnlyList<IPackage>>.RunOrAttach(GetInstalledPackages); |
| 115 | + |
| 116 | + var packageIds = new StringBuilder(); |
| 117 | + var packageVers = new StringBuilder(); |
| 118 | + foreach(var package in installedPackages) |
| 119 | + { |
| 120 | + packageIds.Append(package.Id + "|"); |
| 121 | + packageVers.Append(package.VersionString + "|"); |
| 122 | + } |
| 123 | + |
| 124 | + var SearchUrl = $"https://www.powershellgallery.com/api/v2/GetUpdates()?" + |
| 125 | + $"?packageIds='{HttpUtility.UrlEncode(packageIds.ToString())}'" + |
| 126 | + $"&versions='{HttpUtility.UrlEncode(packageVers.ToString())}'" + |
| 127 | + $"&includePrerelease=0&includeAllVersions=0"; |
| 128 | + |
| 129 | + using HttpClient client = new(CoreData.GenericHttpClientParameters); |
| 130 | + client.DefaultRequestHeaders.UserAgent.ParseAdd(CoreData.UserAgentString); |
| 131 | + HttpResponseMessage response = client.GetAsync(SearchUrl).GetAwaiter().GetResult(); |
| 132 | + |
| 133 | + if (!response.IsSuccessStatusCode) |
| 134 | + { |
| 135 | + logger.Error($"Failed to fetch api at Url={SearchUrl} with status code {response.StatusCode}"); |
| 136 | + } |
| 137 | + |
| 138 | + return installedPackages; |
| 139 | + } |
107 | 140 | } |
108 | 141 |
|
109 | 142 | } |
0 commit comments