Ejemplo n.º 1
0
        private ServiceIndex CreateServiceIndex()
        {
            string baseUrl = this.Configuration.GetValue <string>("PublicBaseUrl");

            var resources = new ServiceIndexResource[]
            {
                new ServiceIndexResource()
                {
                    Id = baseUrl + "/query", Type = ServiceIndexResourceType.SearchQueryService
                },
                new ServiceIndexResource()
                {
                    Id = baseUrl + "/registration/", Type = ServiceIndexResourceType.RegistrationBaseUrl
                },
                new ServiceIndexResource()
                {
                    Id = baseUrl + "/v3-flatcontainer/", Type = ServiceIndexResourceType.PackageBaseAddress, Comment = "Base URL of where NuGet packages are stored, in the format https://api.nuget.org/v3-flatcontainer/{id-lower}/{version-lower}/{id-lower}.{version-lower}.nupkg"
                },
                new ServiceIndexResource()
                {
                    Id = baseUrl + "/api/v2", Type = ServiceIndexResourceType.PackagePublish
                }
            };
            var serviceIndex = new ServiceIndex()
            {
                Version   = "3.0.0-beta.1",
                Resources = resources
            };

            return(serviceIndex);
        }
Ejemplo n.º 2
0
 public static void Reset()
 {
     lock (_Locker)
     {
         ServiceIndex.Clear();
     }
 }
Ejemplo n.º 3
0
 public static void AddServece(IService s)
 {
     lock (_Locker)
     {
         ServiceIndex.Add(s.Name, s);
     }
 }
        public override void UnregisterEvents(Object obj1)
        {
            ServiceIndex obj = obj1 as ServiceIndex;

            obj.LocalNodeServicesChanged -= LocalNodeServicesChanged_Handler;
            base.UnregisterEvents(obj1);
        }
