public IActionResult GetNodesByService(string service, int node_count = 1) { var connectResponse = xrouterService.xrConnect(service, node_count); var configReply = xrouterService.xrShowConfigs(); var connectReply = connectResponse.Reply; if (service.Contains("xrs::")) { connectReply = connectReply.Where(cr => cr.Services.Keys.Contains(service.Replace("xrs::", ""))).ToList(); } else { connectReply = connectReply.Where(cr => cr.SpvWallets.Contains(service.Replace("xr::", ""))).ToList(); } connectReply = connectReply.Where(c => c.NodePubKey != string.Empty).ToList(); var nodes = connectReply.Select(cr => { var serviceNodeConfig = configReply.Find(c => c.NodePubKey == cr.NodePubKey); var cfg = configReply.Find(c => c.NodePubKey == cr.NodePubKey); var cfgElements = new List <string[]>(); if (cfg != null) { cfgElements = cfg.Config.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries) .Select(value => value.Split('=')).ToList(); } string port = null; if (cfgElements.Any(lc => lc[0] == "port")) { port = cfgElements.FirstOrDefault(e => e[0] == "port")[1]; } return(new NodeInfoViewModel { Type = (port == "41412" || string.IsNullOrEmpty(port)) ? "Regular" : "Enterprise", Banned = cr.Banned, NodePubKey = cr.NodePubKey, PaymentAddress = cr.PaymentAddress, Score = cr.Score }); }).ToList(); return(Ok(nodes)); }
public ConnectResponse Connect([FromBody] ConnectRequestViewModel viewModel) { var resp = xrouterService.xrConnect(viewModel.Service, viewModel.NodeCount); return(resp); }