private bool UpdateIndexTags(SoftwareIdentity indexJsonTag, SoftwareIdentity indexXmlTag, List <AddedTagResult> addedTags, List <UpdatedTagResult> updatedTags, List <DeleteTagResult> deleteTags) { var any = false; foreach (var added in addedTags) { indexJsonTag.AddLink(added.NewSourceUris.JsonUri, "package"); indexXmlTag.AddLink(added.NewSourceUris.XmlUri, "package"); any = true; } foreach (var update in updatedTags) { indexJsonTag.RemoveLink(update.OldSourceUris.JsonUri); indexXmlTag.RemoveLink(update.OldSourceUris.XmlUri); indexJsonTag.AddLink(update.NewSourceUris.JsonUri, "package"); indexXmlTag.AddLink(update.NewSourceUris.XmlUri, "package"); any = true; } foreach (var uri in deleteTags) { indexJsonTag.RemoveLink(uri.DeleteSourceUris.JsonUri); indexXmlTag.RemoveLink(uri.DeleteSourceUris.XmlUri); any = true; } return(any); }
public void Links() { using (CaptureConsole) { var swid = new SoftwareIdentity(); // add some data var link = swid.AddLink(new Uri("http://foo.com"), "homepage"); var link2 = swid.AddLink(new Uri("swid:/somepackage-v1.0"), "dependency"); link2.Artifact = "somepkg"; link2.Media = "Windows"; link2.MediaType = "text/none"; link2.Ownership = "abandon"; link2.Use = "required"; var link3 = swid.AddLink(new Uri("http://foo.com/somepackage.msi"), "package"); link3.Artifact = "somepkg"; link3.Media = "Windows"; link3.MediaType = "binary/package"; link3.Use = "required"; // to xml var xml = XDocument.Parse(swid.SwidTagText); Console.WriteLine("SWID: {0} ", swid.SwidTagText); // assertions Assert.Equal(3, swid.Links.Count()); Assert.Equal("http://foo.com/", link.HRef.ToString()); Assert.Equal("homepage", link.Relationship); Assert.Equal(2, link.Attributes.Count); Assert.Equal(link3.Artifact, link2.Artifact); // some xml-based assertions: Assert.Equal("http://foo.com/", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[1]//@href").Value); Assert.Equal("swid:/somepackage-v1.0", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@href").Value); Assert.Equal("somepkg", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@artifact").Value); Assert.Equal("Windows", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@media").Value); Assert.Equal("text/none", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@type").Value); Assert.Equal("abandon", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@ownership").Value); Assert.Equal("required", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@use").Value); } }
public bool YieldLink(string parentFastPath, string referenceUri, string relationship, string mediaType, string ownership, string use, string appliesToMedia, string artifact) { if (_currentSoftwareIdentity == null || parentFastPath != _currentSoftwareIdentity.FastPackageReference) { Console.WriteLine("TEMPORARY: SHOULD NOT GET HERE [YieldSoftwareMetadata] ================================================"); } if (_currentSoftwareIdentity != null) { _currentSoftwareIdentity.AddLink(referenceUri, relationship, mediaType, ownership, use, appliesToMedia, artifact); } return(Continue); }
private static IEnumerable <RedirectEntity> UpdateInstallationMediaLinksInSoftwareIdentityAndReturnWithRedirects(string tagPartitionKey, string tagRowKey, SoftwareIdentity swidtag) { foreach (var installationLink in swidtag.Links.Where(l => l.Relationship == FearTheCowboy.Iso19770.Schema.Relationship.InstallationMedia)) { var redirect = new RedirectEntity(tagPartitionKey, tagRowKey, installationLink.HRef.AbsoluteUri, installationLink.MediaType, installationLink.Media, null); swidtag.RemoveLink(installationLink.HRef); var redirectUri = new Uri(redirect.RedirectUri); swidtag.AddLink(redirectUri, FearTheCowboy.Iso19770.Schema.Relationship.InstallationMedia); yield return(redirect); } }
private async Task UpdateTagIndex(IEnumerable <TagEntity> tags, DateTime now) { var tagContainerName = this.TagBlobContainer.Name; var tagsByChannel = tags.GroupBy(t => t.Channel); var version = now.ToString("yyyy.MMdd.HHmm.ss"); foreach (var tagsInChannel in tagsByChannel) { var channel = tagsInChannel.Key; var tagId = channel.Length > 1 ? $"http://www.appsyndication.com/{channel}/tags/?v{version}" : $"http://www.appsyndication.com/tags/?v{version}"; var swidtagJ = new SoftwareIdentity(); swidtagJ.Name = "AppSyndication Index" + (channel.Length > 1 ? " for Channel: " + channel.Substring(1) : String.Empty); swidtagJ.TagId = tagId + "&format=json"; swidtagJ.Version = version; var swidtagX = new SoftwareIdentity(); swidtagX.Name = "AppSyndication Index" + (channel.Length > 1 ? " for Channel: " + channel.Substring(1) : String.Empty); swidtagX.TagId = tagId + "&format=xml"; swidtagX.Version = version; foreach (var tag in tagsInChannel.Where(t => t.Primary)) { var uriJ = new Uri(tag.JsonBlobName, UriKind.Relative); var l = swidtagJ.AddLink(uriJ, "package"); l.Name = tag.Name; l.Version = tag.Version; l.Media = tag.Media; var uriX = new Uri(tag.XmlBlobName, UriKind.Relative); l = swidtagX.AddLink(uriX, "package"); l.Name = tag.Name; l.Version = tag.Version; l.Media = tag.Media; } await this.WriteIndexTags(channel, swidtagJ, swidtagX); } }
public void Links() { using (CaptureConsole) { var swid = new SoftwareIdentity(); // add some data var link = swid.AddLink(new Uri("http://foo.com"), "homepage"); var link2 = swid.AddLink(new Uri("swid:/somepackage-v1.0"), "dependency"); link2.Artifact = "somepkg"; link2.Media = "Windows"; link2.MediaType = "text/none"; link2.Ownership = "abandon"; link2.Use = "required"; var link3 = swid.AddLink(new Uri("http://foo.com/somepackage.msi"), "package"); link3.Artifact = "somepkg"; link3.Media = "Windows"; link3.MediaType = "binary/package"; link3.Use = "required"; // to xml var xml = XDocument.Parse(swid.SwidTagText); Console.WriteLine("SWID: {0} ", swid.SwidTagText); // assertions Assert.Equal(3, swid.Links.Count()); Assert.Equal("http://foo.com/", link.HRef.ToString()); Assert.Equal("homepage", link.Relationship); Assert.Equal(2, link.Attributes.Count); Assert.Equal(link3.Artifact, link2.Artifact); // some xml-based assertions: Assert.Equal("http://foo.com/", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[1]//@href").Value); Assert.Equal("swid:/somepackage-v1.0", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@href").Value); Assert.Equal("somepkg", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@artifact").Value); Assert.Equal("Windows", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@media").Value); Assert.Equal("text/none", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@type").Value); Assert.Equal("abandon", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@ownership").Value); Assert.Equal("required", xml.XPathToAttribute("/swid:SoftwareIdentity/swid:Link[2]/@use").Value); } }