コード例 #1
0
        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));
        }
コード例 #2
0
        public ConnectResponse Connect([FromBody] ConnectRequestViewModel viewModel)
        {
            var resp = xrouterService.xrConnect(viewModel.Service, viewModel.NodeCount);

            return(resp);
        }