public Task <string> GetPackageUrl(PackageId packageId, NuGetVersion packageVersion, PackageSourceLocation packageSourceLocation = null, bool includePreview = false) { return(Task.FromResult("mock-url-" + packageId.ToString())); }
private async Task <(PackageSource, NuGetVersion)> GetPackageSourceAndVerion(PackageId packageId, NuGetVersion packageVersion = null, PackageSourceLocation packageSourceLocation = null, bool includePreview = false) { CancellationToken cancellationToken = CancellationToken.None; IPackageSearchMetadata packageMetadata; IEnumerable <PackageSource> packagesSources = LoadNuGetSources(packageSourceLocation); PackageSource source; if (packageVersion is null) { (source, packageMetadata) = await GetLatestVersionInternalAsync(packageId.ToString(), packagesSources, includePreview, cancellationToken).ConfigureAwait(false); } else { packageVersion = new NuGetVersion(packageVersion); (source, packageMetadata) = await GetPackageMetadataAsync(packageId.ToString(), packageVersion, packagesSources, cancellationToken).ConfigureAwait(false); } packageVersion = packageMetadata.Identity.Version; return(source, packageVersion); }
public async Task <string> DownloadPackageAsync(PackageId packageId, NuGetVersion packageVersion = null, PackageSourceLocation packageSourceLocation = null, bool includePreview = false, DirectoryPath?downloadFolder = null) { CancellationToken cancellationToken = CancellationToken.None; if (_restoreActionConfig.Interactive) { DefaultCredentialServiceUtility.SetupDefaultCredentialService(_verboseLogger, _restoreActionConfig.Interactive); } (var source, var resolvedPackageVersion) = await GetPackageSourceAndVerion(packageId, packageVersion, packageSourceLocation, includePreview); FindPackageByIdResource resource = null; SourceRepository repository = Repository.Factory.GetCoreV3(source); resource = await repository.GetResourceAsync <FindPackageByIdResource>(cancellationToken) .ConfigureAwait(false); if (resource == null) { throw new NuGetPackageNotFoundException( string.Format(LocalizableStrings.FailedToLoadNuGetSource, source.Source)); } string nupkgPath = downloadFolder == null || !downloadFolder.HasValue ? Path.Combine(_packageInstallDir.Value, packageId.ToString(), resolvedPackageVersion.ToNormalizedString(), $"{packageId}.{resolvedPackageVersion.ToNormalizedString()}.nupkg") : Path.Combine(downloadFolder.Value.Value, $"{packageId}.{resolvedPackageVersion.ToNormalizedString()}.nupkg"); Directory.CreateDirectory(Path.GetDirectoryName(nupkgPath)); using FileStream destinationStream = File.Create(nupkgPath); bool success = await resource.CopyNupkgToStreamAsync( packageId.ToString(), resolvedPackageVersion, destinationStream, _cacheSettings, _verboseLogger, cancellationToken); destinationStream.Close(); if (!success) { throw new NuGetPackageInstallerException( string.Format("Downloading {0} version {1} failed", packageId, packageVersion.ToNormalizedString())); } VerifySigning(nupkgPath); return(nupkgPath); }
public Task <string> DownloadPackageAsync(PackageId packageId, NuGetVersion packageVersion, PackageSourceLocation packageSourceLocation = null, bool includePreview = false) { var mockPackagePath = Path.Combine(MockPackageDir, $"{packageId}.{packageVersion}.nupkg"); File.WriteAllText(mockPackagePath, string.Empty); return(Task.FromResult(mockPackagePath)); }
public async Task <string> GetPackageUrl(PackageId packageId, NuGetVersion packageVersion = null, PackageSourceLocation packageSourceLocation = null, bool includePreview = false) { (var source, var resolvedPackageVersion) = await GetPackageSourceAndVerion(packageId, packageVersion, packageSourceLocation, includePreview); SourceRepository repository = GetSourceRepository(source); ServiceIndexResourceV3 serviceIndexResource = repository.GetResourceAsync <ServiceIndexResourceV3>().Result; IReadOnlyList <Uri> packageBaseAddress = serviceIndexResource?.GetServiceEntryUris(ServiceTypes.PackageBaseAddress); return(GetNupkgUrl(packageBaseAddress.First().ToString(), packageId, resolvedPackageVersion)); }
private IEnumerable <PackageSource> LoadNuGetSources(PackageSourceLocation packageSourceLocation = null) { IEnumerable <PackageSource> defaultSources = new List <PackageSource>(); string currentDirectory = Directory.GetCurrentDirectory(); ISettings settings; if (packageSourceLocation?.NugetConfig != null) { string nugetConfigParentDirectory = packageSourceLocation.NugetConfig.Value.GetDirectoryPath().Value; string nugetConfigFileName = Path.GetFileName(packageSourceLocation.NugetConfig.Value.Value); settings = Settings.LoadSpecificSettings(nugetConfigParentDirectory, nugetConfigFileName); } else { settings = Settings.LoadDefaultSettings( packageSourceLocation?.RootConfigDirectory?.Value ?? currentDirectory); } PackageSourceProvider packageSourceProvider = new PackageSourceProvider(settings); defaultSources = packageSourceProvider.LoadPackageSources().Where(source => source.IsEnabled); if (packageSourceLocation?.AdditionalSourceFeed?.Any() ?? false) { foreach (string source in packageSourceLocation?.AdditionalSourceFeed) { if (string.IsNullOrWhiteSpace(source)) { continue; } PackageSource packageSource = new PackageSource(source); if (packageSource.TrySourceAsUri == null) { _verboseLogger.LogWarning(string.Format( LocalizableStrings.FailedToLoadNuGetSource, source)); continue; } defaultSources = defaultSources.Append(packageSource); } } if (!packageSourceLocation?.SourceFeedOverrides.Any() ?? true) { if (!defaultSources.Any()) { throw new NuGetPackageInstallerException("No NuGet sources are defined or enabled"); } return(defaultSources); } List <PackageSource> customSources = new List <PackageSource>(); foreach (string source in packageSourceLocation?.SourceFeedOverrides) { if (string.IsNullOrWhiteSpace(source)) { continue; } PackageSource packageSource = new PackageSource(source); if (packageSource.TrySourceAsUri == null) { _verboseLogger.LogWarning(string.Format( LocalizableStrings.FailedToLoadNuGetSource, source)); continue; } customSources.Add(packageSource); } IEnumerable <PackageSource> retrievedSources; if (packageSourceLocation != null && packageSourceLocation.SourceFeedOverrides.Any()) { retrievedSources = customSources; } else { retrievedSources = defaultSources; } if (!retrievedSources.Any()) { throw new NuGetPackageInstallerException("No NuGet sources are defined or enabled"); } return(retrievedSources); }
public Task <NuGetVersion> GetLatestPackageVerion(PackageId packageId, PackageSourceLocation packageSourceLocation = null, bool includePreview = false) => throw new NotImplementedException();
public async Task <string> DownloadPackageAsync(PackageId packageId, NuGetVersion packageVersion = null, PackageSourceLocation packageSourceLocation = null, bool includePreview = false) { CancellationToken cancellationToken = CancellationToken.None; IPackageSearchMetadata packageMetadata; IEnumerable <PackageSource> packagesSources = LoadNuGetSources(packageSourceLocation); PackageSource source; if (packageVersion is null) { (source, packageMetadata) = await GetLatestVersionInternalAsync(packageId.ToString(), packagesSources, includePreview, cancellationToken).ConfigureAwait(false); } else { packageVersion = new NuGetVersion(packageVersion); (source, packageMetadata) = await GetPackageMetadataAsync(packageId.ToString(), packageVersion, packagesSources, cancellationToken).ConfigureAwait(false); } packageVersion = packageMetadata.Identity.Version; FindPackageByIdResource resource = null; SourceRepository repository = Repository.Factory.GetCoreV3(source); resource = await repository.GetResourceAsync <FindPackageByIdResource>(cancellationToken) .ConfigureAwait(false); if (resource == null) { throw new NuGetPackageInstallerException( string.Format(LocalizableStrings.FailedToLoadNuGetSource, source.Source)); } string nupkgPath = Path.Combine(_packageInstallDir.Value, packageId.ToString(), packageVersion.ToNormalizedString(), $"{packageId}.{packageVersion.ToNormalizedString()}.nupkg"); Directory.CreateDirectory(Path.GetDirectoryName(nupkgPath)); using FileStream destinationStream = File.Create(nupkgPath); bool success = await resource.CopyNupkgToStreamAsync( packageId.ToString(), packageVersion, destinationStream, _cacheSettings, _logger, cancellationToken); if (!success) { throw new NuGetPackageInstallerException( $"Downloading {packageId} version {packageVersion.ToNormalizedString()} failed"); } return(nupkgPath); }