示例#1
0
        public override async Task <INuGetResource> Create(SourceRepository source)
        {
            INuGetResource   resource = null;
            MetadataResource v2MetadataResource;

            if (!_cache.TryGetValue(source.PackageSource, out v2MetadataResource))
            {
                resource = await base.Create(source);

                if (resource != null)
                {
                    v2MetadataResource = new V2MetadataResource((V2Resource)resource);
                    _cache.TryAdd(source.PackageSource, v2MetadataResource);
                    resource = v2MetadataResource;
                }
                else
                {
                    resource = null;
                }
            }
            else
            {
                resource = v2MetadataResource;
            }

            return(resource);
        }
示例#2
0
 private void SetParentCollection(INuGetResource resource)
 {
     if (resource != null)
     {
         resource.ResourcesCollection = this;
     }
 }
        public override async Task <INuGetResource> Create(SourceRepository source)
        {
            INuGetResource   resource = null;
            PSSearchResource v2PSSearchResource;

            if (!_cache.TryGetValue(source.PackageSource, out v2PSSearchResource))
            {
                UISearchResource uiSearchResource = await source.GetResource <UISearchResource>();

                if (uiSearchResource != null)
                {
                    v2PSSearchResource = new V2PowerShellSearchResource(uiSearchResource);
                    _cache.TryAdd(source.PackageSource, v2PSSearchResource);
                    resource = v2PSSearchResource;
                }
                else
                {
                    resource = null;
                }
            }
            else
            {
                resource = v2PSSearchResource;
            }

            return(resource);
        }
示例#4
0
            public async Task <INuGetResource> Create(SourceRepository source)
            {
                INuGetResource resource = null;

                if (Data != null)
                {
                    resource = new TestResource(Data);
                }

                return(await Task.FromResult(resource));
            }
        public override Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository sourceRepository, CancellationToken token)
        {
            INuGetResource resource = null;

            if (sourceRepository.PackageSource.IsHttp &&
                !sourceRepository.PackageSource.Source.EndsWith("json", StringComparison.OrdinalIgnoreCase))
            {
                resource = new RemoteV2FindPackageByIdResourcce(sourceRepository.PackageSource);
            }

            return(Task.FromResult(Tuple.Create(resource != null, resource)));
        }
示例#6
0
        public virtual async Task <INuGetResource> Create(SourceRepository source)
        {
            INuGetResource resource           = null;
            var            repositoryResource = await source.GetResource <V2PackageRepositoryResource>();

            if (repositoryResource != null && repositoryResource.V2Client != null)
            {
                resource = repositoryResource;
            }

            return(resource);
        }
示例#7
0
        public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token)
        {
            INuGetResource resource = null;

            var feedType = await source.GetFeedType(token);

            if (feedType == FeedType.FileSystemV2 || feedType == FeedType.FileSystemUnzipped)
            {
                resource = new LocalV2FindPackageByIdResource(source.PackageSource);
            }

            return(Tuple.Create(resource != null, resource));
        }
        public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository sourceRepository, CancellationToken token)
        {
            INuGetResource resource = null;

            var serviceIndexResource = await sourceRepository.GetResourceAsync <ServiceIndexResourceV3>();

            if (serviceIndexResource != null)
            {
                resource = new RemoteV3FindPackageByIdResource(sourceRepository);
            }

            return(Tuple.Create(resource != null, resource));
        }
        public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token)
        {
            INuGetResource resource = null;

            var localResource = await source.GetResourceAsync <FindLocalPackagesResource>(token);

            if (localResource != null)
            {
                resource = new LocalAutoCompleteResource(localResource);
            }

            return(new Tuple <bool, INuGetResource>(resource != null, resource));
        }
        public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository sourceRepository, CancellationToken token)
        {
            INuGetResource resource             = null;
            var            serviceIndexResource = await sourceRepository.GetResourceAsync <ServiceIndexResourceV3>();

            var packageBaseAddress = serviceIndexResource?[HttpFileSystemIndexType];

            if (packageBaseAddress != null &&
                packageBaseAddress.Count > 0)
            {
                resource = new HttpFileSystemBasedFindPackageByIdResource(packageBaseAddress);
            }

            return(Tuple.Create(resource != null, resource));
        }
        public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token)
        {
            INuGetResource resource = null;

            var feedType = await source.GetFeedType(token);

            // Default to v3 if the type is unknown
            if (feedType == FeedType.FileSystemV3 ||
                feedType == FeedType.FileSystemUnknown)
            {
                resource = new LocalV3FindPackageByIdResource(source.PackageSource);
            }

            return(Tuple.Create(resource != null, resource));
        }
