ServerInfo.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. using MediaBrowser.Model.Connect;
  2. using MediaBrowser.Model.Extensions;
  3. using MediaBrowser.Model.System;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. namespace MediaBrowser.Model.ApiClient
  8. {
  9. public class ServerInfo
  10. {
  11. public List<ServerUserInfo> Users { get; set; }
  12. public String Name { get; set; }
  13. public String Id { get; set; }
  14. public String LocalAddress { get; set; }
  15. public String RemoteAddress { get; set; }
  16. public String ManualAddress { get; set; }
  17. public String UserId { get; set; }
  18. public String AccessToken { get; set; }
  19. public List<WakeOnLanInfo> WakeOnLanInfos { get; set; }
  20. public DateTime DateLastAccessed { get; set; }
  21. public String ExchangeToken { get; set; }
  22. public UserLinkType? UserLinkType { get; set; }
  23. public ConnectionMode? LastConnectionMode { get; set; }
  24. public ServerInfo()
  25. {
  26. WakeOnLanInfos = new List<WakeOnLanInfo>();
  27. Users = new List<ServerUserInfo>();
  28. }
  29. public void ImportInfo(PublicSystemInfo systemInfo)
  30. {
  31. Name = systemInfo.ServerName;
  32. Id = systemInfo.Id;
  33. if (!string.IsNullOrEmpty(systemInfo.LocalAddress))
  34. {
  35. LocalAddress = systemInfo.LocalAddress;
  36. }
  37. if (!string.IsNullOrEmpty(systemInfo.WanAddress))
  38. {
  39. RemoteAddress = systemInfo.WanAddress;
  40. }
  41. var fullSystemInfo = systemInfo as SystemInfo;
  42. if (fullSystemInfo != null)
  43. {
  44. WakeOnLanInfos = new List<WakeOnLanInfo>();
  45. if (!string.IsNullOrEmpty(fullSystemInfo.MacAddress))
  46. {
  47. WakeOnLanInfos.Add(new WakeOnLanInfo
  48. {
  49. MacAddress = fullSystemInfo.MacAddress
  50. });
  51. }
  52. }
  53. }
  54. public string GetAddress(ConnectionMode mode)
  55. {
  56. switch (mode)
  57. {
  58. case ConnectionMode.Local:
  59. return LocalAddress;
  60. case ConnectionMode.Manual:
  61. return ManualAddress;
  62. case ConnectionMode.Remote:
  63. return RemoteAddress;
  64. default:
  65. throw new ArgumentException("Unexpected ConnectionMode");
  66. }
  67. }
  68. public void AddOrUpdate(ServerUserInfo user)
  69. {
  70. if (user == null)
  71. {
  72. throw new ArgumentNullException("user");
  73. }
  74. var list = Users.ToList();
  75. var index = FindIndex(list, user.Id);
  76. if (index != -1)
  77. {
  78. var existing = list[index];
  79. // Merge the data
  80. existing.IsSignedInOffline = user.IsSignedInOffline;
  81. }
  82. else
  83. {
  84. list.Add(user);
  85. }
  86. Users = list;
  87. }
  88. private int FindIndex(List<ServerUserInfo> users, string id)
  89. {
  90. var index = 0;
  91. foreach (var user in users)
  92. {
  93. if (StringHelper.EqualsIgnoreCase(id, user.Id))
  94. {
  95. return index;
  96. }
  97. index++;
  98. }
  99. return -1;
  100. }
  101. }
  102. }