Ejemplo n.º 5
0
        // https://api.nuget.org/v3/catalog0/page1532.json
        // Found: csharp2colorized 1.0.2-beta3
        // csharp2colorized 1.0.0-beta1

        static async Task MainAsync()
        {
            var index = await ServiceIndex.CreateAsync();

            var catalog = await index.GetCatalogAsync();

            foreach (var catalogItem in catalog.Items)
            {
                var page = await catalogItem.GetCatalogPageAsync();

                Console.WriteLine(DateTimeOffset.Now + ": Processing " + page.Items.Count);
                bool found = false;
                foreach (var pageItem in page.Items)
                {
                    // Ensure the package supports netstandard.
                    var package = await pageItem.GetPackageAsync();

                    var frameworks = TryGetSupportedFrameworks(package);
                    if (frameworks.Any(x => new FrameworkName(x.DotNetFrameworkName).IsNetStandard()))
                    {
                        Console.WriteLine("Found: " + pageItem.Id + " " + pageItem.Version);
                        found = true;
                    }
                }
                if (found)
                {
                    return;
                }
            }
        }
 public override void InitPipeServers(object o)
 {
     if (this.rr_InitPipeServersRun)
     {
         return;
     }
     this.rr_InitPipeServersRun = true;
     ServiceIndex castobj = (ServiceIndex)o;
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MongoNuGetPackageIndex"/> class
        /// </summary>
        /// <param name="serviceIndex">The service index instance to be used</param>
        /// <param name="logger">The logger instance to be used</param>
        public MongoNuGetPackageIndex(ServiceIndex serviceIndex, ILogger <MongoNuGetPackageIndex> logger)
            : base(serviceIndex, logger)
        {
            if (serviceIndex == null)
            {
                throw new ArgumentNullException(nameof(serviceIndex));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            this.logger = logger;
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FileNuGetPackageIndex"/> class
        /// </summary>
        /// <param name="serviceIndex">The service index instance to be used to generate package urls</param>
        /// <param name="packageListStorage">The <see cref="IPersistentStorage"/> instance to be used to persist the package list</param>
        /// <param name="logger">The logger instance to be used</param>
        /// <param name="telemetryClient">The telemetry client instance to be used</param>
        public FileNuGetPackageIndex(ServiceIndex serviceIndex, IPersistentStorage packageListStorage, ILogger <FileNuGetPackageIndex> logger, TelemetryClient telemetryClient)
            : base(serviceIndex, logger)
        {
            if (packageListStorage == null)
            {
                throw new ArgumentNullException(nameof(packageListStorage));
            }

            this.packages           = new List <RegistrationResult>();
            this.versions           = new Dictionary <string, List <NuGetPackageVersion> >();
            this.packageListStorage = packageListStorage;
            this.logger             = logger;
            this.telemetryClient    = telemetryClient;
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="InMemoryNuGetPackageIndex"/> class
        /// </summary>
        /// <param name="serviceIndex">The service index instance to be used</param>
        /// <param name="logger">The logger instance to be used</param>
        protected NuGetPackageIndexBase(ServiceIndex serviceIndex, ILogger <NuGetPackageIndexBase> logger)
        {
            if (serviceIndex == null)
            {
                throw new ArgumentNullException(nameof(serviceIndex));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            this.logger = logger;
            this.registrationServiceUrl   = serviceIndex.Resources.First(r => r.Type == ServiceIndexResourceType.RegistrationBaseUrl).Id;
            this.packageContentServiceUrl = serviceIndex.Resources.First(r => r.Type == ServiceIndexResourceType.PackageBaseAddress).Id;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="InMemoryNuGetPackageIndex"/> class
        /// </summary>
        /// <param name="serviceIndex">The service index instance to be used</param>
        /// <param name="logger">The logger instance to be used</param>
        public InMemoryNuGetPackageIndex(ServiceIndex serviceIndex, ILogger <InMemoryNuGetPackageIndex> logger)
            : base(serviceIndex, logger)
        {
            if (serviceIndex == null)
            {
                throw new ArgumentNullException(nameof(serviceIndex));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            this.logger   = logger;
            this.packages = new HashSet <RegistrationResult>();
            this.versions = new Dictionary <string, List <NuGetPackageVersion> >();
        }
        private static async Task <Results> InspectCatalogAsync(PackageTable table, TextWriter log)
        {
            var ignoredDueToPlatform = new List <PackageEntryBase>();
            var result = new Results();
            var index  = await ServiceIndex.CreateAsync();

            var catalog = await index.GetCatalogAsync();

            var bookmarkFound = false;

            // Catalog page 1532 contains the first library that supported netstandard: csharp2colorized 1.0.0-beta1
            for (int i = catalog.Items.Count - 1; i >= 1532; --i)
            {
                var page = await catalog.Items[i].GetCatalogPageAsync();
                foreach (var pageItem in page.Items)
                {
                    // Parse the version.
                    NuGetVersion version;
                    if (!NuGetVersion.TryParse(pageItem.Version, out version))
                    {
                        log.WriteLine("Unable to parse version: " + pageItem.Id + " " + pageItem.Version);
                        continue;
                    }

                    // Generate the key (id + prerelease flag).
                    var lowercasePackageId = pageItem.Id.ToLowerInvariant();
                    var key = lowercasePackageId + (version.IsPrerelease ? "1" : "0");

                    // Check to see if we have a newer in-memory entry already processed for this key.
                    var resultExisting = result.PackagesToProcess.FirstOrDefault(x => x.Key == key);
                    if (resultExisting != null && version <= resultExisting.PackageVersion)
                    {
                        log.WriteLine("Already going to process " + resultExisting.PackageVersion + ": " + pageItem.Id + " " + pageItem.Version);
                        continue;
                    }

                    // Check to see if we have a newer in-memory ignored entry already processed for this key.
                    var ignoredExisting = ignoredDueToPlatform.FirstOrDefault(x => x.Key == key);
                    if (ignoredExisting != null && version <= ignoredExisting.PackageVersion)
                    {
                        log.WriteLine("Already ignored due to platform: " + pageItem.Id + " " + pageItem.Version);
                        continue;
                    }

                    // Look up the existing table entry, if any.
                    var existing = await table.TryGetVersionCommitAsync(pageItem.Id, pageItem.Version);

                    // If the existing table entry is this same exact commit, then we're done.
                    if (existing != null && string.Equals(existing.CommitId, pageItem.CommitId, StringComparison.InvariantCultureIgnoreCase))
                    {
                        log.WriteLine("Already processed: " + pageItem.Id + " " + pageItem.Version + " at " + pageItem.CommitId);
                        bookmarkFound = true;
                        continue;
                    }

                    // If the existing table entry is newer than this one, then skip this one.
                    //  (This can only happen if NuGet packages are published out of order. Which *does* seem to happen!)
                    if (existing?.Version != null && version <= NuGetVersion.Parse(existing.Version))
                    {
                        log.WriteLine("Ignoring due to existing version " + existing.Version + ": " + pageItem.Id + " " + pageItem.Version);
                        continue;
                    }

                    // Ensure the package supports netstandard.
                    var package = await pageItem.GetPackageAsync();

                    var frameworks = package.Metadata().GetSupportedFrameworksWithRef().ToArray();
                    if (!frameworks.Any(x => new FrameworkName(x.DotNetFrameworkName).IsNetStandard()))
                    {
                        log.WriteLine("Ignoring due to platform: " + pageItem.Id + " " + pageItem.Version);
                        if (ignoredExisting != null)
                        {
                            ignoredExisting.PackageVersion = version;
                        }
                        else
                        {
                            ignoredDueToPlatform.Add(new PackageEntryBase(lowercasePackageId, version));
                        }
                        continue;
                    }

                    // Add a process request.
                    log.WriteLine("Will process: " + pageItem.Id + " " + pageItem.Version);
                    result.PackagesToProcess.Add(new PackageEntry(i, pageItem.CommitId, lowercasePackageId, version));
                }

                if (bookmarkFound)
                {
                    return(result);
                }
            }
            return(result);
        }
 public override void InitCallbackServers(object o)
 {
     ServiceIndex castobj = (ServiceIndex)o;
 }
 public ServiceIndex_skel(string p, ServiceIndex o, ServerContext c) : base(p, o, c)
 {
     uncastobj = o;
 }
Ejemplo n.º 14
0
 private void addService(ServiceIndex index, IService service)
 {
     _services[index] = service;
 }