示例#12
0
        public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository sourceRepository, CancellationToken token)
        {
            INuGetResource resource = null;

            if (sourceRepository.PackageSource.IsHttp
                &&
                !sourceRepository.PackageSource.Source.EndsWith("json", StringComparison.OrdinalIgnoreCase))
            {
                var httpSourceResource = await sourceRepository.GetResourceAsync <HttpSourceResource>(token);

                resource = new RemoteV2FindPackageByIdResource(
                    sourceRepository.PackageSource,
                    httpSourceResource.HttpSource);
            }

            return(Tuple.Create(resource != null, resource));
        }
示例#13
0
        public override Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token)
        {
            INuGetResource resource = null;

            Uri uri = source.PackageSource.TrySourceAsUri;

            if (uri == null || uri.IsFile)
            {
                if (!LocalV2FindPackageByIdResource.GetNupkgFiles(source.PackageSource.Source, id: string.Empty).Any())
                {
                    return(Task.FromResult(Tuple.Create(false, resource)));
                }

                resource = new LocalV2FindPackageByIdResource(source.PackageSource, _packageInfoCache);
                return(Task.FromResult(Tuple.Create(true, resource)));
            }

            return(Task.FromResult(Tuple.Create(false, resource)));
        }
        public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository sourceRepository, CancellationToken token)
        {
            INuGetResource resource = null;

            var serviceIndexResource = await sourceRepository.GetResourceAsync <ServiceIndexResourceV3>();

            if (serviceIndexResource != null)
            {
                //Repository signature information init
                var repositorySignatureResource = await sourceRepository.GetResourceAsync <RepositorySignatureResource>(token);

                repositorySignatureResource?.UpdateRepositorySignatureInfo();
                var httpSourceResource = await sourceRepository.GetResourceAsync <HttpSourceResource>(token);

                resource = new RemoteV3FindPackageByIdResource(
                    sourceRepository,
                    httpSourceResource.HttpSource);
            }

            return(Tuple.Create(resource != null, resource));
        }
        public override Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token)
        {
            INuGetResource resource = null;

            Uri uri = source.PackageSource.TrySourceAsUri;

            if (uri == null || uri.IsFile)
            {
                if (Directory.Exists(source.PackageSource.Source)
                    &&
                    Directory.EnumerateFiles(source.PackageSource.Source, "*.nupkg").Any())
                {
                    return(Task.FromResult(Tuple.Create(false, resource)));
                }

                resource = new LocalV3FindPackageByIdResource(source.PackageSource);
                return(Task.FromResult(Tuple.Create(true, resource)));
            }

            return(Task.FromResult(Tuple.Create(false, resource)));
        }
示例#16
0
        /// <summary>
        /// Returns a resource from the SourceRepository if it exists.
        /// </summary>
        /// <typeparam name="T">Expected resource type</typeparam>
        /// <returns>Null if the resource does not exist</returns>
        public virtual async Task <T> GetResource <T>()
        {
            Type           resourceType = typeof(T);
            INuGetResource resource     = null;

            Lazy <INuGetResourceProvider, INuGetResourceProviderMetadata>[] possible = null;

            if (_providerCache.TryGetValue(resourceType, out possible))
            {
                foreach (var provider in possible)
                {
                    resource = await provider.Value.Create(this);

                    if (resource != null)
                    {
                        // found
                        break;
                    }
                }
            }

            return(resource == null ? default(T) : (T)resource);
        }
        public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository sourceRepository, CancellationToken token)
        {
            INuGetResource resource             = null;
            var            serviceIndexResource = await sourceRepository.GetResourceAsync <ServiceIndexResourceV3>();

            var packageBaseAddress = serviceIndexResource?.GetServiceEntryUris(ServiceTypes.PackageBaseAddress);

            if (packageBaseAddress != null &&
                packageBaseAddress.Count > 0)
            {
                //Repository signature information init
                var repositorySignatureResource = await sourceRepository.GetResourceAsync <RepositorySignatureResource>(token);

                repositorySignatureResource?.UpdateRepositorySignatureInfo();

                var httpSourceResource = await sourceRepository.GetResourceAsync <HttpSourceResource>(token);

                resource = new HttpFileSystemBasedFindPackageByIdResource(
                    packageBaseAddress,
                    httpSourceResource.HttpSource);
            }

            return(Tuple.Create(resource != null, resource));
        }
示例#18
0
 internal StubNuGetResourceProvider(INuGetResource resource) : base(resource.GetType().BaseType) => _resource = resource;