Utils async -> sync methods removed

This commit is contained in:
Justin Swanson 2019-12-05 23:59:57 -06:00
parent 43dc6953c5
commit 5bd856a7c6
12 changed files with 36 additions and 57 deletions

View File

@ -76,7 +76,7 @@ namespace Wabbajack.CacheServer
return api.GetModFiles(GameRegistry.GetByNexusName((string)arg.GameName).Game, (int)arg.ModID).ToJSON();
}
private string HandleCacheCall(dynamic arg)
private async Task<string> HandleCacheCall(dynamic arg)
{
try
{
@ -90,7 +90,7 @@ namespace Wabbajack.CacheServer
var client = new HttpClient();
var builder = new UriBuilder(url) {Host = "localhost", Port = Request.Url.Port ?? 8080, Scheme = "http"};
client.DefaultRequestHeaders.Add("apikey", Request.Headers["apikey"]);
client.GetStringSync(builder.Uri.ToString());
await client.GetStringAsync(builder.Uri.ToString());
if (!File.Exists(path))
{
Utils.Log($"Still not cached : {path}");

View File

@ -613,34 +613,10 @@ namespace Wabbajack.Common
new List<bool>().Do(_ => f());
}
public static HttpResponseMessage GetSync(this HttpClient client, string url)
public static async Task<Stream> PostStream(this HttpClient client, string url, HttpContent content)
{
var result = client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);
result.Wait();
return result.Result;
}
public static string GetStringSync(this HttpClient client, string url)
{
var result = client.GetStringAsync(url);
result.Wait();
return result.Result;
}
public static Stream GetStreamSync(this HttpClient client, string url)
{
var result = client.GetStreamAsync(url);
result.Wait();
return result.Result;
}
public static Stream PostStreamSync(this HttpClient client, string url, HttpContent content)
{
var result = client.PostAsync(url, content);
result.Wait();
var stream = result.Result.Content.ReadAsStreamAsync();
stream.Wait();
return stream.Result;
var result = await client.PostAsync(url, content);
return await result.Content.ReadAsStreamAsync();
}
public static IEnumerable<T> DistinctBy<T, V>(this IEnumerable<T> vs, Func<T, V> select)

View File

@ -43,14 +43,15 @@ namespace Wabbajack.Lib.Downloaders
public override async Task Download(Archive a, string destination)
{
await ToHttpState().Download(a, destination);
var state = await ToHttpState();
await state.Download(a, destination);
}
private HTTPDownloader.State ToHttpState()
private async Task<HTTPDownloader.State> ToHttpState()
{
var initialURL = $"https://drive.google.com/uc?id={Id}&export=download";
var client = new HttpClient();
var result = client.GetStringSync(initialURL);
var result = await client.GetStringAsync(initialURL);
var regex = new Regex("(?<=/uc\\?export=download&amp;confirm=).*(?=;id=)");
var confirm = regex.Match(result);
var url = $"https://drive.google.com/uc?export=download&confirm={confirm}&id={Id}";
@ -60,7 +61,8 @@ namespace Wabbajack.Lib.Downloaders
public override async Task<bool> Verify()
{
return await ToHttpState().Verify();
var state = await ToHttpState();
return await state.Verify();
}
public override IDownloader GetDownloader()

View File

@ -87,7 +87,7 @@ namespace Wabbajack.Lib.Downloaders
long totalRead = 0;
var bufferSize = 1024 * 32;
var response = client.GetSync(Url);
var response = await client.GetAsync(Url, HttpCompletionOption.ResponseHeadersRead);
Stream stream;
try

View File

@ -42,14 +42,14 @@ namespace Wabbajack.Lib.Downloaders
public override async Task Download(Archive a, string destination)
{
var newURL = GetDownloadUrl();
var newURL = await GetDownloadUrl();
await new HTTPDownloader.State {Url = newURL}.Download(a, destination);
}
private string GetDownloadUrl()
private async Task<string> GetDownloadUrl()
{
var client = new HttpClient();
var result = client.GetStringSync(Url);
var result = await client.GetStringAsync(Url);
var regex = new Regex("https:\\/\\/www\\.moddb\\.com\\/downloads\\/mirror\\/.*(?=\\\")");
var match = regex.Match(result);
var newURL = match.Value;
@ -58,7 +58,7 @@ namespace Wabbajack.Lib.Downloaders
public override async Task<bool> Verify()
{
var newURL = GetDownloadUrl();
var newURL = await GetDownloadUrl();
return await new HTTPDownloader.State { Url = newURL }.Verify();
}

View File

@ -194,9 +194,9 @@ namespace Wabbajack.Lib
mods[b] = tmp;
}
await mods.PMap(Queue, mod =>
await mods.PMap(Queue, async mod =>
{
var er = new NexusApiClient().EndorseMod(mod);
var er = await new NexusApiClient().EndorseMod(mod);
Utils.Log($"Endorsed {mod.GameName} - {mod.ModID} - Result: {er.message}");
});
Info("Done! You may now exit the application!");

View File

@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
using Newtonsoft.Json;
using Wabbajack.Common;
@ -55,11 +56,11 @@ namespace Wabbajack.Lib.ModListRegistry
public static List<ModlistMetadata> LoadFromGithub()
public static async Task<List<ModlistMetadata>> LoadFromGithub()
{
var client = new HttpClient();
Utils.Log("Loading ModLists from Github");
var result = client.GetStringSync(Consts.ModlistMetadataURL);
var result = await client.GetStringAsync(Consts.ModlistMetadataURL);
return result.FromJSONString<List<ModlistMetadata>>();
}

View File

@ -307,14 +307,14 @@ namespace Wabbajack.Lib.NexusApi
return GetCached<ModInfo>(url);
}
public EndorsementResponse EndorseMod(NexusDownloader.State mod)
public async Task<EndorsementResponse> EndorseMod(NexusDownloader.State mod)
{
Utils.Status($"Endorsing ${mod.GameName} - ${mod.ModID}");
var url = $"https://api.nexusmods.com/v1/games/{ConvertGameName(mod.GameName)}/mods/{mod.ModID}/endorse.json";
var content = new FormUrlEncodedContent(new Dictionary<string, string> { { "version", mod.Version } });
using (var stream = _httpClient.PostStreamSync(url, content))
using (var stream = await _httpClient.PostStream(url, content))
{
return stream.FromJSON<EndorsementResponse>();
}

View File

@ -36,18 +36,18 @@ namespace Wabbajack.Lib.Validation
ServerWhitelist = s.FromYaml<ServerWhitelist>();
}
public void LoadListsFromGithub()
public async Task LoadListsFromGithub()
{
var client = new HttpClient();
Utils.Log("Loading Nexus Mod Permissions");
using (var result = client.GetStreamSync(Consts.ModPermissionsURL))
using (var result = await client.GetStreamAsync(Consts.ModPermissionsURL))
{
AuthorPermissions = result.FromYaml<Dictionary<string, Author>>();
Utils.Log($"Loaded permissions for {AuthorPermissions.Count} authors");
}
Utils.Log("Loading Server Whitelist");
using (var result = client.GetStreamSync(Consts.ServerWhitelistURL))
using (var result = await client.GetStreamAsync(Consts.ServerWhitelistURL))
{
ServerWhitelist = result.FromYaml<ServerWhitelist>();
Utils.Log($"Loaded permissions for {ServerWhitelist.AllowedPrefixes.Count} servers and {ServerWhitelist.GoogleIDs.Count} GDrive files");
@ -59,7 +59,7 @@ namespace Wabbajack.Lib.Validation
{
var validator = new ValidateModlist(queue);
validator.LoadListsFromGithub();
await validator.LoadListsFromGithub();
Utils.Log("Running validation checks");
var errors = await validator.Validate(modlist);

View File

@ -16,11 +16,11 @@ namespace Wabbajack.Test.ListValidation
public class ListValidation
{
[ClassInitialize]
public static void SetupNexus(TestContext context)
public static async Task SetupNexus(TestContext context)
{
Utils.LogMessages.Subscribe(m => context.WriteLine(m.ToString()));
var api = new NexusApiClient();
api.ClearUpdatedModsInCache();
await api.ClearUpdatedModsInCache();
}
private WorkQueue Queue { get; set; }
@ -93,9 +93,9 @@ namespace Wabbajack.Test.ListValidation
TestContext.WriteLine(msg);
}
public static IEnumerable<object[]> GetModLists()
public static async Task<IEnumerable<object[]>> GetModLists()
{
return ModlistMetadata.LoadFromGithub().Select(l => new object[] {l.Title, l});
return (await ModlistMetadata.LoadFromGithub()).Select(l => new object[] {l.Title, l});
}
}
}

View File

@ -10,16 +10,16 @@ namespace Wabbajack.Test
public class ModlistMetadataTests
{
[TestMethod]
public void TestLoadingModlists()
public async Task TestLoadingModlists()
{
var modlists = ModlistMetadata.LoadFromGithub();
var modlists = await ModlistMetadata.LoadFromGithub();
Assert.IsTrue(modlists.Count > 0);
}
[TestMethod]
public async Task VerifyLogoURLs()
{
var modlists = ModlistMetadata.LoadFromGithub();
var modlists = await ModlistMetadata.LoadFromGithub();
foreach (var modlist in modlists.Select(m => m.Links))
{

View File

@ -36,9 +36,9 @@ namespace Wabbajack
RefreshCommand.StartingExecution()
.StartWith(Unit.Default)
.ObserveOn(RxApp.TaskpoolScheduler)
.Select(_ =>
.SelectTask(async _ =>
{
return ModlistMetadata.LoadFromGithub()
return (await ModlistMetadata.LoadFromGithub())
.AsObservableChangeSet(x => x.DownloadMetadata?.Hash ?? $"Fallback{missingHashFallbackCounter++}");
})
.Switch()