From 9072af9792a0133e72cdd2272cd2c92aefb91599 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Dec 2018 15:48:34 +0900 Subject: [PATCH] Move bulk of method into separate private method with minor clean-ups --- osu.Game/Online/API/APIAccess.cs | 78 +++++++++++++++----------------- 1 file changed, 37 insertions(+), 41 deletions(-) diff --git a/osu.Game/Online/API/APIAccess.cs b/osu.Game/Online/API/APIAccess.cs index cf709e2162..a1376b8b94 100644 --- a/osu.Game/Online/API/APIAccess.cs +++ b/osu.Game/Online/API/APIAccess.cs @@ -196,52 +196,13 @@ namespace osu.Game.Online.API /// true if we should remove this request from the queue. private bool handleRequest(APIRequest req) { - bool handleWebException(WebException we) - { - HttpStatusCode statusCode = (we.Response as HttpWebResponse)?.StatusCode - ?? (we.Status == WebExceptionStatus.UnknownError ? HttpStatusCode.NotAcceptable : HttpStatusCode.RequestTimeout); - - // special cases for un-typed but useful message responses. - switch (we.Message) - { - case "Unauthorized": - case "Forbidden": - statusCode = HttpStatusCode.Unauthorized; - break; - } - - switch (statusCode) - { - case HttpStatusCode.Unauthorized: - Logout(false); - return true; - case HttpStatusCode.RequestTimeout: - failureCount++; - log.Add($@"API failure count is now {failureCount}"); - - if (failureCount < 3) - //we might try again at an api level. - return false; - - State = APIState.Failing; - flushQueue(); - return true; - } - - return true; - } - try { Logger.Log($@"Performing request {req}", LoggingTarget.Network); req.Failure += ex => { - switch (ex) - { - case WebException we: - handleWebException(we); - break; - } + if (ex is WebException we) + handleWebException(we); }; req.Perform(this); @@ -296,6 +257,41 @@ namespace osu.Game.Online.API } } + private bool handleWebException(WebException we) + { + HttpStatusCode statusCode = (we.Response as HttpWebResponse)?.StatusCode + ?? (we.Status == WebExceptionStatus.UnknownError ? HttpStatusCode.NotAcceptable : HttpStatusCode.RequestTimeout); + + // special cases for un-typed but useful message responses. + switch (we.Message) + { + case "Unauthorized": + case "Forbidden": + statusCode = HttpStatusCode.Unauthorized; + break; + } + + switch (statusCode) + { + case HttpStatusCode.Unauthorized: + Logout(false); + return true; + case HttpStatusCode.RequestTimeout: + failureCount++; + log.Add($@"API failure count is now {failureCount}"); + + if (failureCount < 3) + //we might try again at an api level. + return false; + + State = APIState.Failing; + flushQueue(); + return true; + } + + return true; + } + public bool IsLoggedIn => LocalUser.Value.Id > 1; public void Queue(APIRequest request)