ServerStatus.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using IO.Swagger.Model;
  2. using System;
  3. using System.Linq;
  4. using UnityEngine;
  5. namespace Edgegap
  6. {
  7. public enum ServerStatus
  8. {
  9. NA, // Not an actual Edgegap server status. Indicates that there are no active server.
  10. Initializing,
  11. Seeking,
  12. Deploying,
  13. Ready,
  14. Seeked,
  15. Terminated,
  16. Scanning,
  17. Terminating,
  18. Error,
  19. }
  20. public static class ServerStatusExtensions
  21. {
  22. private static string GetServerStatusLabel(this Status serverStatusResponse) => char.ToUpper(serverStatusResponse.CurrentStatus[7]) + serverStatusResponse.CurrentStatus.Substring(8).ToLower();
  23. public static ServerStatus GetServerStatus(this Status serverStatusResponse)
  24. {
  25. ServerStatus serverStatus;
  26. try
  27. {
  28. serverStatus = (ServerStatus)Enum.Parse(typeof(ServerStatus), serverStatusResponse.GetServerStatusLabel());
  29. }
  30. catch (Exception)
  31. {
  32. Debug.LogError($"Got unexpected server status: {serverStatusResponse.CurrentStatus}. Considering the deployment to be terminated.");
  33. serverStatus = ServerStatus.Terminated;
  34. }
  35. return serverStatus;
  36. }
  37. public static string GetStatusBgClass(this ServerStatus serverStatus)
  38. {
  39. string statusBgClass;
  40. switch (serverStatus)
  41. {
  42. case ServerStatus.NA:
  43. case ServerStatus.Terminated:
  44. statusBgClass = "bg--secondary"; break;
  45. case ServerStatus.Ready:
  46. statusBgClass = "bg--success"; break;
  47. case ServerStatus.Error:
  48. statusBgClass = "bg--danger"; break;
  49. default:
  50. statusBgClass = "bg--warning"; break;
  51. }
  52. return statusBgClass;
  53. }
  54. public static string GetLabelText(this ServerStatus serverStatus)
  55. {
  56. string statusLabel;
  57. if (serverStatus == ServerStatus.NA)
  58. {
  59. statusLabel = "N/A";
  60. }
  61. else
  62. {
  63. statusLabel = Enum.GetName(typeof(ServerStatus), serverStatus);
  64. }
  65. return statusLabel;
  66. }
  67. public static bool IsOneOf(this ServerStatus serverStatus, params ServerStatus[] serverStatusOptions)
  68. {
  69. return serverStatusOptions.Contains(serverStatus);
  70. }
  71. }
  72. }