Esempio n. 1
0
        public ICollection <IInfobase> GetInfobases(ICluster cluster)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(ToString());
            }

            if (_clusterInfos == null || !_clusterInfos.TryGetValue(cluster, out var clusterInfo))
            {
                throw new ArgumentException("The cluster does not correspond to current connection.");
            }

            var items  = _connection.GetInfoBases(clusterInfo);
            var result = new List <IInfobase>(items.Length);

            foreach (var item in items)
            {
                var infobaseShort = (IInfoBaseShort)item;
                var infobase      = new Infobase(cluster)
                {
                    Name = infobaseShort.Name, Description = infobaseShort.Descr
                };
                Marshal.ReleaseComObject(item);
                result.Add(infobase);
            }

            return(result);
        }
Esempio n. 2
0
        public void SaveInfobase(string name, Settings settings)
        {
            _infobases.ForEach(val => val.IsActive = false);

            Infobase s = Infobases.FirstOrDefault(val => val.Name == name);

            if (s == null)
            {
                s = new Infobase {
                    Name = name
                };
                _infobases.Add(s);
            }

            s.ApplicationString = settings.ApplicationString;
            s.BaseUrl           = settings.BaseUrl;
            if (!settings.AnonymousAccess)
            {
                s.UserName = settings.UserName;
                s.Password = settings.Password;
            }
            s.AnonymousAccess = settings.AnonymousAccess;
            s.IsActive        = true;
            s.IsAutorun       = true;

            Serialize(_infobases);
        }
Esempio n. 3
0
        public void CreateInfobase(string name, string url, string application, string ftpPort)
        {
            if (!_infobases.Exists(val => val.Name == name))
            {
                var s = new Infobase { Name = name, BaseUrl = url, ApplicationString = application, FtpPort = ftpPort };
                _infobases.Add(s);

                Serialize(_infobases);
            }
        }
Esempio n. 4
0
        public void CreateInfobase(string name, string url, string application, string ftpPort)
        {
            if (!_infobases.Exists(val => val.Name == name))
            {
                var s = new Infobase {
                    Name = name, BaseUrl = url, ApplicationString = application, FtpPort = ftpPort
                };
                _infobases.Add(s);

                Serialize(_infobases);
            }
        }
Esempio n. 5
0
        public bool DownloadInfobases(string url)
        {
            try
            {
                WebRequest request = new HttpWebRequest(new Uri(url));
                using (WebResponse response = request.GetResponse())
                    using (Stream stream = response.GetResponseStream())
                    {
                        var doc = new XmlDocument();
                        doc.Load(stream);
                        XmlNodeList nodes = doc.DocumentElement.SelectNodes("//Products/Product");

                        var list = new List <Infobase>();
                        foreach (XmlNode node in nodes)
                        {
                            var infobase = new Infobase();
                            foreach (XmlNode child in node.ChildNodes)
                            {
                                switch (child.Name)
                                {
                                case "Name":
                                    infobase.Name = child.InnerText;
                                    break;

                                case "Url":
                                    infobase.BaseUrl = child.InnerText;
                                    break;

                                case "App":
                                    infobase.ApplicationString = child.InnerText;
                                    break;
                                }
                            }
                            list.Add(infobase);
                        }

                        _infobases.Clear();
                        _infobases.AddRange(list);
                    }

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Esempio n. 6
0
        private IDictionary <string, Infobase> GetInfobaseMap(ICluster cluster)
        {
            if (_clusterIds == null || !_clusterIds.TryGetValue(cluster, out var clusterId))
            {
                throw new ArgumentException("The cluster does not correspond to current connection.");
            }

            var result = new Dictionary <string, Infobase>();

            var arguments = $"infobase --cluster {clusterId} {_rasAddr} summary list";

            void Consumer(IDictionary <string, string> values)
            {
                values.TryGetValue(InfobaseFields.Name, out var infobaseName);
                if (string.IsNullOrWhiteSpace(infobaseName))
                {
                    return;
                }

                values.TryGetValue(InfobaseFields.Description, out var infobaseDescription);

                var infobase = new Infobase(cluster)
                {
                    Name        = infobaseName,
                    Description = infobaseDescription
                };

                result.Add(values["infobase"], infobase);
            }

            var exitCode = ExecuteRac(arguments, Consumer, out var error);

            if (exitCode != 0)
            {
                throw new ApplicationException($"Unable to get infobase list.\n{error}");
            }

            return(result);
        }
Esempio n. 7
0
        public void SaveInfobase(string name, Settings settings)
        {
            _infobases.ForEach(val => val.IsActive = false);

            Infobase s = Infobases.FirstOrDefault(val => val.Name == name);

            if (s == null)
            {
                s = new Infobase { Name = name };
                _infobases.Add(s);
            }

            s.ApplicationString = settings.ApplicationString;
            s.BaseUrl = settings.BaseUrl;            
            s.IsActive = true;
            s.IsAutorun = true;

            Serialize(_infobases);
        }
Esempio n. 8
0
        public bool DownloadInfobases(string url)
        {
            try
            {
                WebRequest request = new HttpWebRequest(new Uri(url));
                using (WebResponse response = request.GetResponse())
                using (Stream stream = response.GetResponseStream())
                {
                    var doc = new XmlDocument();
                    doc.Load(stream);
                    XmlNodeList nodes = doc.DocumentElement.SelectNodes("//Products/Product");

                    var list = new List<Infobase>();
                    foreach (XmlNode node in nodes)
                    {
                        var infobase = new Infobase();
                        foreach (XmlNode child in node.ChildNodes)
                        {
                            switch (child.Name)
                            {
                                case "Name":
                                    infobase.Name = child.InnerText;
                                    break;
                                case "Url":
                                    infobase.BaseUrl = child.InnerText;
                                    break;
                                case "App":
                                    infobase.ApplicationString = child.InnerText;
                                    break;
                            }
                        }
                        list.Add(infobase);
                    }

                    _infobases.Clear();
                    _infobases.AddRange(list);
                }

                return true;
            }
            catch
            {
                return false;
            }
        }