Esempio n. 1
0
        /// <summary>
        /// This is the second endpoint required to execute a withdrawal.
        /// After using the Create Withdrawal endpoint, you will receive a response which requires additional signing.
        /// </summary>
        /// <param name="withdrawal"></param>
        /// <param name="signature"></param>
        /// <returns></returns>
        public async Task <WithdrawlResponse> ExecuteWithdraw(ExecuteWithdrawl withdrawal, string signature)
        {
            var apiParams = new JObject
            {
                ["id"]        = withdrawal.Id,
                ["timestamp"] = withdrawal.Timestamp,
                ["signature"] = signature
            };

            var httpContent = new StringContent(apiParams.ToString(), Encoding.UTF8, "application/json");
            var result      = await ExecuteCall(executeWithdrawl.Replace(":id", withdrawal.Id.ToString()), httpContent);

            return(WithdrawlResponse.FromJson(result));
        }
Esempio n. 2
0
        public static async Task WithdrawalDemo(SwitcheoRestService switcheoService, AccountSignerTransactionManager accountSigner)
        {
            // create withdrawal DTO
            var transactObject = await switcheoService.PrepareCreateWithdrawal("neo", "SWTH", "3");

            // turn into json
            var signableParams = JsonConvert.SerializeObject(transactObject);
            // serialize request params
            var serializedParams = SwitcheoHelper.PrepareParametersRequest(signableParams);
            // signs the serialized params
            var signature = accountSigner.SignMessage(serializedParams);

            // adds the 'address' and 'signature' fields to the json
            var apiParams = SwitcheoHelper.AddTransactFields(signableParams, signature,
                                                             accountSigner.AddressScriptHash.ToString().Remove(0, 2));

            // sends the 'create withdrawal' request
            var response = await switcheoService.CreateWithdrawl(apiParams);

            Debug.WriteLine(JsonConvert.SerializeObject(response));

            // execute withdrawal
            JObject createWithdrawalResponse = JObject.Parse(response);

            createWithdrawalResponse.Remove("transaction"); // not in docs

            var executeWithdrawalDto = new ExecuteWithdrawl
            {
                Id        = new Guid(createWithdrawalResponse["id"].ToString()),
                Timestamp = await switcheoService.GetTimeStampAsync()
            };

            // serialize request params
            var serializedResponseParams = SwitcheoHelper.PrepareParametersRequest(JsonConvert.SerializeObject(executeWithdrawalDto));
            var responseSignature        = accountSigner.SignMessage(serializedResponseParams);

            WithdrawlResponse withdrawlResponse = await switcheoService.ExecuteWithdraw(executeWithdrawalDto, responseSignature);

            Debug.WriteLine(JsonConvert.SerializeObject(withdrawlResponse));
        }