private void AddChildren(XElement element, SignRequestItem package) { foreach (var child in element.Elements()) { package.AddChild(ReadElement(child)); } }
private SignRequestItem ReadNupkg(XElement element) { var package = SignRequestItem.CreateNugetPackage(GetPath(element), GetCertificate(element)); AddChildren(element, package); return(package); }
private SignRequestItem ReadZip(XElement element) { var zip = SignRequestItem.CreateZip(GetPath(element)); AddChildren(element, zip); return(zip); }
private SignRequestItem ReadVsix(XElement element) { var vsix = SignRequestItem.CreateVsix(GetPath(element), GetCertificate(element)); AddChildren(element, vsix); return(vsix); }
/// <summary> /// Add a child type. /// </summary> /// <param name="item"></param> public void AddChild(SignRequestItem item) { if (!CanContainChildren) { throw new InvalidOperationException("Cannot add a child to items which do not allow nested files"); } _children.Add(item); }
private static void AddContainer(XElement parent, SignRequestItem item, string elementType) { var container = new XElement(elementType, new XAttribute(XmlElementNames.Path, item.Path)); if (!string.IsNullOrEmpty(item.Certificate)) { container.Add(new XAttribute(XmlElementNames.Certificate, item.Certificate)); } parent.Add(container); foreach (var i in item.Children) { AddRequest(container, i); } }
private static void AddRequest(XElement parent, SignRequestItem item) { var path = new XAttribute(XmlElementNames.Path, item.Path); switch (item.ItemType) { case SignRequestItemType.Zip: AddContainer(parent, item, XmlElementNames.Zip); break; case SignRequestItemType.Nupkg: AddContainer(parent, item, XmlElementNames.Nupkg); break; case SignRequestItemType.Vsix: AddContainer(parent, item, XmlElementNames.Vsix); break; case SignRequestItemType.Exclusion: parent.Add(new XElement(XmlElementNames.ExcludedFile, path)); break; case SignRequestItemType.File: var file = new XElement(XmlElementNames.File, path); if (!string.IsNullOrEmpty(item.Certificate)) { file.Add(new XAttribute(XmlElementNames.Certificate, item.Certificate)); } if (!string.IsNullOrEmpty(item.StrongName)) { file.Add(new XAttribute(XmlElementNames.StrongName, item.StrongName)); } parent.Add(file); break; default: throw new InvalidOperationException("Unrecognized sign request item"); } }
private static SignRequestItem ReadFile(XElement element) => SignRequestItem.CreateFile(GetPath(element), GetCertificate(element), GetStrongName(element));
private static SignRequestItem ReadExclusion(XElement element) => SignRequestItem.CreateExclusion(GetPath(element));