Get error message from server

This commit is contained in:
Dean Herbert
2019-11-12 19:34:20 +09:00
parent f04d7f733f
commit 58df6930b2
2 changed files with 28 additions and 8 deletions

View File

@ -2,6 +2,7 @@
// See the LICENCE file in the repository root for full licence text.
using System;
using Newtonsoft.Json;
using osu.Framework.IO.Network;
using osu.Framework.Logging;
@ -112,6 +113,22 @@ namespace osu.Game.Online.API
cancelled = true;
WebRequest?.Abort();
string responseString = WebRequest?.ResponseString;
if (!string.IsNullOrEmpty(responseString))
{
try
{
// attempt to decode a displayable error string.
var error = JsonConvert.DeserializeObject<DisplayableError>(responseString);
if (error != null)
e = new Exception(error.ErrorMessage, e);
}
catch
{
}
}
Logger.Log($@"Failing request {this} ({e})", LoggingTarget.Network);
pendingFailure = () => Failure?.Invoke(e);
checkAndScheduleFailure();
@ -129,6 +146,12 @@ namespace osu.Game.Online.API
pendingFailure = null;
return true;
}
private class DisplayableError
{
[JsonProperty("error")]
public string ErrorMessage;
}
}
public delegate void APIFailureHandler(Exception e);