ApiSignup.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #if !DISABLE_SRDEBUGGER
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Net;
  7. using System.Net.Cache;
  8. using System.Text;
  9. using SRF;
  10. using UnityEngine;
  11. using SRDebugger.Internal;
  12. namespace SRDebugger.Editor
  13. {
  14. static class ApiSignup
  15. {
  16. public delegate void ApiSignupResultCallback(bool success, string apiKey, string email, string error);
  17. public static void SignUp(string email, string invoiceNo, ApiSignupResultCallback resultCallback)
  18. {
  19. var requestData = new Hashtable();
  20. requestData["emailAddress"] = email;
  21. requestData["transactionNumber"] = invoiceNo;
  22. try
  23. {
  24. var request = SendRequest(SRDebugApi.EndPoint + "/user/create", requestData, WebRequestMethods.Http.Post);
  25. string result;
  26. var didSucceed = SRDebugApiUtil.ReadResponse(request, out result);
  27. if (didSucceed)
  28. {
  29. var jsonTable = (Dictionary<string, object>) Json.Deserialize(result);
  30. resultCallback(true, (string) jsonTable["apiKey"], (string) jsonTable["emailAddress"], null);
  31. }
  32. else
  33. {
  34. resultCallback(false, null, null, SRDebugApiUtil.ParseErrorResponse(result));
  35. }
  36. }
  37. catch (Exception e)
  38. {
  39. Debug.LogException(e);
  40. resultCallback(false, null, null, "Internal Error (" + e.Message + ")");
  41. }
  42. }
  43. public static string Verify(string apiKey)
  44. {
  45. var request = SendRequest(SRDebugApi.EndPoint + "/user/test", null, apiKey: apiKey);
  46. string result;
  47. SRDebugApiUtil.ReadResponse(request, out result);
  48. return result;
  49. }
  50. private static HttpWebRequest SendRequest(string endpoint, Hashtable data,
  51. string method = WebRequestMethods.Http.Get, string apiKey = null)
  52. {
  53. var request = (HttpWebRequest) WebRequest.Create(endpoint);
  54. request.Timeout = 15000;
  55. request.Method = method;
  56. request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.BypassCache);
  57. request.ContentType = "application/json";
  58. request.Accept = "application/json";
  59. if (!string.IsNullOrEmpty(apiKey))
  60. {
  61. request.Headers.Add("X-ApiKey", apiKey);
  62. }
  63. request.KeepAlive = false;
  64. if (data != null)
  65. {
  66. var requestJson = Json.Serialize(data);
  67. using (var requestStream = request.GetRequestStream())
  68. {
  69. using (var writer = new StreamWriter(requestStream, Encoding.UTF8))
  70. {
  71. writer.Write(requestJson);
  72. }
  73. }
  74. }
  75. return request;
  76. }
  77. }
  78. }
  79. #endif