/// <summary> /// Sets a secret in the specified vault. /// </summary> /// <param name="vault">The URL for the vault containing the secrets.</param> /// <param name="secretName">The name the secret in the given vault.</param> /// <param name="value">The value of the secret.</param> /// <returns>A response message containing the updated secret</returns> public async Task <Secret> SetSecretAsync(string vault, string secretName, SecureString value) { if (string.IsNullOrEmpty(vault)) { throw new ArgumentNullException("vaultAddress"); } if (string.IsNullOrEmpty(secretName)) { throw new ArgumentNullException("secretName"); } var identifier = new SecretIdentifier(vault, secretName); var request = new SecretRequestMessage() { Value = value }; using (var response = await this.SendAsync <SecretRequestMessage>("PUT", CreateSecretUrl(identifier.BaseIdentifier), request).ConfigureAwait(false)) { await EnsureSuccessStatusCode(response).ConfigureAwait(false); var putResponse = await DeserializeAsync <SecretResponseMessage>(response).ConfigureAwait(false); return(new Secret() { Id = putResponse.Id, SecureValue = putResponse.Value }); } }
/// <summary> /// Deletes a secret from the specified vault. /// </summary> /// <param name="vault">The URL for the vault containing the secrets.</param> /// <param name="secretName">The name the secret in the given vault.</param> /// <returns>The deleted secret</returns> public async Task <Secret> DeleteSecretAsync(string vault, string secretName) { if (string.IsNullOrEmpty(vault)) { throw new ArgumentNullException("vaultAddress"); } if (string.IsNullOrEmpty(secretName)) { throw new ArgumentNullException("secretName"); } var identifier = new SecretIdentifier(vault, secretName); using (var response = await this.SendAsync <HttpRequestMessage>("DELETE", CreateSecretUrl(identifier.BaseIdentifier)).ConfigureAwait(false)) { await EnsureSuccessStatusCode(response).ConfigureAwait(false); return(await DeserializeAsync <Secret>(response).ConfigureAwait(false)); } }