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 position 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.getPosition = new getPositionRequest(user, token, null, new List <string> { "EUR/USD", "GBP/USD" }, 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.getPositionResponse != null) { if (response.getPositionResponse.timestamp != null) { Console.WriteLine("Response timestamp: " + response.getPositionResponse.timestamp + " Contents:"); } if (response.getPositionResponse.accounting != null) { accountingTick tick = response.getPositionResponse.accounting; Console.WriteLine("m2mcurrency: " + tick.m2mcurrency + " StrategyPL: " + tick.strategyPL + " TotalEquity: " + tick.totalequity + " UsedMargin: " + tick.usedmargin + " FreeMargin: " + tick.freemargin); } if (response.getPositionResponse.assetposition != null) { foreach (assetPositionTick tick in response.getPositionResponse.assetposition) { Console.WriteLine("Asset: " + tick.asset + " Account: " + tick.account + " Exposure: " + tick.exposure + " PL: " + tick.pl); } } if (response.getPositionResponse.securityposition != null) { foreach (securityPositionTick tick in response.getPositionResponse.securityposition) { Console.WriteLine("Security: " + tick.security + " Account: " + tick.account + " Exposure: " + tick.exposure + " Price: " + tick.price + " Pips: " + tick.pips + " PL: " + tick.pl); } } if (response.getPositionResponse.heartbeat != null) { Console.WriteLine("Heartbeat!"); } if (response.getPositionResponse.message != null) { Console.WriteLine("Message from server: " + response.getPositionResponse.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 position 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.getPosition = new getPositionRequest(user, token, null, new List<string> { "EUR/USD", "GBP/USD" }, 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.getPositionResponse != null) { if (response.getPositionResponse.timestamp != null) { Console.WriteLine("Response timestamp: " + response.getPositionResponse.timestamp + " Contents:"); } if (response.getPositionResponse.accounting != null) { accountingTick tick = response.getPositionResponse.accounting; Console.WriteLine("m2mcurrency: " + tick.m2mcurrency + " StrategyPL: " + tick.strategyPL + " TotalEquity: " + tick.totalequity + " UsedMargin: " + tick.usedmargin + " FreeMargin: " + tick.freemargin); } if (response.getPositionResponse.assetposition != null) { foreach (assetPositionTick tick in response.getPositionResponse.assetposition) { Console.WriteLine("Asset: " + tick.asset + " Account: " + tick.account + " Exposure: " + tick.exposure + " PL: " + tick.pl); } } if (response.getPositionResponse.securityposition != null) { foreach (securityPositionTick tick in response.getPositionResponse.securityposition) { Console.WriteLine("Security: " + tick.security + " Account: " + tick.account + " Exposure: " + tick.exposure + " Price: " + tick.price + " Pips: " + tick.pips + " PL: " + tick.pl); } } if (response.getPositionResponse.heartbeat != null) { Console.WriteLine("Heartbeat!"); } if (response.getPositionResponse.message != null) { Console.WriteLine("Message from server: " + response.getPositionResponse.message); } } } } catch (SocketException ex) { Console.WriteLine(ex.Message); } catch (IOException ioex) { Console.WriteLine(ioex.Message); } } }