public async Task <OcoOrderResponse> NewOcoOrderAsync(OcoOrder order) { String uri = "api/v3/order/oco"; if (order.Timestamp == null) { order.Timestamp = DateNowUnix(); } if (order.RecvWindow == null) { order.RecvWindow = 60000; } Dictionary <String, String> headers = new Dictionary <string, string>(); headers.Add("X-MBX-APIKEY", ApiKey); String postData = FormDataSerializer.Serialize(order); String signature = Sign(postData); postData += $"&signature={signature}"; using (var response = await PostAsync(uri, postData, headers)) { int statusCode = (int)response.StatusCode; String body = await response.Content.ReadAsStringAsync(); CheckForBinanceException(statusCode, body); var orderResponse = JsonHelper.ParseFromJson <OcoOrderResponse>(body); return(orderResponse); } }
private HttpRequestMessage GenerateHttpRequest <TBody>(HttpMethod method, string url, TBody body) where TBody : class { HttpContent messageContent = null; var requestUrl = url; if (body != null) { messageContent = FormDataSerializer.Serialize(body, options => { options.DefaultNameResolver = new PascalToSnakeResolver(); options.EnumNameResolver = new PascalToSnakeResolver(); options.DefaultDateFormat = "yyyy-MM-dd HH:mm:sszzz"; }); if (method == HttpMethod.Get && messageContent is MultipartFormDataContent multipartFormDataContent) { foreach (var content in multipartFormDataContent) { var dataTask = content.ReadAsStringAsync(); dataTask.Wait(); if (!string.IsNullOrWhiteSpace(dataTask.Result)) { var paramName = content.Headers.ContentDisposition.Name.Trim('"'); requestUrl += $"{(requestUrl.Contains('?') ? '&' : '?')}{paramName}={HttpUtility.UrlEncode(dataTask.Result)}"; } } } } var httpMessage = new HttpRequestMessage(method, requestUrl); httpMessage.Content = messageContent; return(httpMessage); }
public override string ToString() { return(FormDataSerializer.Serialize(this)); }