選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

142 行
5.7 KiB

  1. using System;
  2. using Example.ViewModels;
  3. using Example.Models;
  4. using Newtonsoft.Json;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Net.Http;
  10. using System.Diagnostics;
  11. namespace Example.Connectors
  12. {
  13. public static class GetLogedInServer
  14. {
  15. public static CurrentServerLoggedOn _currentServerLoggedOn = new CurrentServerLoggedOn();
  16. public static async Task<CurrentServerLoggedOn> LoadServerData(string playerSteamid)
  17. {
  18. try
  19. {
  20. string url = $"https://api.whalleybot.com/v2/GetCurrentServer/{playerSteamid}";
  21. var handler = new HttpClientHandler()
  22. {
  23. ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
  24. };
  25. using (var client = new HttpClient(handler))
  26. {
  27. client.DefaultRequestHeaders.Add("Authorization", "ptlc_zMHm25ZD6AftYkhQJySteBYBxeXyT35V2SAUfDPgHBK");
  28. client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
  29. var apicall = await client.GetAsync(url)
  30. .ConfigureAwait(false);
  31. if (apicall.IsSuccessStatusCode)
  32. {
  33. var json = apicall.Content.ReadAsStringAsync().Result;
  34. var readjson = new CurrentServerLoggedOn();
  35. readjson = JsonConvert.DeserializeObject<CurrentServerLoggedOn>(json);
  36. if (_currentServerLoggedOn != null)
  37. {
  38. if (readjson.status == true)
  39. {
  40. _currentServerLoggedOn = readjson;
  41. return _currentServerLoggedOn;
  42. }
  43. else if (readjson.status == true && readjson.serverID != _currentServerLoggedOn.serverID)
  44. {
  45. _currentServerLoggedOn = readjson;
  46. return _currentServerLoggedOn;
  47. }
  48. else if (_currentServerLoggedOn.status == true && readjson.status == false)
  49. {
  50. return _currentServerLoggedOn;
  51. }
  52. else
  53. {
  54. _currentServerLoggedOn = readjson;
  55. _currentServerLoggedOn.serverID = "";
  56. return _currentServerLoggedOn;
  57. }
  58. }
  59. _currentServerLoggedOn = readjson;
  60. return _currentServerLoggedOn;
  61. }
  62. else if (apicall.StatusCode == System.Net.HttpStatusCode.BadRequest && _currentServerLoggedOn != null)
  63. {
  64. //_currentServerLoggedOn.status = true;
  65. return _currentServerLoggedOn;
  66. }
  67. else if (apicall.StatusCode == System.Net.HttpStatusCode.BadRequest)
  68. {
  69. var json = apicall.Content.ReadAsStringAsync().Result;
  70. _currentServerLoggedOn = JsonConvert.DeserializeObject<CurrentServerLoggedOn>(json);
  71. return _currentServerLoggedOn;
  72. }
  73. else
  74. {
  75. //DialogResult msgBox_GameClose = MessageBox.Show("Sorry! We have a problem finding your player information.\n\n Please try again or restart your app!", "Connection Fail!", MessageBoxButtons.AbortRetryIgnore);
  76. //if (msgBox_GameClose == DialogResult.Retry)
  77. //{
  78. // await LoadServerData(playerSteamid);
  79. //}
  80. //else
  81. //{
  82. // return null;
  83. //}
  84. ////throw new Exception(apicall.ReasonPhrase);
  85. return null;
  86. }
  87. }
  88. }
  89. catch (Exception ex)
  90. {
  91. Debug.WriteLine(ex.Source + ex.Message + ex.Data + ex.StackTrace);
  92. return null;
  93. }
  94. }
  95. public static async Task<BattlemetricServerModule> SearchServer(string serverIP_port)
  96. {
  97. try
  98. {
  99. string apiUrl = "https://api.battlemetrics.com/servers?filter[game]=scum&filter[search]=";
  100. using (var battlemetric = new HttpClient())
  101. {
  102. var battleResponse = await battlemetric.GetAsync(apiUrl + serverIP_port)
  103. .ConfigureAwait(false);
  104. if (battleResponse.IsSuccessStatusCode)
  105. {
  106. var battleJson = battleResponse.Content.ReadAsStringAsync().Result;
  107. BattlemetricServerModule Infoserver = JsonConvert.DeserializeObject<BattlemetricServerModule>(battleJson);
  108. return Infoserver;
  109. }
  110. else
  111. {
  112. throw new Exception(battleResponse.ReasonPhrase + battleResponse.StatusCode);
  113. }
  114. }
  115. }
  116. catch (Exception ex)
  117. {
  118. Debug.WriteLine(ex.Source + ex.Message + ex.Data + ex.StackTrace);
  119. return null;
  120. }
  121. }
  122. }
  123. }