void HandleIndieCoreCallback(IndieCoreResult data) { if (data.error != null) { Debug.Log("error " + data.method + ": " + data.error.message); resultsText.text = data.method + ": " + data.error.message; } else { Debug.Log(data.method + ": " + data.result); resultsText.text = data.method + ": " + data.result; if (data.qrcode != null) { Rect rec = new Rect(0, 0, data.qrcode.width, data.qrcode.height); qrCode.sprite = Sprite.Create(data.qrcode, rec, new Vector2(0.5f, 0.5f), 500); } } }
void HandlePubSubCallback(bool error, string res) { IndieCoreResult result = new IndieCoreResult(); if (error) { result.error = new IndieCoreError(res); result.method = currentMethod; result.result = null; indieCoreCallback(result); } else { linkageWallet(currentParams, currentChannel); Dictionary <string, string> newParameters = new Dictionary <string, string>(); newParameters.Add("channel", currentChannel); newParameters.Add("type", "1"); StartCoroutine(postAsync(baseurl + "/pubsub/subscribe", newParameters, HandleHttpAsyncCallback)); } }
void linkageWallet(Dictionary <string, string> parameters, string channel) { string request = parameters ["request"]; string nonce = System.Guid.NewGuid() + "";; Dictionary <string, string> newParameters = new Dictionary <string, string>(); newParameters.Add("channel", channel); newParameters.Add("nonce", nonce); newParameters.Add("x-success", urlscheme); if (request == "sign") { newParameters.Add("unsigned_hex", parameters["unsigned_hex"]); } string jsonString = JsonMapper.ToJson(newParameters); string urlParams = request + "?params=" + jsonString; if (request == "getaddress" || request == "verifyuser") { string xcallback_params = "channel=" + channel + "&nonce=" + nonce + "&x-success=" + urlscheme + "&msg=" + channel; urlParams = "x-callback-url/" + request + "?" + xcallback_params; } Debug.Log("urlparams: " + urlParams); bool fail = false; #if UNITY_IPHONE Application.OpenURL("indiewallet://" + urlParams); #elif UNITY_ANDROID AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject ca = up.GetStatic <AndroidJavaObject> ("currentActivity"); AndroidJavaObject packageManager = ca.Call <AndroidJavaObject> ("getPackageManager"); AndroidJavaObject launchIntent = null; launchIntent = packageManager.Call <AndroidJavaObject> ("getLaunchIntentForPackage", "inc.lireneosoft.counterparty"); launchIntent.Call <AndroidJavaObject> ("setClassName", "inc.lireneosoft.counterparty", "inc.lireneosoft.counterparty.IntentActivity"); try { AndroidJavaClass Uri = new AndroidJavaClass("android.net.Uri"); AndroidJavaObject uri = Uri.CallStatic <AndroidJavaObject>("parse", "indiewallet://" + urlParams); launchIntent.Call <AndroidJavaObject> ("setData", uri); //launchIntent.Call<AndroidJavaObject>("setAction", "inc.lireneosoft.counterparty.IntentActivity"); launchIntent.Call <AndroidJavaObject>("putExtra", "source", urlParams); } catch (System.Exception e) { fail = true; } if (fail) { Debug.Log("app not found"); } else { ca.Call("startActivity", launchIntent); } up.Dispose(); ca.Dispose(); packageManager.Dispose(); launchIntent.Dispose(); #else string qrurl = "indiewallet://" + urlParams; IndieCoreResult result = new IndieCoreResult(); result.error = null; result.method = currentMethod; result.result = qrurl; result.qrcode = generateQR(qrurl); indieCoreCallback(result); #endif }
void HandleHttpAsyncCallback(bool error, string res) { IndieCoreResult result = new IndieCoreResult(); if (error) { result.error = new IndieCoreError(res); result.method = currentMethod; result.result = null; indieCoreCallback(result); return; } if (currentMethod == "getAddress") { JsonData data = JsonMapper.ToObject(res); JsonData data1 = data ["data"]; string address = data1 ["address"].ToString(); string signature = data1 ["signature"].ToString(); if (verifySignature(address, currentChannel, signature)) { result.error = null; result.method = currentMethod; result.result = address; indieCoreCallback(result); } else { result.error = new IndieCoreError("address not verified"); result.method = currentMethod; result.result = null; indieCoreCallback(result); } } else if (currentMethod == "signTransaction") { JsonData data = JsonMapper.ToObject(res); JsonData data1 = data ["data"]; string signedTx = data1 ["signed_tx"].ToString(); result.error = null; result.method = currentMethod; result.result = signedTx; indieCoreCallback(result); } else if (currentMethod == "getTokenDescriptionPart1") { JsonData data = JsonMapper.ToObject(res); string description = data["description"].ToString(); System.Uri uriResult; bool isURL = System.Uri.TryCreate(description, System.UriKind.Absolute, out uriResult) && (uriResult.Scheme == System.Uri.UriSchemeHttp || uriResult.Scheme == System.Uri.UriSchemeHttps); if (isURL) { currentMethod = "getTokenDescriptionPart2"; StartCoroutine(getAsync(description, HandleHttpAsyncCallback)); } else { result.error = null; result.method = currentMethod; result.result = description; indieCoreCallback(result); } } else if (currentMethod == "getTokenDescriptionPart2") { result.error = null; result.method = currentMethod; result.result = res; indieCoreCallback(result); } else { result.error = null; result.method = currentMethod; result.result = res; indieCoreCallback(result); } }