84 lines
2.5 KiB
C#
84 lines
2.5 KiB
C#
|
using IO.Swagger.Model;
|
||
|
using System;
|
||
|
using System.Linq;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace Edgegap
|
||
|
{
|
||
|
public enum ServerStatus
|
||
|
{
|
||
|
NA, // Not an actual Edgegap server status. Indicates that there are no active server.
|
||
|
Initializing,
|
||
|
Seeking,
|
||
|
Deploying,
|
||
|
Ready,
|
||
|
Seeked,
|
||
|
Terminated,
|
||
|
Scanning,
|
||
|
Terminating,
|
||
|
Error,
|
||
|
}
|
||
|
|
||
|
public static class ServerStatusExtensions
|
||
|
{
|
||
|
private static string GetServerStatusLabel(this Status serverStatusResponse) => char.ToUpper(serverStatusResponse.CurrentStatus[7]) + serverStatusResponse.CurrentStatus.Substring(8).ToLower();
|
||
|
|
||
|
public static ServerStatus GetServerStatus(this Status serverStatusResponse)
|
||
|
{
|
||
|
ServerStatus serverStatus;
|
||
|
|
||
|
try
|
||
|
{
|
||
|
serverStatus = (ServerStatus)Enum.Parse(typeof(ServerStatus), serverStatusResponse.GetServerStatusLabel());
|
||
|
}
|
||
|
catch (Exception)
|
||
|
{
|
||
|
Debug.LogError($"Got unexpected server status: {serverStatusResponse.CurrentStatus}. Considering the deployment to be terminated.");
|
||
|
serverStatus = ServerStatus.Terminated;
|
||
|
}
|
||
|
|
||
|
return serverStatus;
|
||
|
}
|
||
|
|
||
|
public static string GetStatusBgClass(this ServerStatus serverStatus)
|
||
|
{
|
||
|
string statusBgClass;
|
||
|
|
||
|
switch (serverStatus)
|
||
|
{
|
||
|
case ServerStatus.NA:
|
||
|
case ServerStatus.Terminated:
|
||
|
statusBgClass = "bg--secondary"; break;
|
||
|
case ServerStatus.Ready:
|
||
|
statusBgClass = "bg--success"; break;
|
||
|
case ServerStatus.Error:
|
||
|
statusBgClass = "bg--danger"; break;
|
||
|
default:
|
||
|
statusBgClass = "bg--warning"; break;
|
||
|
}
|
||
|
|
||
|
return statusBgClass;
|
||
|
}
|
||
|
|
||
|
public static string GetLabelText(this ServerStatus serverStatus)
|
||
|
{
|
||
|
string statusLabel;
|
||
|
|
||
|
if (serverStatus == ServerStatus.NA)
|
||
|
{
|
||
|
statusLabel = "N/A";
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
statusLabel = Enum.GetName(typeof(ServerStatus), serverStatus);
|
||
|
}
|
||
|
|
||
|
return statusLabel;
|
||
|
}
|
||
|
|
||
|
public static bool IsOneOf(this ServerStatus serverStatus, params ServerStatus[] serverStatusOptions)
|
||
|
{
|
||
|
return serverStatusOptions.Contains(serverStatus);
|
||
|
}
|
||
|
}
|
||
|
}
|