diff --git a/csharp/BlockChain.Console/App.config b/csharp/BlockChain.Console/App.config index d0feca6..089f249 100644 --- a/csharp/BlockChain.Console/App.config +++ b/csharp/BlockChain.Console/App.config @@ -3,4 +3,8 @@ + + + + diff --git a/csharp/BlockChain/BlockChain.cs b/csharp/BlockChain/BlockChain.cs index 52a8f71..250d6f8 100644 --- a/csharp/BlockChain/BlockChain.cs +++ b/csharp/BlockChain/BlockChain.cs @@ -66,18 +66,24 @@ namespace BlockChainDemo foreach (Node node in _nodes) { - var request = (HttpWebRequest)WebRequest.Create(node.Address); + var url = new Uri(node.Address, "/chain"); + var request = (HttpWebRequest)WebRequest.Create(url); var response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) { - string json = new StreamReader(response.GetResponseStream()).ReadToEnd(); - List chain = JsonConvert.DeserializeObject>(json); - - if (chain.Count > _chain.Count && IsValidChain(chain)) + var model = new { - maxLength = chain.Count; - newChain = chain; + chain = new List(), + length = 0 + }; + string json = new StreamReader(response.GetResponseStream()).ReadToEnd(); + var data = JsonConvert.DeserializeAnonymousType(json, model); + + if (data.chain.Count > _chain.Count && IsValidChain(data.chain)) + { + maxLength = data.chain.Count; + newChain = data.chain; } } } @@ -179,7 +185,7 @@ namespace BlockChainDemo var builder = new StringBuilder(); foreach (string node in nodes) { - string url = $"https://{node}"; + string url = $"http://{node}"; RegisterNode(url); builder.Append($"{url}, "); } diff --git a/csharp/BlockChain/BlockChain.csproj b/csharp/BlockChain/BlockChain.csproj index a4a176a..86681ac 100644 --- a/csharp/BlockChain/BlockChain.csproj +++ b/csharp/BlockChain/BlockChain.csproj @@ -39,6 +39,7 @@ ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + diff --git a/csharp/BlockChain/WebServer.cs b/csharp/BlockChain/WebServer.cs index 2e49dc7..cd7b86b 100644 --- a/csharp/BlockChain/WebServer.cs +++ b/csharp/BlockChain/WebServer.cs @@ -1,4 +1,5 @@ using Newtonsoft.Json; +using System.Configuration; using System.IO; using System.Net; using System.Net.Http; @@ -9,6 +10,10 @@ namespace BlockChainDemo { public WebServer(BlockChain chain) { + var settings = ConfigurationManager.AppSettings; + string host = settings["host"]?.Length > 1 ? settings["host"] : "localhost"; + string port = settings["port"]?.Length > 1 ? settings["port"] : "12345"; + var server = new TinyWebServer.WebServer(request => { string path = request.Url.PathAndQuery.ToLower(); @@ -53,18 +58,18 @@ namespace BlockChainDemo var obj = JsonConvert.DeserializeAnonymousType(json, urlList); return chain.RegisterNodes(obj.Urls); - //GET: http://localhost:12345/nodes/register + //GET: http://localhost:12345/nodes/resolve case "/nodes/resolve": return chain.Consensus(); } return ""; }, - "http://localhost:12345/mine/", - "http://localhost:12345/transactions/new/", - "http://localhost:12345/chain/", - "http://localhost:12345/nodes/register/", - "http://localhost:12345/nodes/resolve/" + $"http://{host}:{port}/mine/", + $"http://{host}:{port}/transactions/new/", + $"http://{host}:{port}/chain/", + $"http://{host}:{port}/nodes/register/", + $"http://{host}:{port}/nodes/resolve/" ); server.Run();