public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token) { DownloadResource curResource = null; var serviceIndex = await source.GetResourceAsync <ServiceIndexResourceV3>(token); if (serviceIndex != null) { var httpSourceResource = await source.GetResourceAsync <HttpSourceResource>(token); var client = httpSourceResource.HttpSource; // If index.json contains a flat container resource use that to directly // construct package download urls. var packageBaseAddress = serviceIndex[ServiceTypes.PackageBaseAddress].FirstOrDefault()?.AbsoluteUri; if (packageBaseAddress != null) { curResource = new DownloadResourceV3(client, packageBaseAddress); } else { // If there is no flat container resource fall back to using the registration resource to find // the download url. var registrationResource = await source.GetResourceAsync <RegistrationResourceV3>(token); curResource = new DownloadResourceV3(client, registrationResource); } } return(new Tuple <bool, INuGetResource>(curResource != null, curResource)); }
public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token) { DownloadResource curResource = null; var serviceIndex = await source.GetResourceAsync <ServiceIndexResourceV3>(token); if (serviceIndex != null) { if (!_cache.TryGetValue(source.PackageSource, out curResource)) { var registrationResource = await source.GetResourceAsync <RegistrationResourceV3>(token); var messageHandlerResource = await source.GetResourceAsync <HttpHandlerResource>(token); var client = new DataClient(messageHandlerResource.MessageHandler); curResource = new DownloadResourceV3(client, registrationResource); _cache.TryAdd(source.PackageSource, curResource); } } return(new Tuple <bool, INuGetResource>(curResource != null, curResource)); }
public override async Task<Tuple<bool, INuGetResource>> TryCreate(SourceRepository source, CancellationToken token) { DownloadResource curResource = null; var serviceIndex = await source.GetResourceAsync<ServiceIndexResourceV3>(token); if (serviceIndex != null) { if (!_cache.TryGetValue(source.PackageSource, out curResource)) { var registrationResource = await source.GetResourceAsync<RegistrationResourceV3>(token); var messageHandlerResource = await source.GetResourceAsync<HttpHandlerResource>(token); DataClient client = new DataClient(messageHandlerResource.MessageHandler); curResource = new DownloadResourceV3(client, registrationResource); _cache.TryAdd(source.PackageSource, curResource); } } return new Tuple<bool, INuGetResource>(curResource != null, curResource); }