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); }
public static void Reset() { lock (_Locker) { ServiceIndex.Clear(); } }
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); }
// 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; }
/// <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; }
/// <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; }
/// <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; }
private void addService(ServiceIndex index, IService service) { _services[index] = service; }