public static DeployStylesheet ( [ path, [ name ) : void | ||
path | [ | The directory to write the stylesheet files to. |
name | [ | The name of the stylesheet to deploy. Must be "feed" or "catalog". |
리턴 | void |
/// <summary> /// Saves <see cref="Catalog"/> to an XML file, adds the default stylesheet and sign it it with <see cref="SecretKey"/> (if specified). /// </summary> /// <remarks>Writing and signing the catalog file are performed as an atomic operation (i.e. if signing fails an existing file remains unchanged).</remarks> /// <param name="path">The file to save in.</param> /// <param name="passphrase">The passphrase to use to unlock the secret key; can be <c>null</c> if <see cref="SecretKey"/> is <c>null</c>.</param> /// <exception cref="IOException">A problem occurred while writing the file.</exception> /// <exception cref="UnauthorizedAccessException">Write access to the file is not permitted.</exception> /// <exception cref="KeyNotFoundException">The specified <see cref="SecretKey"/> could not be found on the system.</exception> /// <exception cref="WrongPassphraseException"><paramref name="passphrase"/> was incorrect.</exception> public void Save(string path, string?passphrase = null) { #region Sanity checks if (string.IsNullOrEmpty(path)) { throw new ArgumentNullException(nameof(path)); } #endregion if (SecretKey == null) { Catalog.SaveXml(path); return; } using (var stream = new MemoryStream()) { Catalog.SaveXml(stream, stylesheet: @"catalog.xsl"); stream.Position = 0; FeedUtils.SignFeed(stream, SecretKey, passphrase, _openPgp); stream.CopyToFile(path); } string directory = Path.GetDirectoryName(path); _openPgp.DeployPublicKey(SecretKey, directory); FeedUtils.DeployStylesheet(directory, @"catalog"); }
/// <summary> /// Saves <see cref="Catalog"/> to an XML file, adds the default stylesheet and sign it it with <see cref="SecretKey"/> (if specified). /// </summary> /// <remarks>Writing and signing the catalog file are performed as an atomic operation (i.e. if signing fails an existing file remains unchanged).</remarks> /// <param name="path">The file to save in.</param> /// <param name="passphrase">The passphrase to use to unlock the secret key; can be <see langword="null"/> if <see cref="SecretKey"/> is <see langword="null"/>.</param> /// <exception cref="IOException">A problem occurs while writing the file.</exception> /// <exception cref="UnauthorizedAccessException">Write access to the file is not permitted.</exception> /// <exception cref="WrongPassphraseException">Passphrase was incorrect.</exception> public void Save([NotNull] string path, [CanBeNull] string passphrase = null) { #region Sanity checks if (string.IsNullOrEmpty(path)) { throw new ArgumentNullException("path"); } #endregion if (SecretKey == null) { Catalog.SaveXml(path); return; } var openPgp = OpenPgpFactory.CreateDefault(); using (var stream = new MemoryStream()) { Catalog.SaveXml(stream, stylesheet: @"catalog.xsl"); stream.Position = 0; FeedUtils.SignFeed(stream, SecretKey, passphrase, openPgp); stream.WriteTo(path); } string directory = Path.GetDirectoryName(path); if (directory != null) { FeedUtils.DeployPublicKey(directory, SecretKey, openPgp); FeedUtils.DeployStylesheet(directory, @"catalog"); } }