private bool PackageMatchQuery(string query, bool includePrerelease, NuGetPackageSummary package) { if (!includePrerelease && package.IsPrerelease) { return(false); } if (string.IsNullOrEmpty(query)) { return(true); } return(package.Id.Contains(query.ToLower()) || (!string.IsNullOrEmpty(package.Title) && package.Title.Contains(query)) || (!string.IsNullOrEmpty(package.Description) && package.Description.Contains(query)) || (!string.IsNullOrEmpty(package.Tags) && package.Tags.Contains(query))); }
/// <summary> /// Handle the logic to index a package from the <paramref name="nuspecReader"/> and store information in the <paramref name="registrationIndex"/> if provided or create a new entry /// </summary> /// <param name="nuspecReader">The nuspecReader to be used to read package information</param> /// <param name="registrationIndex">The <see cref="RegistrationResult"/> instance which should be used to create new version if package id already exists</param> /// <returns>The <paramref name="registrationIndex"/> instance of provided or a new one</returns> protected virtual async Task <RegistrationResult> IndexPackageCore(INuspecCoreReader nuspecReader, RegistrationResult registrationIndex) { bool isNewPackageId = false; var metadata = nuspecReader.GetMetadata(); string version = nuspecReader.GetVersion().ToNormalizedString(); string packageRegistrationBaseUrl = $"{registrationServiceUrl + nuspecReader.GetId()}/index.json"; if (registrationIndex == null) { registrationIndex = new RegistrationResult() { Id = packageRegistrationBaseUrl }; isNewPackageId = true; } RegistrationPage registrationPage = registrationIndex.Items.FirstOrDefault(); if (registrationPage == null) { registrationPage = new RegistrationPage(); registrationIndex.Items.Add(registrationPage); } bool versionExists = this.IsVersionAlreadyExisting(nuspecReader.GetId(), version); if (versionExists) { throw new PackageVersionAlreadyExistsException($"The version {version} already exists for package {nuspecReader.GetId()}"); } var packageSummary = new NuGetPackageSummary() { PackageMetadataUrl = registrationServiceUrl + nuspecReader.GetId() + "/index.json", Id = nuspecReader.GetId(), Version = nuspecReader.GetVersion().ToFullString() }; await this.AddNewVersion(packageSummary.Id, new NuGetPackageVersion() { PackageMetadataUrl = registrationServiceUrl + nuspecReader.GetId() + "/" + version, Version = version, Downloads = 0 }); foreach (var m in metadata) { if ("title".Equals(m.Key, StringComparison.InvariantCultureIgnoreCase)) { packageSummary.Title = m.Value; } else if ("description".Equals(m.Key, StringComparison.InvariantCultureIgnoreCase)) { packageSummary.Description = m.Value; } else if ("authors".Equals(m.Key, StringComparison.InvariantCultureIgnoreCase) && !string.IsNullOrEmpty(m.Value)) { packageSummary.Authors = m.Value.Split(","); } else if ("owners".Equals(m.Key, StringComparison.InvariantCultureIgnoreCase) && !string.IsNullOrEmpty(m.Value)) { packageSummary.Owners = m.Value.Split(","); } else if ("requireLicenseAcceptance".Equals(m.Key, StringComparison.InvariantCultureIgnoreCase)) { packageSummary.RequireLicenseAcceptance = bool.Parse(m.Value); } else if ("licenseUrl".Equals(m.Key, StringComparison.InvariantCultureIgnoreCase)) { packageSummary.LicenseUrl = m.Value; } else if ("projectUrl".Equals(m.Key, StringComparison.InvariantCultureIgnoreCase)) { packageSummary.ProjectUrl = m.Value; } else if ("iconUrl".Equals(m.Key, StringComparison.InvariantCultureIgnoreCase)) { packageSummary.IconUrl = m.Value; } else if ("copyright".Equals(m.Key, StringComparison.InvariantCultureIgnoreCase)) { packageSummary.Copyright = m.Value; } else if ("tags".Equals(m.Key, StringComparison.InvariantCultureIgnoreCase)) { packageSummary.Tags = m.Value; } } RegistrationLeaf registrationLeaf = new RegistrationLeaf(); registrationLeaf.CatalogEntry = packageSummary; registrationLeaf.PackageContent = $"{this.packageContentServiceUrl}{nuspecReader.GetId()}/{version}/{nuspecReader.GetId()}.{version}.nupkg"; var versions = await this.GetAllVersions(packageSummary.Id).ConfigureAwait(false); string lowerVersion = versions.First(); string upperVersion = versions.Last(); registrationPage.Id = $"{registrationServiceUrl + nuspecReader.GetId()}/index.json/#page/{lowerVersion}/{upperVersion}"; registrationPage.Items.Add(registrationLeaf); registrationPage.Lower = lowerVersion; registrationPage.Upper = upperVersion; if (isNewPackageId) { await this.AddRegistrationResult(registrationIndex).ConfigureAwait(false); } return(registrationIndex); }