// TODO: Not tested. public static ArchivedOrdersResults GetArchivedOrders( CexIoApiInfo credential, string curr1, string curr2, string limit, string dateTo, string dateFrom, string lastTxDateTo, string lastTxDateFrom, string status) { var endpointBase = "https://cex.io/api/archived_orders/"; var endpoint = endpointBase + curr1 + "/" + curr2; var formParameters = new Dictionary <string, string>() { { "limit", limit }, { "dateTo", dateTo }, { "dateFrom", dateFrom }, { "lastTxDateTo", lastTxDateTo }, { "lastTxDateFrom", lastTxDateFrom }, { "status", status } }; var jsonResponse = ExecutePostRequest(credential, endpoint, formParameters); var archivedOrders = JsonConvert.DeserializeObject <ArchivedOrdersResults>(jsonResponse); return(archivedOrders); }
// TODO: Not tested yet. public static ActiveOrderStatusResult GetActiveOrderStatus(CexIoApiInfo credential) { var endpoint = "https://cex.io/api/active_orders_status"; var jsonResponse = ExecutePostRequest(credential, endpoint); var activeOrderStatus = JsonConvert.DeserializeObject <ActiveOrderStatusResult>(jsonResponse); return(activeOrderStatus); }
// TODO: Not tested yet. public static List <OrdersResult> GetOpenOrders(CexIoApiInfo credential) { //target to hit var endpoint = " https://cex.io/api/open_orders/"; var jsonResponse = ExecutePostRequest(credential, endpoint); var orders = JsonConvert.DeserializeObject <List <OrdersResult> >(jsonResponse); return(orders); }
// TODO: Not Tested public static CancelAllOrdersForGivenPairResult CancelAllOrdersForGivenPair(CexIoApiInfo credential, string curr1, string curr2) { var endpointBase = "https://cex.io/api/cancel_orders/BTC/USD"; var endpoint = endpointBase + curr1 + "/" + curr2; var response = ExecutePostRequest(credential, endpoint); var result = JsonConvert.DeserializeObject <CancelAllOrdersForGivenPairResult>(response); return(result); }
// returns the account balance public static BalanceResult GetAccountBalance(CexIoApiInfo credential) { //target to hit var endpoint = "https://cex.io/api/balance/"; var jsonResponse = ExecutePostRequest(credential, endpoint); // Json convert var balance = JsonConvert.DeserializeObject <BalanceResult>(jsonResponse); return(balance); }
public static OrderDetailsResult GetOrderDetails(CexIoApiInfo credential, int order_id) { var endpoint = "https://cex.io/api/get_order/"; var formParameters = new Dictionary <string, string>() { { "id", order_id.ToString() } }; var jsonResponse = ExecutePostRequest(credential, endpoint, formParameters); var orderDetailsResult = JsonConvert.DeserializeObject <OrderDetailsResult>(jsonResponse); return(orderDetailsResult); }
// TODO: Not Tested public static bool CancelOrder(CexIoApiInfo credential, string orderId) { var endpoint = "https://cex.io/api/cancel_order/"; var formParameters = new Dictionary <string, string>() { { "orderId", orderId } }; var jsonResponse = ExecutePostRequest(credential, endpoint, formParameters); var cancelled = Convert.ToBoolean(jsonResponse); return(cancelled); }
// TODO: not tested /// <summary> /// /// </summary> /// <param name="curr1">The currency we want to buy.</param> /// <param name="curr2">The currency we're buying with.</param> /// <param name="type">Buy or sell.</param> /// <param name="amount"></param> /// <returns></returns> public static PlaceInstantOrderResult PlaceInstantOrder(CexIoApiInfo credential, string curr1, string curr2, string type, string amount) { var endpointBase = "https://cex.io/api/place_order/"; var endpoint = endpointBase + curr1 + "/" + curr2; var formParameters = new Dictionary <string, string>() { { "type", type }, { "amount", amount }, { "order_type", "market" } }; var jsonResponse = ExecutePostRequest(credential, endpoint, formParameters); var placeInstantOrderResult = JsonConvert.DeserializeObject <PlaceInstantOrderResult>(jsonResponse); return(placeInstantOrderResult); }
//Send the request private static string ExecutePostRequest(CexIoApiInfo credential, string endpoint, Dictionary <string, string> parameters = null) { var request = WebRequest.Create(endpoint); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; var nonce = GetNextNonce(); var userId = credential.UserId; var key = credential.Key; var secret = credential.Secret; //users signature var signature = GenerateSignature(nonce, userId, key, secret); var formParameters = new Dictionary <string, string>() { { "key", key }, { "signature", signature }, { "nonce", nonce.ToString() } }; if (parameters != null) { foreach (var param in parameters) { formParameters.Add(param.Key, param.Value); } } var postData = ""; foreach (var param in formParameters) { var parameterLine = param.Key + "=" + param.Value + "&"; postData += parameterLine; } postData = postData.Substring(0, postData.Length - 1); var byteArray = Encoding.ASCII.GetBytes(postData); request.ContentLength = byteArray.Length; using (var requestStream = request.GetRequestStream()) { requestStream.Write(byteArray, 0, byteArray.Length); } var response = request.GetResponse(); var statusCode = ((HttpWebResponse)response).StatusCode; if (statusCode != HttpStatusCode.OK) { var errorResponseStream = response.GetResponseStream(); var errorResult = ""; using (var reader = new StreamReader(errorResponseStream)) { errorResult = reader.ReadToEnd(); } throw new Exception("POST request failed. " + errorResult); } var responseStream = response.GetResponseStream(); var result = ""; using (var reader = new StreamReader(responseStream)) { result = reader.ReadToEnd(); } return(result); }