97 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections;
 | |
| using System.Collections.Generic;
 | |
| using System.IO;
 | |
| using System.Net;
 | |
| using System.Net.Cache;
 | |
| using System.Text;
 | |
| using SRDebugger.Internal;
 | |
| using SRF;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace SRDebugger.Editor
 | |
| {
 | |
|     public static class ApiSignup
 | |
|     {
 | |
|         public delegate void ApiSignupResultCallback(bool success, string apiKey, string email, string error);
 | |
| 
 | |
|         public static void SignUp(string email, string invoiceNo, ApiSignupResultCallback resultCallback)
 | |
|         {
 | |
|             var requestData = new Hashtable();
 | |
|             requestData["emailAddress"] = email;
 | |
|             requestData["transactionNumber"] = invoiceNo;
 | |
| 
 | |
|             try
 | |
|             {
 | |
|                 var request = SendRequest(SRDebugApi.EndPoint + "/user/create", requestData, WebRequestMethods.Http.Post);
 | |
| 
 | |
|                 string result;
 | |
| 
 | |
|                 var didSucceed = SRDebugApiUtil.ReadResponse(request, out result);
 | |
| 
 | |
|                 if (didSucceed)
 | |
|                 {
 | |
|                     var jsonTable = (Dictionary<string, object>) Json.Deserialize(result);
 | |
| 
 | |
|                     resultCallback(true, (string) jsonTable["apiKey"], (string) jsonTable["emailAddress"], null);
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     resultCallback(false, null, null, SRDebugApiUtil.ParseErrorResponse(result));
 | |
|                 }
 | |
|             }
 | |
|             catch (Exception e)
 | |
|             {
 | |
|                 Debug.LogException(e);
 | |
|                 resultCallback(false, null, null, "Internal Error (" + e.Message + ")");
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public static string Verify(string apiKey)
 | |
|         {
 | |
|             var request = SendRequest(SRDebugApi.EndPoint + "/user/test", null, apiKey: apiKey);
 | |
| 
 | |
|             string result;
 | |
| 
 | |
|             SRDebugApiUtil.ReadResponse(request, out result);
 | |
| 
 | |
|             return result;
 | |
|         }
 | |
| 
 | |
|         private static HttpWebRequest SendRequest(string endpoint, Hashtable data,
 | |
|             string method = WebRequestMethods.Http.Get, string apiKey = null)
 | |
|         {
 | |
|             var request = (HttpWebRequest) WebRequest.Create(endpoint);
 | |
|             request.Timeout = 15000;
 | |
|             request.Method = method;
 | |
| 
 | |
|             request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.BypassCache);
 | |
| 
 | |
|             request.ContentType = "application/json";
 | |
|             request.Accept = "application/json";
 | |
| 
 | |
|             if (!string.IsNullOrEmpty(apiKey))
 | |
|             {
 | |
|                 request.Headers.Add("X-ApiKey", apiKey);
 | |
|             }
 | |
| 
 | |
|             request.KeepAlive = false;
 | |
| 
 | |
|             if (data != null)
 | |
|             {
 | |
|                 var requestJson = Json.Serialize(data);
 | |
| 
 | |
|                 using (var requestStream = request.GetRequestStream())
 | |
|                 {
 | |
|                     using (var writer = new StreamWriter(requestStream, Encoding.UTF8))
 | |
|                     {
 | |
|                         writer.Write(requestJson);
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             return request;
 | |
|         }
 | |
|     }
 | |
| }
 |