Example #1
0
        internal async Task DownloadAndOpenDataServicePackage(string packageUrl, string id = null, NuGetVersion version = null)
        {
            if (!NetworkInterface.GetIsNetworkAvailable())
            {
                UIServices.Show(
                    StringResources.NoNetworkConnection,
                    MessageLevel.Warning);
                return;
            }

            if (id != null && version != null && Uri.TryCreate(packageUrl, UriKind.Absolute, out var downloadUrl))
            {
                var repository      = PackageRepositoryFactory.CreateRepository(packageUrl);
                var packageIdentity = new NuGet.Packaging.Core.PackageIdentity(id, version);

                var downloadedPackage = await PackageDownloader.Download(repository, packageIdentity);

                if (downloadedPackage != null)
                {
                    LoadPackage(downloadedPackage, packageUrl, PackageType.RemotePackage);
                }
            }
            else
            {
                UIServices.Show(
                    string.Format(
                        CultureInfo.CurrentCulture,
                        StringResources.Dialog_InvalidPackageUrl,
                        packageUrl),
                    MessageLevel.Error
                    );
            }
        }
        internal async Task DownloadAndOpenDataServicePackage(string packageUrl, string id = null, SemanticVersion version = null)
        {
            if (!NetworkInterface.GetIsNetworkAvailable())
            {
                UIServices.Show(
                    StringResources.NoNetworkConnection,
                    MessageLevel.Warning);
                return;
            }

            Uri downloadUrl;

            if (Uri.TryCreate(packageUrl, UriKind.Absolute, out downloadUrl) && downloadUrl.IsRemoteUri())
            {
                IPackage downloadedPackage = await PackageDownloader.Download(downloadUrl, id, version.ToString());

                if (downloadedPackage != null)
                {
                    LoadPackage(downloadedPackage, packageUrl, PackageType.DataServicePackage);
                }
            }
            else
            {
                UIServices.Show(
                    String.Format(
                        CultureInfo.CurrentCulture,
                        StringResources.Dialog_InvalidPackageUrl,
                        packageUrl),
                    MessageLevel.Error
                    );
            }
        }
        private async void OnPackageDownloadRequested(object sender, EventArgs e)
        {
            var repository  = _viewModel.ActiveRepository;
            var packageInfo = _viewModel.SelectedPackage;

            if (packageInfo != null)
            {
                var          packageName = packageInfo.Id + "." + packageInfo.Version + NuGetPe.Constants.PackageExtension;
                var          title       = "Save " + packageName;
                const string filter      = "NuGet package file (*.nupkg)|*.nupkg|NuGet Symbols package file (*.snupkg)|*.snupkg|All files (*.*)|*.*";

                var accepted = UIServices.OpenSaveFileDialog(
                    title,
                    packageName,
                    null,
                    filter,
                    overwritePrompt: true,
                    selectedFilePath: out var selectedFilePath,
                    selectedFilterIndex: out var selectedIndex);

                if (accepted)
                {
                    if (selectedIndex == 1 &&
                        !selectedFilePath.EndsWith(NuGetPe.Constants.PackageExtension, StringComparison.OrdinalIgnoreCase))
                    {
                        selectedFilePath += NuGetPe.Constants.PackageExtension;
                    }

                    await PackageDownloader.Download(selectedFilePath, repository, packageInfo.Identity);
                }
            }
        }
