/// <inheritdoc /> public ServerRegisterResult SearchForXServer(string profileName = "", string signAddress = "") { var result = new ServerRegisterResult(); var xservers = this.xServerPeerList.GetPeers().OrderBy(n => n.ResponseTime); foreach (var xserver in xservers) { string xServerURL = Utils.GetServerUrl(xserver.NetworkProtocol, xserver.NetworkAddress, xserver.NetworkPort); var client = new RestClient(xServerURL); client.UseNewtonsoftJson(); var searchForXServerRequest = new RestRequest("/searchforxserver", Method.GET); searchForXServerRequest.AddParameter("profileName", profileName); searchForXServerRequest.AddParameter("signAddress", signAddress); var registerResult = client.Execute <ServerRegisterResult>(searchForXServerRequest); if (registerResult.StatusCode == HttpStatusCode.OK) { result = registerResult.Data; if (result.Id > 0) { result.Success = true; return(result); } else { result.Success = false; result.ResultMessage = "No xServers found"; } } else { if (string.IsNullOrEmpty(result.ResultMessage)) { var errorResponse = JsonConvert.DeserializeObject <ErrorResponse>(registerResult.Content); if (errorResponse != null) { result.ResultMessage = errorResponse.errors[0].message; } else { result.ResultMessage = "Failed to access xServer"; } } result.Success = false; } } return(result); }
/// <summary> /// Return xServer from profile name or sign address. /// </summary> /// <param name="profileName">The profile name to search for the xserver</param> /// <param name="signAddress">The sign address to search for the xserver</param> /// <returns>xServer found by the search.</returns> public ServerRegisterResult SearchForXServer(string profileName = "", string signAddress = "") { ServerRegisterResult result = new ServerRegisterResult(); using (X42DbContext dbContext = new X42DbContext(ConnectionString)) { ServerNodeData serverNode = null; if (!string.IsNullOrEmpty(profileName)) { serverNode = dbContext.ServerNodes.Where(sn => sn.ProfileName == profileName).FirstOrDefault(); } else if (!string.IsNullOrEmpty(profileName)) { serverNode = dbContext.ServerNodes.Where(sn => sn.SignAddress == signAddress).FirstOrDefault(); } if (serverNode != null) { result = new ServerRegisterResult() { Id = serverNode.Id, ProfileName = serverNode.ProfileName, NetworkProtocol = serverNode.NetworkProtocol, NetworkAddress = serverNode.NetworkAddress, NetworkPort = serverNode.NetworkPort, Signature = serverNode.Signature, Tier = serverNode.Tier, FeeAddress = serverNode.FeeAddress, KeyAddress = serverNode.KeyAddress, SignAddress = serverNode.SignAddress }; } } return(result); }