/// <summary> /// Initializes a new instance of the <see cref="ManifestSearchResponse"/> class. /// </summary> /// <param name="packageIdentifier">Package Identifier.</param> /// <param name="packageName">Package Name.</param> /// <param name="publisher">Publisher.</param> /// <param name="packageVersion">Package Version.</param> /// <param name="channel">Channel.</param> /// <param name="packageFamilyName">Package Family Name.</param> /// <param name="productCode">Product Code.</param> public ManifestSearchResponse( string packageIdentifier = null, string packageName = null, string publisher = null, string packageVersion = null, string channel = null, string packageFamilyName = null, string productCode = null) { PackageFamilyNames pfn = null; if (!string.IsNullOrEmpty(packageFamilyName)) { pfn = new PackageFamilyNames { packageName, }; } ProductCodes pc = null; if (!string.IsNullOrEmpty(productCode)) { pc = new ProductCodes() { productCode, }; } this.PackageIdentifier = packageIdentifier; this.PackageName = packageName; this.Publisher = publisher; this.Versions = new SearchVersions() { new SearchVersion() { PackageVersion = packageVersion, Channel = channel, PackageFamilyNames = pfn, ProductCodes = pc, }, }; }
/// <summary> /// This gets. /// </summary> /// <param name="manifest">Package Manifest.</param> /// <returns>Manifest Search Responses.</returns> public static List <ManifestSearchResponse> GetSearchVersions(PackageManifest manifest) { List <ManifestSearchResponse> response = new List <ManifestSearchResponse>(); if (manifest == null) { return(response); } if (manifest.Versions == null) { response.Add(new ManifestSearchResponse(manifest.PackageIdentifier)); return(response); } foreach (VersionExtended extended in manifest.Versions) { if (extended.Installers == null) { response.Add(new ManifestSearchResponse( packageIdentifier: manifest.PackageIdentifier, packageName: extended.DefaultLocale.PackageName, publisher: extended.DefaultLocale.Publisher, packageVersion: extended.PackageVersion, channel: extended.Channel)); } else { PackageFamilyNames packageFamilyNames = new PackageFamilyNames(); ProductCodes productCodes = new ProductCodes(); foreach (Installer installer in extended.Installers) { if (!string.IsNullOrEmpty(installer.PackageFamilyName) && !packageFamilyNames.Contains(installer.PackageFamilyName)) { packageFamilyNames.Add(installer.PackageFamilyName); } if (!string.IsNullOrEmpty(installer.ProductCode) && !productCodes.Contains(installer.ProductCode)) { productCodes.Add(installer.ProductCode); } } SearchVersion searchVersion = new SearchVersion { PackageVersion = extended.PackageVersion, Channel = extended.Channel, PackageFamilyNames = packageFamilyNames.Count > 0 ? packageFamilyNames : null, ProductCodes = productCodes.Count > 0 ? productCodes : null, }; response.Add(new ManifestSearchResponse( packageIdentifier: manifest.PackageIdentifier, packageName: extended.DefaultLocale.PackageName, publisher: extended.DefaultLocale.Publisher, searchVersion: searchVersion)); } } return(response); }