Handle exceptions thrown by HttpClient.GetAsync.

This commit is contained in:
Paul Chote
2022-04-23 11:41:25 +01:00
committed by abcdefg30
parent 6c81590b20
commit 0dbd8264b8
4 changed files with 30 additions and 24 deletions

View File

@@ -593,13 +593,14 @@ namespace OpenRA.Server
{ {
Task.Run(async () => Task.Run(async () =>
{ {
var httpClient = HttpClientFactory.Create();
var httpResponseMessage = await httpClient.GetAsync(playerDatabase.Profile + handshake.Fingerprint);
var result = await httpResponseMessage.Content.ReadAsStreamAsync();
PlayerProfile profile = null; PlayerProfile profile = null;
try try
{ {
var httpClient = HttpClientFactory.Create();
var httpResponseMessage = await httpClient.GetAsync(playerDatabase.Profile + handshake.Fingerprint);
var result = await httpResponseMessage.Content.ReadAsStreamAsync();
var yaml = MiniYaml.FromStream(result).First(); var yaml = MiniYaml.FromStream(result).First();
if (yaml.Key == "Player") if (yaml.Key == "Player")
{ {

View File

@@ -40,20 +40,24 @@ namespace OpenRA.Mods.Common
{ "version", Game.ModData.Manifest.Metadata.Version } { "version", Game.ModData.Manifest.Metadata.Version }
}.ToString(); }.ToString();
var client = HttpClientFactory.Create(); try
var httpResponseMessage = await client.GetAsync(queryURL);
var result = await httpResponseMessage.Content.ReadAsStringAsync();
var status = ModVersionStatus.Latest;
switch (result)
{ {
case "outdated": status = ModVersionStatus.Outdated; break; var client = HttpClientFactory.Create();
case "unknown": status = ModVersionStatus.Unknown; break;
case "playtest": status = ModVersionStatus.PlaytestAvailable; break;
}
Game.RunAfterTick(() => ModVersionStatus = status); var httpResponseMessage = await client.GetAsync(queryURL);
var result = await httpResponseMessage.Content.ReadAsStringAsync();
var status = ModVersionStatus.Latest;
switch (result)
{
case "outdated": status = ModVersionStatus.Outdated; break;
case "unknown": status = ModVersionStatus.Unknown; break;
case "playtest": status = ModVersionStatus.PlaytestAvailable; break;
}
Game.RunAfterTick(() => ModVersionStatus = status);
}
catch { }
}); });
} }
} }

View File

@@ -235,12 +235,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
Task.Run(async () => Task.Run(async () =>
{ {
var client = HttpClientFactory.Create();
var httpResponseMessage = await client.GetAsync(download.MirrorList);
var result = await httpResponseMessage.Content.ReadAsStringAsync();
try try
{ {
var client = HttpClientFactory.Create();
var httpResponseMessage = await client.GetAsync(download.MirrorList);
var result = await httpResponseMessage.Content.ReadAsStringAsync();
var mirrorList = result.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); var mirrorList = result.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
downloadUrl(mirrorList.Random(new MersenneTwister())); downloadUrl(mirrorList.Random(new MersenneTwister()));
} }

View File

@@ -343,16 +343,17 @@ namespace OpenRA.Mods.Common.Widgets.Logic
Task.Run(async () => Task.Run(async () =>
{ {
var games = new List<GameServer>(); List<GameServer> games = null;
var client = HttpClientFactory.Create();
var httpResponseMessage = await client.GetAsync(queryURL);
var result = await httpResponseMessage.Content.ReadAsStreamAsync();
activeQuery = true; activeQuery = true;
try try
{ {
var client = HttpClientFactory.Create();
var httpResponseMessage = await client.GetAsync(queryURL);
var result = await httpResponseMessage.Content.ReadAsStreamAsync();
var yaml = MiniYaml.FromStream(result); var yaml = MiniYaml.FromStream(result);
games = new List<GameServer>();
foreach (var node in yaml) foreach (var node in yaml)
{ {
try try