/// <summary>
        /// Retrieve the process monitors
        /// </summary>
        /// <param name="apiKey"></param>
        /// <param name="client"></param>
        /// <param name="showMonitors"></param>
        public void GetExternalMonitors(string apiKey, HttpClient client, List <string> argMonitors)
        {
            using (HttpResponseMessage response = client.Get("api?apikey=" + apiKey + "&output=xml&version=2&action=tests"))
            {
                response.EnsureStatusIsSuccessful();

                String    data = response.Content.ReadAsString();
                XDocument xml  = XDocument.Parse(data);

                // copy the list of monitors from the command line
                List <string> showMonitors = new List <string>(argMonitors);

                // check if the list of monitors to show is 'all' or 'empty'
                if (showMonitors.Count == 0)
                {
                    foreach (MonitorDefinition md in ExternalMonitor.GetMonitorDefinitions())
                    {
                        showMonitors.Add(md.Metric);
                    }
                }


                // filter the monitors from the returned XML
                var allMonitors = from monitorNode in xml.Descendants("test")
                                  select new
                {
                    Id   = monitorNode.Attribute("id").Value,
                    Name = monitorNode.Value
                };

                // create all the monitor objects and copy in the values from the XML results
                foreach (var a in allMonitors)
                {
                    foreach (string m in showMonitors)
                    {
                        if (a.Name.ToLower().Contains(m.ToLower()) || m.ToLower() == "all")
                        {
                            Monitor monitor = new ExternalMonitor(this);
                            monitor.Id   = a.Id;
                            monitor.Name = a.Name;
                            monitor.GetMetrics(apiKey, client);
                            this.AddMonitor(monitor);
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Retrieve the process monitors
        /// </summary>
        /// <param name="apiKey"></param>
        /// <param name="client"></param>
        /// <param name="showMonitors"></param>
        public void GetExternalMonitors(string apiKey, HttpClient client, List<string> argMonitors)
        {
            using (HttpResponseMessage response = client.Get("api?apikey=" + apiKey + "&output=xml&version=2&action=tests"))
            {
                response.EnsureStatusIsSuccessful();

                String data = response.Content.ReadAsString();
                XDocument xml = XDocument.Parse(data);

                // copy the list of monitors from the command line
                List<string> showMonitors = new List<string>(argMonitors);

                // check if the list of monitors to show is 'all' or 'empty'
                if (showMonitors.Count == 0)
                {
                    foreach (MonitorDefinition md in ExternalMonitor.GetMonitorDefinitions())
                        showMonitors.Add(md.Metric);
                }

                // filter the monitors from the returned XML
                var allMonitors = from monitorNode in xml.Descendants("test")
                                    select new
                                    {
                                        Id = monitorNode.Attribute("id").Value,
                                        Name = monitorNode.Value
                                    };

                // create all the monitor objects and copy in the values from the XML results
                foreach (var a in allMonitors)
                {
                    foreach (string m in showMonitors)
                    {
                        if (a.Name.ToLower().Contains(m.ToLower()) || m.ToLower() == "all")
                        {
                            Monitor monitor = new ExternalMonitor(this);
                            monitor.Id = a.Id;
                            monitor.Name = a.Name;
                            monitor.GetMetrics(apiKey, client);
                            this.AddMonitor(monitor);
                        }
                    }
                }
            }
        }