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;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |