public void IfCanBeUpdatedIsFalseWhenCurrentVersionIsHigherThanServerVersionAndNotIsInstalled()
 {
     var package = new PackageVersion();
     package.CurrentVersion = "0.5.5";
     package.Serverversion = "0.5.2";
     Assert.IsFalse(package.CanBeUpdated);
 }
 public void IfCanBeUpdatedIsTrueWhenCurrentVersionNotEqualsServerVersionAndNotIsInstalled()
 {
     var package = new PackageVersion();
     package.CurrentVersion = "0.5.2";
     package.Serverversion = "0.5.4";
     Assert.IsTrue(package.CanBeUpdated);
 }
 public void PackageVersion(string package)
 {
     log.Info("Getting version of package: " + package);
     _packageVersion = new PackageVersion();
     _package = package;
     _powershellAsync.Run("cver " + package + " -source " + _sourceService.Source);
 }
 public void PackageVersion(string package)
 {
     this.Log().Info("Getting version of package: " + package);
     _packageVersion = new PackageVersion();
     _package = package;
     OnStarted();
     _powershellAsync.Run("cver " + package + " -source " + _sourceService.Source.Url);
 }
 public void IfTwoClassesWithDifferentNamesAreNotEqual()
 {
     var package1 = new PackageVersion();
     var package2 = new PackageVersion();
     package1.Name = "test";
     package2.Name = "test2";
     Assert.IsFalse(package1.Equals(package2));
 }
 public void IfTwoClassesWithTheSameNameAreEqual()
 {
     var package1 = new PackageVersion();
     var package2 = new PackageVersion();
     package1.Name = "test";
     package2.Name = "test";
     Assert.IsTrue(package1.Equals(package2));
 }
 /// <summary>
 /// Shows the information of the _version field to
 /// the user.
 /// </summary>
 private void UpdatePanel(PackageVersion version)
 {
     this.Invoke(() =>
         {
             _version = version;
             txtCopyrightInformation.Text = _version.CopyrightInformation;
             txtReleaseNotes.Text = _version.ReleaseNotes != null
                                        ? _version.ReleaseNotes.Replace("\n\t\n\t", Environment.NewLine)
                                        : "";
         });
 }
 /// <summary>
 /// Called when the PackageVersionService that should be
 /// cached is returning a new PackageVersion.
 /// </summary>
 /// <param name="version"></param>
 private void OnUncachedVersionChanged(PackageVersion version)
 {
     this.Log().Debug("Run finished on uncached version");
     if (_cachedVersions.ContainsKey(version.Name))
     {
         _cachedVersions[version.Name] = new VersionAndCacheTime { Version = version, InvalidateCacheTime = DateTime.Now.AddMinutes(30) };
     }
     else
     {
         _cachedVersions.Add(version.Name, new VersionAndCacheTime { Version = version, InvalidateCacheTime = DateTime.Now.AddMinutes(30) });
     }
     OnVersionChanged(version);
 }
        private PackageVersion ParseEntry(XmlNode entryNode, XmlNamespaceManager nsmgr)
        {
            var version = new PackageVersion();
            if (entryNode == null)
            {
                version.Summary = strings.could_not_parse;
                version.Description = version.Summary;
                version.Serverversion = strings.not_available;
                return version;
            }

            version.Name = entryNode.SelectSingleNode("ns:title", nsmgr).InnerText;
            version.Summary = entryNode.SelectSingleNode("ns:summary", nsmgr).InnerText;
            version.AuthorName = entryNode.SelectSingleNode("ns:author/ns:name", nsmgr).InnerText;
            version.LastUpdatedAt = DateTime.Parse(entryNode.SelectSingleNode("ns:updated", nsmgr).InnerText);

            var properties = entryNode.SelectSingleNode("m:properties", nsmgr);
            if (properties != null)
            {
                var serverversion = properties.SelectSingleNode("d:Version", nsmgr);
                var copyrightInformation = properties.SelectSingleNode("d:Copyright", nsmgr);
                var createdAt = properties.SelectSingleNode("d:Created", nsmgr);
                var dependencies = properties.SelectSingleNode("d:Dependencies", nsmgr);
                var description = properties.SelectSingleNode("d:Description", nsmgr);
                var downloadCount = properties.SelectSingleNode("d:DownloadCount", nsmgr);
                var galleryDetailsUrl = properties.SelectSingleNode("d:GalleryDetailsUrl ", nsmgr);
                var iconUrl = properties.SelectSingleNode("d:IconUrl ", nsmgr);
                var isPrerelease = properties.SelectSingleNode("d:IsPrerelease", nsmgr);
                var language = properties.SelectSingleNode("d:Language", nsmgr);
                var publishedAt = properties.SelectSingleNode("d:Published", nsmgr);
                var licenseUrl = properties.SelectSingleNode("d:LicenseUrl", nsmgr);
                var packageSize = properties.SelectSingleNode("d:PackageSize", nsmgr);
                var projectUrl = properties.SelectSingleNode("d:ProjectUrl", nsmgr);
                var reportAbuseUrl = properties.SelectSingleNode("d:ReportAbuseUrl", nsmgr);
                var releaseNotes = properties.SelectSingleNode("d:ReleaseNotes", nsmgr);
                var requireLicenseAcceptance = properties.SelectSingleNode("d:RequireLicenseAcceptance", nsmgr);
                var tags = properties.SelectSingleNode("d:Tags", nsmgr);
                var versionDownloadCount = properties.SelectSingleNode("d:VersionDownloadCount", nsmgr);

                if (serverversion != null)
                    version.Serverversion = serverversion.InnerText;
                if (copyrightInformation != null)
                    version.CopyrightInformation = copyrightInformation.InnerText;
                if (createdAt != null)
                    version.CreatedAt = DateTime.Parse(createdAt.InnerText);
                if (dependencies != null)
                    version.Dependencies = _dependeciesFormatter.Execute(dependencies.InnerText);
                if (description != null)
                    version.Description = description.InnerText.Replace("\n", "\r\n");
                if (downloadCount != null)
                    version.DownloadCount = int.Parse(downloadCount.InnerText);
                if (galleryDetailsUrl != null)
                    version.GalleryDetailsUrl = galleryDetailsUrl.InnerText;
                if (iconUrl != null)
                    version.IconUrl = iconUrl.InnerText;
                if (isPrerelease != null)
                    version.IsPrerelease = bool.Parse(isPrerelease.InnerText);
                if (language != null)
                    version.Language = language.InnerText;
                if (publishedAt != null)
                    version.PublishedAt = DateTime.Parse(publishedAt.InnerText);
                if (licenseUrl != null)
                    version.LicenseUrl = licenseUrl.InnerText;
                if (packageSize != null)
                    version.PackageSize = UInt64.Parse(packageSize.InnerText);
                if (projectUrl != null)
                    version.ProjectUrl = projectUrl.InnerText;
                if (reportAbuseUrl != null)
                    version.ReportAbuseUrl = reportAbuseUrl.InnerText;
                if (releaseNotes != null)
                    version.ReleaseNotes = releaseNotes.InnerText;
                if (requireLicenseAcceptance != null)
                    version.RequireLicenseAcceptance = bool.Parse(requireLicenseAcceptance.InnerText);
                if (tags != null)
                    version.Tags = tags.InnerText.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                if (versionDownloadCount != null)
                    version.VersionDownloadCount = int.Parse(versionDownloadCount.InnerText);
            }

            return version;
        }
 private void UpdateInstallUninstallButtonLabel(PackageVersion version)
 {
     this.Invoke(() =>
         {
             _version = version;
             btnInstallUninstall.Checked = !_version.IsInstalled;
             btnInstallUninstall.Enabled = true;
             btnUpdate.Enabled = _version.CanBeUpdated;
             if (btnInstallUninstall.Checked)
             {
                 btnInstallUninstall.ImageIndex = 0;
                 btnInstallUninstall.Text = strings.install;
                 btnInstallUninstall.AccessibleName = strings.install;
                 btnInstallUninstall.AccessibleDescription = strings.install_long;
             }
             else
             {
                 btnInstallUninstall.ImageIndex = 1;
                 btnInstallUninstall.Text = strings.uninstall;
                 btnInstallUninstall.AccessibleName = strings.uninstall;
                 btnInstallUninstall.AccessibleDescription = strings.unsinstall_long;
             }
         });
 }
예제 #11
0
 private void VersionChangedHandler(PackageVersion version)
 {
     if(this.InvokeRequired)
     {
         Invoke(new PackageVersionHandler(VersionChangedHandler), new object[] { version });
     }
     else
     {
         txtVersion.Text = "";
         txtVersion.AppendText(version.Name + Environment.NewLine);
         txtVersion.Select(0, version.Name.Length);
         txtVersion.SelectionFont = new Font(txtVersion.SelectionFont.FontFamily, 12, FontStyle.Bold);
         txtVersion.AppendText("Current version: " + version.CurrentVersion + Environment.NewLine);
         txtVersion.AppendText("Version on the server: " + version.Serverversion + Environment.NewLine);
         btnUpdate.Enabled = version.CanBeUpdated;
         btnInstall.Enabled = !version.IsInstalled;
         ClearStatus();
         lblStatus.Text = "Number of packages: " + PackageList.Items.Count;
         PackageList.Enabled = true;
     }
 }
 public void IfIsInstalledReturnsTrueWhenCurrentVersionIsNotNoVersion()
 {
     var package = new PackageVersion();
     package.CurrentVersion = "test";
     Assert.IsTrue(package.IsInstalled);
 }
 public void IfTwoClassesWithOneClassNotAPackageVersionAreNotEqual()
 {
     var package1 = new PackageVersion();
     var package2 = new Object();
     package1.Name = "test";
     Assert.IsFalse(package1.Equals(package2));
 }
        /// <summary>
        /// Shows the information of the _version field to
        /// the user.
        /// </summary>
        private void UpdatePanel(PackageVersion version)
        {
            this.Invoke(() =>
                {
                    _version = version;
                    ClearPanel();
                    lblName.Text = _version.Name;
                    lblServerVersion.Text = _version.Serverversion;
                    lblInstalledVersion.Text = _version.CurrentVersion;

                    if (!string.IsNullOrEmpty(_version.AuthorName))
                        lblAuthor.Text = string.Format(strings.authored_by, _version.AuthorName);

                    txtDescription.Text = _version.Description;

                    if (!string.IsNullOrEmpty(_version.IconUrl))
                    {
                        pictureBoxLogo.ImageLocation = _version.IconUrl;
                        pictureBoxLogo.LoadAsync();
                    }
                    else
                    {
                        pictureBoxLogo.Image = pictureBoxLogo.ErrorImage;
                    }
                    if (_version.IsCurrentVersionPreRelease)
                    {
                        var thisExe = Assembly.GetExecutingAssembly();
                        var file = thisExe.GetManifestResourceStream("Chocolatey.Explorer.Resources.monitorPre.png");
                        if (file != null) picInstalledVersion.Image = Image.FromStream(file);
                    }
                    else
                    {
                        var thisExe = Assembly.GetExecutingAssembly();
                        var file = thisExe.GetManifestResourceStream("Chocolatey.Explorer.Resources.monitor.png");
                        if (file != null) picInstalledVersion.Image = Image.FromStream(file);
                    }

                    if (_version.DownloadCount != 0)
                        lblDownloads.Text = _version.DownloadCount.ToString(CultureInfo.InvariantCulture);
                    if (_version.VersionDownloadCount != 0)
                        lblVersionDownloads.Text = _version.VersionDownloadCount.ToString(CultureInfo.InvariantCulture);
                    if (_version.LastUpdatedAt != DateTime.MinValue)
                        lblUpdated.Text = _version.LastUpdatedAt.GetDateTimeFormats()[0];
                    if (_version.PackageSize != 0)
                        lblPackageSize.Text = string.Format(strings.package_size_mb, (_version.PackageSize/1024.0));

                    tagList.Items.Clear();
                    if (_version.Tags != null)
                    {
                        foreach (var tag in _version.Tags)
                            tagList.Items.Add("#" + tag);
                    }
                    dependenciesList.Items.Clear();
                    if (_version.Dependencies != null)
                    {
                        foreach (var dependency in _version.Dependencies)
                            dependenciesList.Items.Add(dependency);
                    }

                    UnlockPanel();
                });
        }
 private void VersionChanged(PackageVersion version)
 {
     this.Invoke(() =>
         {
             Enabled = true;
             IsLoading = false;
         });
 }
 private void OnVersionChanged(PackageVersion version)
 {
     var handler = VersionChanged;
     if (handler != null) handler(version);
 }
 private void VersionChangedHandler(PackageVersion version)
 {
     if (this.InvokeRequired)
     {
         Invoke(new PackageVersionHandler(VersionChangedHandler), new object[] { version });
     }
     else
     {
         packageVersionPanel.Version = version;
         btnUpdate.Enabled = version.CanBeUpdated;
         btnInstallUninstall.Checked = !version.IsInstalled;
         btnInstallUninstall.Enabled = true;
         ClearStatus();
         lblStatus.Text = string.Format(strings.num_packages, PackageGrid.Rows.Count);
     }
 }
        private PackageVersion FillWithOData(string package)
        {
            string url = _sourceService.Source + "/Packages?$filter=IsLatestVersion eq true and Id eq '" + package + "'";
            XmlDocument xmlDoc = new XmlDocument();

            _loadingRssFeed = WebRequest.Create(url) as HttpWebRequest;
            _loadingRssFeed.Proxy = null;

            if (_loadingRssFeed != null)
            {
                Stream responseStream = null;
                try
                {
                    responseStream = _loadingRssFeed.GetResponse().GetResponseStream();
                    xmlDoc.Load(responseStream);
                    IList<PackageVersion> packages = _versionXmlParser.parse(xmlDoc);
                    if (packages.Count() > 0)
                        return packages.First();
                }
                catch (XmlException) { } // when xml could not be parsed
                catch (WebException) { } // when loading xml from server failed
                finally
                {
                    if (responseStream != null)
                        responseStream.Close();
                }
            }

            var packageVersion = new PackageVersion();
            packageVersion.Summary = string.Format(strings.could_not_download, url);
            packageVersion.Description = packageVersion.Summary;
            return packageVersion;
        }
 private Package PackageFromVersion(PackageVersion version)
 {
     this.Log().Debug("Get package from version: {0}", version);
     var highestPackage = _libDirHelper.GetHighestInstalledVersion(version.Name, false);
     return new Package
         {
         Name = version.Name,
         InstalledVersion = highestPackage == null?strings.not_available:highestPackage.InstalledVersion
     };
 }
        private PackageVersion FillWithOData(string package)
        {
            this.Log().Debug("Filling data for {0}", package);
            var url = _sourceService.Source.Url + "/Packages?$filter=IsLatestVersion eq true and Id eq '" + package + "'";
            var xmlDoc = new XmlDocument();

            _loadingRssFeed = WebRequest.Create(url) as HttpWebRequest;
            _loadingRssFeed.Proxy = null;

            if (_loadingRssFeed != null)
            {
                Stream responseStream = null;
                try
                {
                    responseStream = _loadingRssFeed.GetResponse().GetResponseStream();
                    xmlDoc.Load(responseStream);
                    var packages = _versionXmlParser.parse(xmlDoc);
                    if (packages.Any())
                        return packages.First();
                }
                catch (XmlException ex) { this.Log().Error("Message: {0} - Stacktrace: {1}", ex.Message, ex.StackTrace); } // when xml could not be parsed
                catch (WebException ex) { this.Log().Error("Message: {0} - Stacktrace: {1}", ex.Message, ex.StackTrace); } // when loading xml from server failed
                finally
                {
                    if (responseStream != null)
                        responseStream.Close();
                }
            }

            var packageVersion = new PackageVersion {Summary = string.Format(strings.could_not_download, url)};
            packageVersion.Description = packageVersion.Summary;
            return packageVersion;
        }
        /// <summary>
        /// Shows the information of the _version field to
        /// the user.
        /// </summary>
        private void UpdatePanel(PackageVersion version)
        {
            this.Invoke(() =>
                {
                    _version = version;
                    lblName.Text = _version.Name;
                    lblServerVersion.Text = _version.Serverversion;
                    lblInstalledVersion.Text = _version.CurrentVersion;
                    txtPowershellOutput.Text = "";
                    if (!string.IsNullOrEmpty(_version.AuthorName))
                        lblAuthor.Text = string.Format(strings.authored_by, _version.AuthorName);

                    if (_version.IsCurrentVersionPreRelease)
                    {
                        var thisExe = Assembly.GetExecutingAssembly();
                        var file = thisExe.GetManifestResourceStream("Chocolatey.Explorer.Resources.monitorPre.png");
                        if (file != null) picInstalledVersion.Image = Image.FromStream(file);
                    }
                    else
                    {
                        var thisExe = Assembly.GetExecutingAssembly();
                        var file = thisExe.GetManifestResourceStream("Chocolatey.Explorer.Resources.monitor.png");
                        if (file != null) picInstalledVersion.Image = Image.FromStream(file);
                    }
                });
        }
        private void PackageVersionThread(CancellationToken cancelToken, string packageNameObj)
        {
            try
            {
                var packageName = packageNameObj as string;
                var packageVersion = FillWithOData(packageName);

                // not found on server - use what we know
                if (packageVersion == null)
                {
                    packageVersion = new PackageVersion();
                }

                cancelToken.ThrowIfCancellationRequested();
                packageVersion.Name = packageName;
                packageVersion.CurrentVersion = _libDirHelper.GetHighestInstalledVersion(packageName);

                cancelToken.ThrowIfCancellationRequested();
                OnVersionChanged(packageVersion);
            }
            catch (OperationCanceledException) { } // cancellation is expected and okay
        }
 private void OnVersionChanged(PackageVersion version)
 {
     this.Log().Debug("Version changed: {0}", version);
     var handler = VersionChanged;
     if (handler != null) handler(version);
 }
 private Package PackageFromVersion(PackageVersion version)
 {
     return new Package()
     {
         Name = version.Name,
         InstalledVersion = _libDirHelper.GetHighestInstalledVersion(version.Name, false)
     };
 }
 public void IfIsInstalledReturnsFalseWhenCurrentVersionIsNoVersion()
 {
     var package = new PackageVersion();
     package.CurrentVersion = "no version";
     Assert.IsFalse(package.IsInstalled);
 }
 public bool Equals(PackageVersion other)
 {
     if (ReferenceEquals(null, other)) return false;
     return ReferenceEquals(this, other) || Equals(other.Name, Name);
 }
 public void IfToStringReturnName()
 {
     var package = new PackageVersion();
     package.Name = "test";
     Assert.AreEqual("test", package.ToString());
 }
 private void VersionChangedHandler(PackageVersion version)
 {
     this.Invoke(EnableUserInteraction);
 }
 public void GivesHashCodeOfName()
 {
     var package1 = new PackageVersion();
     package1.Name = "test2";
     Assert.AreEqual("test2".GetHashCode(), package1.GetHashCode());
 }
예제 #30
0
 private void VersionChangedHandler(PackageVersion version)
 {
     this.Invoke(() =>
        {
            lblprogress.Text = "";
            progressbar2.Visible = false;
            SetStatus();
        });
 }