first commit

This commit is contained in:
Kirill Chikalin
2024-11-16 13:20:07 +03:00
commit a3072a3693
538 changed files with 108153 additions and 0 deletions

View File

@@ -0,0 +1,93 @@
using System;
using System.Net;
using System.Net.Http;
namespace AssetStoreTools.Utility
{
/// <summary>
/// A structure for retrieving and converting errors from Asset Store Tools class methods
/// </summary>
internal class ASError
{
public string Message { get; private set; }
public Exception Exception { get; private set; }
public ASError() { }
public static ASError GetGenericError(Exception ex)
{
ASError error = new ASError()
{
Message = ex.Message,
Exception = ex
};
return error;
}
public static ASError GetLoginError(HttpResponseMessage response) => GetLoginError(response, null);
public static ASError GetLoginError(HttpResponseMessage response, HttpRequestException ex)
{
ASError error = new ASError() { Exception = ex };
switch (response.StatusCode)
{
// Add common error codes here
case HttpStatusCode.Unauthorized:
error.Message = "Incorrect email and/or password. Please try again.";
break;
case HttpStatusCode.InternalServerError:
error.Message = "Authentication request failed\nIf you were logging in with your Unity Cloud account, please make sure you are still logged in.\n" +
"This might also be caused by too many invalid login attempts - if that is the case, please try again later.";
break;
default:
ParseHtmlMessage(response, out string message);
error.Message = message;
break;
}
return error;
}
public static ASError GetPublisherNullError(string publisherName)
{
ASError error = new ASError
{
Message = $"Your Unity ID {publisherName} is not currently connected to a publisher account. " +
$"Please create a publisher profile."
};
return error;
}
private static bool ParseHtmlMessage(HttpResponseMessage response, out string message)
{
message = "An undefined error has been encountered";
string html = response.Content.ReadAsStringAsync().Result;
if (!html.Contains("<!DOCTYPE HTML"))
return false;
message += " with the following message:\n\n";
var startIndex = html.IndexOf("<p>", StringComparison.Ordinal) + "<p>".Length;
var endIndex = html.IndexOf("</p>", StringComparison.Ordinal);
if (startIndex == -1 || endIndex == -1)
return false;
string htmlBodyMessage = html.Substring(startIndex, (endIndex - startIndex));
htmlBodyMessage = htmlBodyMessage.Replace("\n", " ");
message += htmlBodyMessage;
message += "\n\nIf this error message is not very informative, please report this to Unity";
return true;
}
public override string ToString()
{
return Message;
}
}
}