feat: add download counts to PluginRepository, PluginInstallerWindow

This commit is contained in:
goat 2020-08-24 21:03:14 +02:00
parent 93352b9883
commit 61662b536c
3 changed files with 18 additions and 5 deletions

View file

@ -57,5 +57,10 @@ namespace Dalamud.Plugin
/// The API level of this plugin. For the current API level, please see <see cref="PluginManager.DALAMUD_API_LEVEL"/> for the currently used API level.
/// </summary>
public int DalamudApiLevel { get; set; }
/// <summary>
/// The number of downloads this plugin has.
/// </summary>
public long DownloadCount { get; set; }
}
}

View file

@ -120,7 +120,7 @@ namespace Dalamud.Plugin
ImGui.Text(pluginDefinition.Name);
ImGui.SameLine();
ImGui.TextColored(new Vector4(0.5f, 0.5f, 0.5f, 1.0f), $" by {pluginDefinition.Author}");
ImGui.TextColored(new Vector4(0.5f, 0.5f, 0.5f, 1.0f), $" by {pluginDefinition.Author}, {pluginDefinition.DownloadCount} downloads");
ImGui.Text(pluginDefinition.Description);

View file

@ -14,7 +14,10 @@ namespace Dalamud.Plugin
{
internal class PluginRepository
{
private string PluginRepoBaseUrl => "https://raw.githubusercontent.com/goatcorp/DalamudPlugins/" + (this.dalamud.Configuration.DoPluginTest ? "testing/" : "master/");
private string PluginRepoBaseUrl => "https://raw.githubusercontent.com/goatcorp/DalamudPlugins/testing/plugins/{0}/latest.zip";
private string PluginFunctionBaseUrl => "https://us-central1-xl-functions.cloudfunctions.net/download-plugin/?plugin={0}";
private string PluginMasterUrl => "https://raw.githubusercontent.com/goatcorp/DalamudPlugins/" + (this.dalamud.Configuration.DoPluginTest ? "testing/" : "master/") + "pluginmaster.json";
private readonly Dalamud dalamud;
private string pluginDirectory;
@ -46,7 +49,7 @@ namespace Dalamud.Plugin
{
using var client = new WebClient();
var data = client.DownloadString(PluginRepoBaseUrl + "pluginmaster.json");
var data = client.DownloadString(PluginMasterUrl);
this.PluginMaster = JsonConvert.DeserializeObject<ReadOnlyCollection<PluginDefinition>>(data);
@ -92,9 +95,14 @@ namespace Dalamud.Plugin
}
var path = Path.GetTempFileName();
Log.Information("Downloading plugin to {0}", path);
using var client = new WebClient();
client.DownloadFile(PluginRepoBaseUrl + $"/plugins/{definition.InternalName}/latest.zip", path);
var url = this.dalamud.Configuration.DoPluginTest ? PluginRepoBaseUrl : PluginFunctionBaseUrl;
url = string.Format(url, definition.InternalName);
Log.Information("Downloading plugin to {0} from {1}", path, url);
client.DownloadFile(url, path);
Log.Information("Extracting to {0}", outputDir);