public void XMLEncryptionTest() { X509Certificate2 certificate = RetrieveCertificateFromStore(new X509Store(StoreLocation.CurrentUser), "PnPTestCertificate"); if (certificate == null) { Assert.Inconclusive("Missing certificate with SN=PnPTestCertificate in CurrentUser Certificate Store, so can't test"); } XMLEncryptionTemplateProviderExtension extension = new XMLEncryptionTemplateProviderExtension(); extension.Initialize(certificate); ITemplateProviderExtension[] extensions = new ITemplateProviderExtension[] { extension }; XMLTemplateProvider provider = new XMLFileSystemTemplateProvider( String.Format(@"{0}\..\..\Resources", AppDomain.CurrentDomain.BaseDirectory), "Templates"); var template = provider.GetTemplate("ProvisioningTemplate-2016-05-Sample-01.xml"); template.DisplayName = "Ciphered template"; provider.SaveAs(template, "ProvisioningTemplate-2016-05-Ciphered.xml", extensions); var result = provider.GetTemplate("ProvisioningTemplate-2016-05-Ciphered.xml", extensions); provider.Delete("ProvisioningTemplate-2016-05-Ciphered.xml"); Assert.IsTrue(result.DisplayName == "Ciphered template"); }
internal static ProvisioningTemplate LoadProvisioningTemplateFromFile(String templatePath, String sessionPath, ITemplateProviderExtension[] templateProviderExtensions) { // Prepare the File Connector FileConnectorBase fileConnector; string templateFileName = System.IO.Path.GetFileName(templatePath); // Prepare the template path if (!System.IO.Path.IsPathRooted(templatePath)) { templatePath = System.IO.Path.Combine(sessionPath, templatePath); } var fileInfo = new FileInfo(templatePath); fileConnector = new FileSystemConnector(fileInfo.DirectoryName, ""); ProvisioningTemplate provisioningTemplate; // Load the provisioning template file Stream stream = fileConnector.GetFileStream(templateFileName); var isOpenOfficeFile = ApplyProvisioningTemplate.IsOpenOfficeFile(stream); XMLTemplateProvider provider; if (isOpenOfficeFile) { provider = new XMLOpenXMLTemplateProvider(new OpenXMLConnector(templateFileName, fileConnector)); templateFileName = templateFileName.Substring(0, templateFileName.LastIndexOf(".", StringComparison.Ordinal)) + ".xml"; } else { provider = new XMLFileSystemTemplateProvider(fileConnector.Parameters[FileConnectorBase.CONNECTIONSTRING] + "", ""); } provisioningTemplate = provider.GetTemplate(templateFileName, templateProviderExtensions); provisioningTemplate.Connector = provider.Connector; // Return the result return(provisioningTemplate); }
public override ProvisioningTemplate GetTemplate(string uri, ITemplateProviderExtension[] extensions = null) { return (this.GetTemplate(uri, null, null, extensions)); }
public override void SaveAs(ProvisioningTemplate template, string uri, ITemplateFormatter formatter, ITemplateProviderExtension[] extensions) { if (template == null) { throw new ArgumentNullException("template"); } if (String.IsNullOrEmpty(uri)) { throw new ArgumentException("uri"); } if (formatter == null) { formatter = new XMLPnPSchemaFormatter(); } SaveToConnector(template, uri, formatter, extensions); }
public override void SaveAs(ProvisioningTemplate template, string uri, ITemplateProviderExtension[] extensions) { this.SaveAs(template, uri, null, extensions); }
public override void Save(ProvisioningTemplate template, ITemplateFormatter formatter, ITemplateProviderExtension[] extensions = null) { this.SaveAs(template, this.Uri, formatter, extensions); }
public override void Save(ProvisioningTemplate template, ITemplateProviderExtension[] extensions = null) { this.Save(template, null, extensions); }
public abstract void Save(ProvisioningTemplate template, ITemplateProviderExtension[] extensions);
public abstract ProvisioningTemplate GetTemplate(string uri, ITemplateProviderExtension[] extensions);
protected ProvisioningTemplate PostProcessGetTemplateExtensions(ITemplateProviderExtension[] extensions, ProvisioningTemplate template) { ProvisioningTemplate result = template; // Handle any post-processing extension if (extensions != null && extensions.Length > 0) { foreach (var extension in extensions.Where(e => e.SupportsGetTemplatePostProcessing)) { result = extension.PostProcessGetTemplate(result); } } return (result); }
protected Stream PreProcessGetTemplateExtensions(ITemplateProviderExtension[] extensions, Stream stream) { // Handle any pre-processing extension if (extensions != null && extensions.Length > 0) { foreach (var extension in extensions.Where(e => e.SupportsGetTemplatePreProcessing)) { var temp = new MemoryStream(); stream.Seek(0, SeekOrigin.Begin); stream.CopyTo(temp); temp.Seek(0, SeekOrigin.Begin); stream = extension.PreProcessGetTemplate(temp); stream.Seek(0, SeekOrigin.Begin); } } return (stream); }
/// <summary> /// This method is invoked before calling the formatter to serialize the template /// </summary> /// <param name="extensions">The list of custom extensions</param> /// <param name="template">The template to serialize</param> /// <returns>The template eventually updated by the custom extensions</returns> protected virtual ProvisioningTemplate PreProcessSaveTemplateExtensions(ITemplateProviderExtension[] extensions, ProvisioningTemplate template) { ProvisioningTemplate result = template; // Handle any pre-processing extension during Save if (extensions != null && extensions.Length > 0) { foreach (var extension in extensions.Where(e => e.SupportsSaveTemplatePreProcessing)) { result = extension.PreProcessSaveTemplate(result); } } return (result); }
protected virtual void SaveToConnector(ProvisioningTemplate template, string uri, ITemplateFormatter formatter, ITemplateProviderExtension[] extensions) { if (String.IsNullOrEmpty(template.Id)) { template.Id = Path.GetFileNameWithoutExtension(uri); } template = PreProcessSaveTemplateExtensions(extensions, template); using (var stream = formatter.ToFormattedTemplate(template)) { using (var processedStream = PostProcessSaveTemplateExtensions(extensions, stream)) { this.Connector.SaveFileStream(uri, processedStream); } } if (this.Connector is ICommitableFileConnector) { ((ICommitableFileConnector)this.Connector).Commit(); } }
public abstract void SaveAs(ProvisioningTemplate template, string uri, ITemplateFormatter formatter, ITemplateProviderExtension[] extensions);
public override ProvisioningTemplate GetTemplate(string uri, string identifier, ITemplateFormatter formatter, ITemplateProviderExtension[] extensions = null) { if (String.IsNullOrEmpty(uri)) { throw new ArgumentException("uri"); } if (formatter == null) { formatter = new XMLPnPSchemaFormatter(); formatter.Initialize(this); } // Get the XML document from a File Stream Stream stream = this.Connector.GetFileStream(uri); if (stream == null) { throw new ApplicationException(string.Format(CoreResources.Provisioning_Formatter_Invalid_Template_URI, uri)); } // Handle any pre-processing extension stream = PreProcessGetTemplateExtensions(extensions, stream); //Resolve xml includes if any stream = ResolveXIncludes(stream); // And convert it into a ProvisioningTemplate ProvisioningTemplate provisioningTemplate = formatter.ToProvisioningTemplate(stream, identifier); // Handle any post-processing extension provisioningTemplate = PostProcessGetTemplateExtensions(extensions, provisioningTemplate); // Store the identifier of this template, is needed for latter save operation this.Uri = uri; return (provisioningTemplate); }
public abstract ProvisioningTemplate GetTemplate(string uri, string identifier, ITemplateFormatter formatter, ITemplateProviderExtension[] extensions);