/// <summary> /// This is the second endpoint required to execute an order. /// After using the Create Order endpoint, you will receive a response which needs to be signed. /// </summary> /// <param name="order"></param> /// <param name="id"></param> /// <returns></returns> public async Task <ExecuteOrderResponse> ExecuteOrder(ExecuteOrder order, string id) //todo ExecuteOrderResponse { var json = JsonConvert.SerializeObject(order); var signaturesJson = $"{{\"signatures\":{json}}}"; var httpContent = new StringContent(signaturesJson, Encoding.UTF8, "application/json"); var result = await ExecuteCall(executeOrder.Replace(":id", id), httpContent); return(ExecuteOrderResponse.FromJson(result)); }
public static async Task OrderDemo(SwitcheoRestService switcheoService, AccountSignerTransactionManager accountSigner) { var orderRequest = await switcheoService.PrepareCreateOrder("SWTH_NEO", "buy", "0.00315200", "2050000000", true, "limit"); // turn into json var signableParams = JsonConvert.SerializeObject(orderRequest); // 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 OrderResponse response = await switcheoService.CreateOrder(apiParams); // check response to make sure is what you want Debug.WriteLine(JsonConvert.SerializeObject(response)); var executeOrderDto = new ExecuteOrder(); foreach (var responseFill in response.Fills) { var tx = Transaction.FromJson(JsonConvert.SerializeObject(responseFill.Txn)); var signatureTx = accountSigner.SignTransaction(tx, false).ToHexString(); executeOrderDto.Fills.Add(responseFill.Id.ToString(), signatureTx); } foreach (var responseMakes in response.Makes) { var tx = Transaction.FromJson(JsonConvert.SerializeObject(responseMakes.Txn)); var signatureTx = accountSigner.SignTransaction(tx, false).ToHexString(); executeOrderDto.Makes.Add(responseMakes.Id.ToString(), signatureTx); } ExecuteOrderResponse execute = await switcheoService.ExecuteOrder(executeOrderDto, response.Id.ToString()); Debug.WriteLine(JsonConvert.SerializeObject(execute)); }