private static async Task <string?> InitNuGetReleaseNotes(IPackageSearchMetadata packageSearchMetadata, INugetRepository repository) { var reader = await repository.DownloadNuspecReaderAsync(packageSearchMetadata.Identity); return(reader?.GetReleaseNotes()); }
public NugetProxyController(INugetApiProxyManager nugetApiProxyManager, INugetRepository nugetRepositoryManager, IRepositoryManager repositoryManager) { _nugetApiProxyManager = nugetApiProxyManager; _nugetRepositoryManager = nugetRepositoryManager; _repositoryManager = repositoryManager; }
/// <summary/> public IndexedNuGetPackageProvider(INugetRepository nugetRepository, string?appId = null) { SourceUrl = nugetRepository.SourceUrl; FriendlyName = nugetRepository.FriendlyName; _fallback = new NuGetPackageProvider(nugetRepository, appId); _ = InitializeApiAsync(appId); }
private static async Task InitNuGetAsyncData(WebDownloadablePackage package, IPackageSearchMetadata pkg, INugetRepository repository, NuGetUpdateResolver updateResolver, bool getReadme, bool getReleaseNotes) { bool canGetReadme = getReadme && pkg.ReadmeUrl != null; var tasks = new Task[2 + Convert.ToInt32(canGetReadme) + Convert.ToInt32(getReleaseNotes)]; int currentTask = 0; tasks[currentTask++] = Task.Run(async() => package.Published = await InitNuGetPublishedAsync(pkg, repository)); tasks[currentTask++] = Task.Run(async() => package.FileSize = await InitNuGetFileSizeAsync(updateResolver, pkg)); if (canGetReadme) { tasks[currentTask++] = Task.Run(async() => package.MarkdownReadme = await SharedHttpClient.CachedAndCompressed.GetStringAsync(pkg.ReadmeUrl)); } if (getReleaseNotes) { tasks[currentTask++] = Task.Run(async() => package.Changelog = await InitNuGetReleaseNotes(pkg, repository)); } await Task.WhenAll(tasks); }
public NugetRepositoryController(INugetRepository nugetRepositoryManager) { _nugetRepository = nugetRepositoryManager; }
/// <summary/> public NuGetPackageProvider(INugetRepository repository, string?appId = null) { _repository = repository; _appId = appId; }
/// <inheritdoc /> public NugetTuple(INugetRepository item1, T item2) : base(item1, item2) { }
public DownloadModEntry(IPackageSearchMetadata metadata, INugetRepository source) { Metadata = metadata; Source = source; }
public AggregateNuGetRepositoryTests() { _dependenciesRepository = MakeRedirectorMock(); _otherModsRepository = MakeOtherMock(); _aggregateRepository = new AggregateNugetRepository(new[] { _dependenciesRepository, _otherModsRepository }); }
private static NuGetUpdateResolver GetNuGetUpdateResolver(IPackageSearchMetadata pkg, INugetRepository repository) { Sewer56.Update.Resolvers.NuGet.Utilities.NugetRepository GetRepositoryFromKey(ICacheEntry entry) => new((string)entry.Key); var newRepo = ItemCache <Sewer56.Update.Resolvers.NuGet.Utilities.NugetRepository> .GetOrCreateKey(repository.SourceUrl, GetRepositoryFromKey); var resolverSettings = new NuGetUpdateResolverSettings(pkg.Identity.Id, newRepo); return(new NuGetUpdateResolver(resolverSettings, new CommonPackageResolverSettings() { })); }
private static async ValueTask <DateTime?> InitNuGetPublishedAsync(IPackageSearchMetadata pkg, INugetRepository repository) { var details = await repository.GetPackageDetails(pkg.Identity); if (details != null) { return(details.Published.GetValueOrDefault().UtcDateTime); } return(null); }
/// <summary> /// Creates a web downloadable package from a NuGet source. /// </summary> /// <param name="pkg">The search result.</param> /// <param name="repository">The NuGet repository to use.</param> /// <param name="getReadme">If true, tries to pull readme from the server.</param> /// <param name="getReleaseNotes">If true, tries to pull release notes from the server.</param> public static async Task <WebDownloadablePackage> FromNuGetAsync(IPackageSearchMetadata pkg, INugetRepository repository, bool getReadme = false, bool getReleaseNotes = false) { var result = new WebDownloadablePackage() { Name = !string.IsNullOrEmpty(pkg.Title) ? pkg.Title : pkg.Identity.Id, Source = repository.FriendlyName, Id = pkg.Identity.Id, Authors = pkg.Authors, Submitter = new Submitter() { UserName = pkg.Authors }, Description = pkg.Description, Version = pkg.Identity.Version, ProjectUri = pkg.ProjectUrl, DownloadCount = pkg.DownloadCount, Tags = pkg.Tags?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries) }; var resolver = GetNuGetUpdateResolver(pkg, repository); result._url = new Uri((await resolver.GetDownloadUrlAsync(pkg.Identity.Version, new ReleaseMetadataVerificationInfo(), CancellationToken.None)) !); _ = InitNuGetAsyncData(result, pkg, repository, resolver, getReadme, getReleaseNotes); if (pkg.IconUrl != null) { result.Images = new[] { new DownloadableImage() { Uri = pkg.IconUrl } } } ; return(result); }