Exemple #1
0
    private static async Task <string?> InitNuGetReleaseNotes(IPackageSearchMetadata packageSearchMetadata,
                                                              INugetRepository repository)
    {
        var reader = await repository.DownloadNuspecReaderAsync(packageSearchMetadata.Identity);

        return(reader?.GetReleaseNotes());
    }
Exemple #2
0
 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);
    }
Exemple #4
0
    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;
 }
Exemple #6
0
 /// <summary/>
 public NuGetPackageProvider(INugetRepository repository, string?appId = null)
 {
     _repository = repository;
     _appId      = appId;
 }
Exemple #7
0
 /// <inheritdoc />
 public NugetTuple(INugetRepository item1, T item2) : base(item1, item2)
 {
 }
Exemple #8
0
 public DownloadModEntry(IPackageSearchMetadata metadata, INugetRepository source)
 {
     Metadata = metadata;
     Source   = source;
 }
 public AggregateNuGetRepositoryTests()
 {
     _dependenciesRepository = MakeRedirectorMock();
     _otherModsRepository    = MakeOtherMock();
     _aggregateRepository    = new AggregateNugetRepository(new[] { _dependenciesRepository, _otherModsRepository });
 }
Exemple #10
0
    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()
        {
        }));
    }
Exemple #11
0
    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);
    }
Exemple #12
0
    /// <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);
    }