private static Error[] ParseErrors(string json)
{
try
{
var obj = JObject.Parse(json);
var errors = obj["errors"] ?? obj["error"];
if(errors != null)
{
switch(errors.Type)
{
case JTokenType.Array:
return errors.Select(x => x.ToObject<Error>()).ToArray();
case JTokenType.String:
return errors.ToString().Replace("\\n", "\n").Split('\n').Select(x => new Error { Message = x }).ToArray();
}
}
}
catch(JsonException) { }
var match = Regex.Match(json, @"(Reason:\n<pre>\s+?(?<reason>[^<]+)<\/pre>|<h1>(?<reason>[^<]+)<\/h1>|<error>(?<reason>[^<]+)<\/error>)");
if(match.Success)
return new[] { new Error { Message = match.Groups["reason"].Value } };
return new[] { new Error { Message = json } };
}