a better task handling

main
Paul Schneider 9 years ago
parent 3c9c045f99
commit 3c35906dd2
1 changed files with 21 additions and 10 deletions

@ -381,22 +381,33 @@ public class YaOAuth2Authenticator : WebRedirectAuthenticator
var auth = req.GetResponseAsync().ContinueWith(task => var auth = req.GetResponseAsync().ContinueWith(task =>
{ {
var text = task.Result.GetResponseText(); if (task.IsCompleted)
req.Abort();
// Parse the response
var data = text.Contains("{") ? WebEx.JsonDecode(text) : WebEx.FormDecode(text);
if (data.ContainsKey("error"))
{ {
throw new AuthException("Error authenticating: " + data["error"]); var text = task.Result.GetResponseText();
req.Abort();
// Parse the response
var data = text.Contains("{") ? WebEx.JsonDecode(text) : WebEx.FormDecode(text);
if (data.ContainsKey("error"))
{
throw new AuthException("Error authenticating: " + data["error"]);
}
else if (data.ContainsKey("access_token"))
{
return data;
}
else
{
throw new AuthException("Expected access_token in access token response, but did not receive one.");
}
} }
else if (data.ContainsKey("access_token")) else if (task.IsFaulted)
{ {
return data; throw new AuthException("Unexpected fault");
} }
else else
{ {
throw new AuthException("Expected access_token in access token response, but did not receive one."); throw new AuthException($"Ended: {task.Status}");
} }
}); });

Loading…