Example #4
0
        private async Task OpenPackageFromRepository(string searchTerm)
        {
            var canceled = AskToSaveCurrentFile();

            if (canceled)
            {
                return;
            }

            var selectedPackageInfo = PackageChooser.SelectPackage(searchTerm);

            if (selectedPackageInfo == null)
            {
                return;
            }

            if (selectedPackageInfo.IsLocalPackage)
            {
                await OpenLocalPackage(selectedPackageInfo.DownloadUrl.LocalPath);
            }
            else
            {
                var packageVersion = new NuGetVersion(selectedPackageInfo.Version);
                var cachePackage   = MachineCache.Default.FindPackage(selectedPackageInfo.Id, packageVersion);

                DispatcherOperation processPackageAction(ISignaturePackage package)
                {
                    var servicePackage = selectedPackageInfo.AsDataServicePackage();

                    servicePackage.CorePackage = package;
                    LoadPackage(servicePackage,
                                selectedPackageInfo.DownloadUrl.ToString(),
                                PackageType.DataServicePackage);

                    // adding package to the cache, but with low priority
                    return(Dispatcher.BeginInvoke(
                               (Action <IPackage>)MachineCache.Default.AddPackage,
                               DispatcherPriority.ApplicationIdle,
                               package));
                }

                if (cachePackage == null || cachePackage.GetHash() != selectedPackageInfo.PackageHash)
                {
                    var downloadedPackage = await PackageDownloader.Download(
                        selectedPackageInfo.DownloadUrl,
                        selectedPackageInfo.Id,
                        packageVersion.ToString());

                    if (downloadedPackage != null)
                    {
                        await processPackageAction(downloadedPackage);
                    }
                }
                else
                {
                    await processPackageAction(cachePackage);
                }
            }
        }
        private async Task OpenPackageFromRepository(string searchTerm)
        {
            var canceled = AskToSaveCurrentFile();

            if (canceled)
            {
                return;
            }

            var selectedPackageInfo = PackageChooser.SelectPackage(searchTerm);

            if (selectedPackageInfo == null)
            {
                return;
            }

            var repository = PackageChooser.Repository;

            if (repository == null)
            {
                return;
            }

            var cachePackage = MachineCache.Default.FindPackage(selectedPackageInfo.Id, selectedPackageInfo.SemanticVersion);

            DispatcherOperation processPackageAction(ISignaturePackage package)
            {
                LoadPackage(package,
                            package.Source,
                            repository.PackageSource.Source,
                            PackageType.RemotePackage);

                // adding package to the cache, but with low priority
                return(Dispatcher.BeginInvoke(
                           (Action <IPackage>)MachineCache.Default.AddPackage,
                           DispatcherPriority.ApplicationIdle,
                           package));
            }

            if (cachePackage == null)
            {
                var downloadedPackage = await PackageDownloader.Download(
                    repository,
                    selectedPackageInfo.Identity);

                if (downloadedPackage != null)
                {
                    await processPackageAction(downloadedPackage);
                }
            }
            else
            {
                await processPackageAction(cachePackage);
            }
        }
        private async void OnPackageDownloadRequested(object sender, EventArgs e)
        {
            DiagnosticsClient.TrackEvent("PackageChooserService_OnPackageDownloadRequested");

            var vm          = (PackageChooserViewModel)sender;
            var repository  = vm.ActiveRepository;
            var packageInfo = vm.SelectedPackage;

            if (packageInfo != null && repository != null)
            {
                var          packageName = packageInfo.Id + "." + packageInfo.Version + NuGetPe.Constants.PackageExtension;
                var          title       = "Save " + packageName;
                const string filter      = "NuGet package file (*.nupkg)|*.nupkg|NuGet Symbols package file (*.snupkg)|*.snupkg|All files (*.*)|*.*";

                var accepted = UIServices.OpenSaveFileDialog(
                    title,
                    packageName,
                    null,
                    filter,
                    overwritePrompt: true,
                    selectedFilePath: out var selectedFilePath,
                    selectedFilterIndex: out var selectedIndex);

                if (accepted)
                {
                    if (selectedIndex == 1 &&
                        !selectedFilePath.EndsWith(NuGetPe.Constants.PackageExtension, StringComparison.OrdinalIgnoreCase))
                    {
                        selectedFilePath += NuGetPe.Constants.PackageExtension;
                    }
                    else if (selectedIndex == 2 &&
                             !selectedFilePath.EndsWith(NuGetPe.Constants.SymbolPackageExtension, StringComparison.OrdinalIgnoreCase))
                    {
                        selectedFilePath += NuGetPe.Constants.SymbolPackageExtension;
                    }

                    try
                    {
                        await PackageDownloader.Download(selectedFilePath, repository, packageInfo.Identity);
                    }
                    catch (Exception ex)
                    {
                        UIServices.Show(ex.Message, MessageLevel.Error);
                    }
                }
            }
        }