mirror of
https://github.com/ppy/osu.git
synced 2025-02-20 21:52:57 +08:00
Get error message from server
This commit is contained in:
parent
f04d7f733f
commit
58df6930b2
@ -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);
|
||||
|
@ -71,15 +71,12 @@ namespace osu.Game.Overlays.BeatmapSet.Buttons
|
||||
request.Success += () => favourited.Value = !favourited.Value;
|
||||
request.Failure += exception =>
|
||||
{
|
||||
if (exception.Message == "UnprocessableEntity")
|
||||
notifications.Post(new SimpleNotification
|
||||
{
|
||||
notifications.Post(new SimpleNotification
|
||||
{
|
||||
Text = @"You have too many favourited beatmaps! Please unfavourite some before trying again.",
|
||||
Icon = FontAwesome.Solid.Times,
|
||||
});
|
||||
loading.Hide();
|
||||
}
|
||||
Text = exception.Message,
|
||||
Icon = FontAwesome.Solid.Times,
|
||||
});
|
||||
loading.Hide();
|
||||
};
|
||||
api.Queue(request);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user