Can get a users modlist

This commit is contained in:
Timothy Baldridge 2021-07-19 16:36:37 -06:00
parent 81c93c6e18
commit c9b96abd8c
2 changed files with 32 additions and 0 deletions

View File

@ -7,6 +7,7 @@ using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Wabbajack.Common;
using Wabbajack.Lib.ModListRegistry;
namespace Wabbajack.Lib.AuthorApi
{
@ -76,6 +77,34 @@ namespace Wabbajack.Lib.AuthorApi
return definition;
}
public async Task UpdateModListInformation(string machineUrl, DownloadMetadata metadata)
{
await CircuitBreaker.WithAutoRetryAllAsync(async () =>
{
Utils.Log($"Updating modlist information for {machineUrl} - {metadata.Version}");
using var result = await _client.PostAsync($"{Consts.WabbajackBuildServerUri}author_controls/{machineUrl}/download_metadata",
new StringContent(metadata.ToJson()));
});
}
public async Task<IReadOnlyList<(string MachineURL, Version Version)>> GetMyModlists()
{
var myLists = await _client.GetJsonAsync<string[]>($"{Consts.WabbajackBuildServerUri}author_controls/lists");
List<(string MachineURL, Version Version)> lists = new();
var client = await GitHub.Client.Get();
foreach (var file in Enum.GetValues<GitHub.Client.List>())
{
foreach (var lst in (await client.GetData(file)).Lists)
{
if (myLists.Contains(lst.Links.MachineURL))
{
lists.Add((lst.Links.MachineURL, lst.Version ?? new Version()));
}
}
}
return lists;
}
public async Task<Uri> UploadFile(WorkQueue queue, AbsolutePath path, Action<string, Percent> progressFn)
{
var definition = await GenerateFileDefinition(queue, path, progressFn);

View File

@ -19,6 +19,9 @@ namespace Wabbajack.Lib.GitHub
}
public static async Task<Client> Get()
{
if (!Utils.HaveEncryptedJson("github-key"))
return new Client(new GitHubClient(ProductHeaderValue.Parse("wabbajack")));
var key = Encoding.UTF8.GetString(await Utils.FromEncryptedData("github-key"));
var creds = new Credentials(key);
return new Client(new GitHubClient(ProductHeaderValue.Parse("wabbajack_build_server")){Credentials = creds});