public async Task <BitmexApiResult <TResult> > Execute <TParams, TResult>(ApiActionAttributes <TParams, TResult> apiAction, TParams @params) { switch (apiAction.Method) { case HttpMethods.POST: { var postQueryParams = @params as IJsonQueryParams; dynamic data = JsonConvert.DeserializeObject(postQueryParams.ToJson()); string DummyId = DateTime.Now.ToLongDateString(); var serializedResult = new BitmexApiResult <string>($"{{\"orderID\":\"{DummyId}\",\"clOrdID\":\"{data.clOrdID}\",\"account\":{Account},\"symbol\":\"{data.symbol}\",\"side\":\"{data.side}\",\"orderQty\":{data.orderQty},\"price\":{data.price},\"stopPx\":null,\"ordType\":\"{data.ordType}\",\"timeInForce\":\"GoodTillCancel\",\"execInst\":\"ParticipateDoNotInitiate\",\"ordStatus\":\"New\",\"triggered\":\"\",\"workingIndicator\":true,\"transactTime\":\"{string.Format("{0:s}", DateTime.Now)}.000Z\",\"timestamp\":\"{string.Format("{0:s}", DateTime.Now)}.000Z\"}}", 60, 59, DateTime.Now); var deserializedResult = JsonConvert.DeserializeObject <TResult>(serializedResult.Result); return(serializedResult.ToResultType <TResult>(deserializedResult)); } case HttpMethods.DELETE: { var deleteQueryParams = (@params as IQueryStringParams).ToQueryString(); var clOrdId = deleteQueryParams.Substring(deleteQueryParams.IndexOf(@"&") + 9, deleteQueryParams.LastIndexOf(@"&") - (deleteQueryParams.IndexOf(@"&") + 9)); string DummyId = DateTime.Now.ToLongDateString(); var serializedResult = new BitmexApiResult <string>($"[{{\"orderID\":\"{DummyId}\",\"clOrdID\":\"{clOrdId}\",\"account\":{Account},\"symbol\":\"XBTUSD\",\"side\":\"Sell\",\"orderQty\":1,\"price\":1,\"stopPx\":null,\"ordType\":\"Limit\",\"timeInForce\":\"GoodTillCancel\",\"execInst\":\"ParticipateDoNotInitiate\",\"ordStatus\":\"Canceled\",\"triggered\":\"\",\"workingIndicator\":true,\"transactTime\":\"{string.Format("{0:s}", DateTime.Now)}.000Z\",\"timestamp\":\"{string.Format("{0:s}", DateTime.Now)}.000Z\"}}]", 60, 59, DateTime.Now); var deserializedResult = JsonConvert.DeserializeObject <TResult>(serializedResult.Result); return(serializedResult.ToResultType <TResult>(deserializedResult)); } default: throw new ArgumentOutOfRangeException(); } }
public async Task <BitmexApiResult <TResult> > Execute <TParams, TResult>(ApiActionAttributes <TParams, TResult> apiAction, TParams @params) { switch (apiAction.Method) { case HttpMethods.GET: { var getQueryParams = @params as IQueryStringParams; //Log.Debug(getQueryParams.ToQueryString()); var serializedResult = await _bitmexApiProxy.Get(apiAction.Action, getQueryParams); //Log.Debug(serializedResult.Result); var deserializedResult = JsonConvert.DeserializeObject <TResult>(serializedResult.Result); return(serializedResult.ToResultType <TResult>(deserializedResult)); } case HttpMethods.POST: { var postQueryParams = @params as IJsonQueryParams; //Log.Debug("1." + postQueryParams.ToJson()); var serializedResult = await _bitmexApiProxy.Post(apiAction.Action, postQueryParams); //Log.Debug("2." + serializedResult.Result); var deserializedResult = JsonConvert.DeserializeObject <TResult>(serializedResult.Result); return(serializedResult.ToResultType <TResult>(deserializedResult)); } case HttpMethods.PUT: { var putQueryParams = @params as IJsonQueryParams; //Log.Debug(putQueryParams.ToJson()); var serializedResult = await _bitmexApiProxy.Put(apiAction.Action, putQueryParams); //Log.Debug(serializedResult.Result); var deserializedResult = JsonConvert.DeserializeObject <TResult>(serializedResult.Result); return(serializedResult.ToResultType <TResult>(deserializedResult)); } case HttpMethods.DELETE: { var deleteQueryParams = @params as IQueryStringParams; //Log.Debug(deleteQueryParams.ToQueryString()); var serializedResult = await _bitmexApiProxy.Delete(apiAction.Action, deleteQueryParams); //Log.Debug(serializedResult.Result); var deserializedResult = JsonConvert.DeserializeObject <TResult>(serializedResult.Result); return(serializedResult.ToResultType <TResult>(deserializedResult)); } default: throw new ArgumentOutOfRangeException(); } }