public static void Exec() { // get properties from file getProperties(); HttpWebRequest httpWebRequest; JavaScriptSerializer serializer; HttpWebResponse httpResponse; X509Certificate certificate1 = null; if (ssl) { using (WebClient client = new WebClient()) { client.DownloadFile(ssl_cert, "ssl.cert"); } certificate1 = new X509Certificate("ssl.cert"); } // get challenge httpWebRequest = (HttpWebRequest)WebRequest.Create(domain + ":" + authentication_port + url_challenge); serializer = new JavaScriptSerializer(); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; if (ssl) { httpWebRequest.ClientCertificates.Add(certificate1); } using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { hftRequest request = new hftRequest(); request.getAuthorizationChallenge = new getAuthorizationChallengeRequest(user); streamWriter.WriteLine(serializer.Serialize(request)); } httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream())) { hftResponse response; try { response = serializer.Deserialize<hftResponse>(streamReader.ReadLine()); challenge = response.getAuthorizationChallengeResponse.challenge; } catch (SocketException ex) { Console.WriteLine(ex.Message); } catch (IOException ioex) { Console.WriteLine(ioex.Message); } } // create challenge response String res = challenge; char[] passwordArray = password.ToCharArray(); foreach (byte passwordLetter in passwordArray) { int value = Convert.ToInt32(passwordLetter); string hexOutput = String.Format("{0:X}", value); res = res + hexOutput; } int NumberChars = res.Length; byte[] bytes = new byte[NumberChars / 2]; for (int i = 0; i < NumberChars; i += 2) { bytes[i / 2] = Convert.ToByte(res.Substring(i, 2), 16); } SHA1 sha = new SHA1CryptoServiceProvider(); byte[] tokenArray = sha.ComputeHash(bytes); string challengeresp = BitConverter.ToString(tokenArray); challengeresp = challengeresp.Replace("-", ""); // get token with challenge response httpWebRequest = (HttpWebRequest)WebRequest.Create(domain + ":" + authentication_port + url_token); serializer = new JavaScriptSerializer(); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; if (ssl) { httpWebRequest.ClientCertificates.Add(certificate1); } using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { hftRequest request = new hftRequest(); request.getAuthorizationToken = new getAuthorizationTokenRequest(user, challengeresp); streamWriter.WriteLine(serializer.Serialize(request)); } httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream())) { hftResponse response; try { response = serializer.Deserialize<hftResponse>(streamReader.ReadLine()); token = response.getAuthorizationTokenResponse.token; } catch (SocketException ex) { Console.WriteLine(ex.Message); } catch (IOException ioex) { Console.WriteLine(ioex.Message); } } // ----------------------------------------- // Prepare and send a order request // ----------------------------------------- httpWebRequest = (HttpWebRequest)WebRequest.Create(domain + ":" + request_port + url_stream + URL); serializer = new JavaScriptSerializer(); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; if (ssl) { httpWebRequest.ClientCertificates.Add(certificate1); } using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { hftRequest request = new hftRequest(); request.getOrder = new getOrderRequest(user, token, new List<string> { "EUR/USD", "GBP/JPY", "GBP/USD" }, null, null, interval); streamWriter.WriteLine(serializer.Serialize(request)); } // -------------------------------------------------------------- // Wait for continuous responses from server (streaming) // -------------------------------------------------------------- httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream())) { hftResponse response; String line; try { while ((line = streamReader.ReadLine()) != null) { response = serializer.Deserialize<hftResponse>(line); if (response.getOrderResponse != null) { if (response.getOrderResponse.timestamp != null) { Console.WriteLine("Response timestamp: " + response.getOrderResponse.timestamp + " Contents:"); } if (response.getOrderResponse.order != null) { foreach (orderTick tick in response.getOrderResponse.order) { Console.WriteLine("TempId: " + tick.tempid + " OrderId: " + tick.orderid + " Security: " + tick.security + " Account: " + tick.account + " Quantity: " + tick.quantity + " Type: " + tick.type + " Side: " + tick.side + " Status: " + tick.status); } } if (response.getOrderResponse.heartbeat != null) { Console.WriteLine("Heartbeat!"); } if (response.getOrderResponse.message != null) { Console.WriteLine("Message from server: " + response.getOrderResponse.message); } } } } catch (SocketException ex) { Console.WriteLine(ex.Message); } catch (IOException ioex) { Console.WriteLine(ioex.Message); } } }
public static void Exec() { // get properties from file getProperties(); HttpWebRequest httpWebRequest; JavaScriptSerializer serializer; HttpWebResponse httpResponse; X509Certificate certificate1 = null; if (ssl) { using (WebClient client = new WebClient()) { client.DownloadFile(ssl_cert, "ssl.cert"); } certificate1 = new X509Certificate("ssl.cert"); } // get challenge httpWebRequest = (HttpWebRequest)WebRequest.Create(domain + ":" + authentication_port + url_challenge); serializer = new JavaScriptSerializer(); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; if (ssl) { httpWebRequest.ClientCertificates.Add(certificate1); } using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { hftRequest request = new hftRequest(); request.getAuthorizationChallenge = new getAuthorizationChallengeRequest(user); streamWriter.WriteLine(serializer.Serialize(request)); } httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream())) { hftResponse response; try { response = serializer.Deserialize <hftResponse>(streamReader.ReadLine()); challenge = response.getAuthorizationChallengeResponse.challenge; } catch (SocketException ex) { Console.WriteLine(ex.Message); } catch (IOException ioex) { Console.WriteLine(ioex.Message); } } // create challenge response String res = challenge; char[] passwordArray = password.ToCharArray(); foreach (byte passwordLetter in passwordArray) { int value = Convert.ToInt32(passwordLetter); string hexOutput = String.Format("{0:X}", value); res = res + hexOutput; } int NumberChars = res.Length; byte[] bytes = new byte[NumberChars / 2]; for (int i = 0; i < NumberChars; i += 2) { bytes[i / 2] = Convert.ToByte(res.Substring(i, 2), 16); } SHA1 sha = new SHA1CryptoServiceProvider(); byte[] tokenArray = sha.ComputeHash(bytes); string challengeresp = BitConverter.ToString(tokenArray); challengeresp = challengeresp.Replace("-", ""); // get token with challenge response httpWebRequest = (HttpWebRequest)WebRequest.Create(domain + ":" + authentication_port + url_token); serializer = new JavaScriptSerializer(); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; if (ssl) { httpWebRequest.ClientCertificates.Add(certificate1); } using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { hftRequest request = new hftRequest(); request.getAuthorizationToken = new getAuthorizationTokenRequest(user, challengeresp); streamWriter.WriteLine(serializer.Serialize(request)); } httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream())) { hftResponse response; try { response = serializer.Deserialize <hftResponse>(streamReader.ReadLine()); token = response.getAuthorizationTokenResponse.token; } catch (SocketException ex) { Console.WriteLine(ex.Message); } catch (IOException ioex) { Console.WriteLine(ioex.Message); } } // ----------------------------------------- // Prepare and send a order request // ----------------------------------------- httpWebRequest = (HttpWebRequest)WebRequest.Create(domain + ":" + request_port + url_stream + URL); serializer = new JavaScriptSerializer(); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; if (ssl) { httpWebRequest.ClientCertificates.Add(certificate1); } using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { hftRequest request = new hftRequest(); request.getOrder = new getOrderRequest(user, token, new List <string> { "EUR/USD", "GBP/JPY", "GBP/USD" }, null, null, interval); streamWriter.WriteLine(serializer.Serialize(request)); } // -------------------------------------------------------------- // Wait for continuous responses from server (streaming) // -------------------------------------------------------------- httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream())) { hftResponse response; String line; try { while ((line = streamReader.ReadLine()) != null) { response = serializer.Deserialize <hftResponse>(line); if (response.getOrderResponse != null) { if (response.getOrderResponse.timestamp != null) { Console.WriteLine("Response timestamp: " + response.getOrderResponse.timestamp + " Contents:"); } if (response.getOrderResponse.order != null) { foreach (orderTick tick in response.getOrderResponse.order) { Console.WriteLine("TempId: " + tick.tempid + " OrderId: " + tick.orderid + " Security: " + tick.security + " Account: " + tick.account + " Quantity: " + tick.quantity + " Type: " + tick.type + " Side: " + tick.side + " Status: " + tick.status); } } if (response.getOrderResponse.heartbeat != null) { Console.WriteLine("Heartbeat!"); } if (response.getOrderResponse.message != null) { Console.WriteLine("Message from server: " + response.getOrderResponse.message); } } } } catch (SocketException ex) { Console.WriteLine(ex.Message); } catch (IOException ioex) { Console.WriteLine(ioex.Message); } } }