public Facts() { Options = new Mock <IOptionsSnapshot <Catalog2RegistrationConfiguration> >(); Config = new Catalog2RegistrationConfiguration { LegacyBaseUrl = "https://example/reg/", GzippedBaseUrl = "https://example/reg-gz/", SemVer2BaseUrl = "https://example/reg-gz-semver2/", GalleryBaseUrl = "https://example-gallery/", FlatContainerBaseUrl = "https://example/fc/", }; Options.Setup(x => x.Value).Returns(() => Config); LeafItem = new RegistrationLeafItem(); Page = new RegistrationPage(); Index = new RegistrationIndex(); Hive = HiveType.Legacy; Id = V3Data.PackageId; PackageDetails = new PackageDetailsCatalogLeaf { PackageVersion = V3Data.NormalizedVersion, }; Commit = new CatalogCommit(V3Data.CommitId, V3Data.CommitTimestamp); SerializerSettings = NuGetJsonSerialization.Settings; SerializerSettings.Formatting = Formatting.Indented; }
public RegistrationLeaf NewLeaf(RegistrationLeafItem leafItem) { return(new RegistrationLeaf { Url = leafItem.Url, Types = JsonLdConstants.RegistrationLeafTypes, CatalogEntry = leafItem.CatalogEntry.Url, Listed = leafItem.CatalogEntry.Listed, PackageContent = leafItem.PackageContent, Published = leafItem.CatalogEntry.Published, Registration = leafItem.Registration, Context = JsonLdConstants.RegistrationLeafContext, }); }
public void UpdateLeafItem(RegistrationLeafItem leafItem, HiveType hive, string id, PackageDetailsCatalogLeaf packageDetails) { var parsedVersion = packageDetails.ParsePackageVersion(); leafItem.Url = _urlBuilder.GetLeafUrl(hive, id, parsedVersion); leafItem.Type = JsonLdConstants.RegistrationLeafItemType; leafItem.PackageContent = GetPackageContentUrl(id, packageDetails); leafItem.Registration = _urlBuilder.GetIndexUrl(hive, id); if (leafItem.CatalogEntry == null) { leafItem.CatalogEntry = new Protocol.Registration.RegistrationCatalogEntry(); } UpdateCatalogEntry(hive, id, leafItem.CatalogEntry, packageDetails, parsedVersion); }
private void UpdateLeafItemUrls(RegistrationLeafItem leafItem, HiveType fromHive, HiveType toHive) { leafItem.Url = _urlBuilder.ConvertHive(fromHive, toHive, leafItem.Url); leafItem.Registration = _urlBuilder.ConvertHive(fromHive, toHive, leafItem.Registration); if (leafItem.CatalogEntry.DependencyGroups != null) { foreach (var dependencyGroup in leafItem.CatalogEntry.DependencyGroups) { if (dependencyGroup.Dependencies == null) { continue; } foreach (var dependency in dependencyGroup.Dependencies) { dependency.Registration = _urlBuilder.ConvertHive(fromHive, toHive, dependency.Registration); } } } }
public static LeafInfo Existing(RegistrationLeafItem leafItem) { return(new LeafInfo( NuGetVersion.Parse(leafItem.CatalogEntry.Version), leafItem)); }
private LeafInfo(NuGetVersion version, RegistrationLeafItem leafItem) { Version = version ?? throw new ArgumentNullException(nameof(version)); LeafItem = leafItem ?? throw new ArgumentNullException(nameof(leafItem)); }
protected virtual Task <HttpResponseMessage> GetPackageRegistrationResponse(string uri) { const string uriPrefix = "https://nuget.test/registration/"; const string uriSuffix = "/index.json"; if (!uri.StartsWith(uriPrefix) || !uri.EndsWith(uriSuffix)) { return(Task.FromResult(new HttpResponseMessage(System.Net.HttpStatusCode.NotFound))); } var packageId = uri.Substring(0, uri.Length - uriSuffix.Length).Substring(uriPrefix.Length); if (!_packages.TryGetValue(packageId, out Dictionary <string, string> versions)) { return(Task.FromResult(new HttpResponseMessage(System.Net.HttpStatusCode.NotFound))); } // versions: key = version, value = full path to nupkg var registrationPage = new RegistrationPage() { Items = new List <RegistrationLeafItem>(), Lower = versions.Select(v => NuGetVersion.Parse(v.Key)).Min().ToNormalizedString(), Upper = versions.Select(v => NuGetVersion.Parse(v.Key)).Max().ToNormalizedString(), }; foreach (var version in versions.OrderBy(v => NuGetVersion.Parse(v.Key))) { using var packageArchiveReader = new PackageArchiveReader(version.Value); var nuspecReader = packageArchiveReader.NuspecReader; var packageMetadata = new PackageSearchMetadataRegistration(); SetPrivateProperty(packageMetadata, nameof(packageMetadata.PackageId), nuspecReader.GetId()); SetPrivateProperty(packageMetadata, nameof(packageMetadata.Version), nuspecReader.GetVersion()); var contentUrl = new Uri("https://nuget.test/flatcontainer/" + packageId + "/" + packageMetadata.Version.ToNormalizedString().ToLowerInvariant()); var leafItem = new RegistrationLeafItem() { CatalogEntry = packageMetadata, PackageContent = contentUrl }; registrationPage.Items.Add(leafItem); } var registrationIndex = new RegistrationIndex() { Items = new List <RegistrationPage>() { registrationPage } }; string json; using (var stringWriter = new StringWriter()) { JsonExtensions.JsonObjectSerializer.Serialize(stringWriter, registrationIndex); json = stringWriter.ToString(); } return(Task.FromResult(new HttpResponseMessage() { Content = new StringContent(json) })); }