Example #1
0
        private bool HandlePoolEditCommand(string[] input)
        {
            var symbol = input[2];
            var url = input[3];
            var user = input[4];

            var coinConfig = app.EngineConfiguration.CoinConfigurations.SingleOrDefault(
                c => c.PoolGroup.Id.Equals(symbol, StringComparison.OrdinalIgnoreCase)
                || c.PoolGroup.Id.ShortCoinSymbol().Equals(symbol, StringComparison.OrdinalIgnoreCase));
            MiningPool poolConfig = null;

            if (coinConfig == null)
            {
                var index = -1;
                if (int.TryParse(symbol, out index))
                {
                    index--;
                    var fullPoolList = GetPoolList();
                    if ((index >= 0) && (index < fullPoolList.Count))
                    {
                        coinConfig = fullPoolList[index].Configuration;
                        poolConfig = fullPoolList[index].Pool;

                    }
                }
            }
            else
                poolConfig = app.FindPoolConfiguration(coinConfig, url, String.Empty);

            if (poolConfig != null)
            {
                var pass = input[5];
                Uri uri = new UriBuilder(url).Uri;

                poolConfig.Host = uri.GetComponents(UriComponents.AbsoluteUri & ~UriComponents.Port, UriFormat.UriEscaped);
                poolConfig.Port = uri.Port;
                poolConfig.Password = pass;
                poolConfig.Username = user;
                app.EngineConfiguration.SaveCoinConfigurations();

                notificationHandler(String.Format("Pool {0} updated", url));

                return true;
            }

            return false;
        }