private async Task <KeyVaultSecret> GetValueAsync(string key) { if (_kvClient == null) { return(null); } VersionedKey vKey = new VersionedKey(key); // If we successfully preloaded key names, see if the requested key is valid before making network request. if (!_preload || _preloadFailed || _allKeys.Contains(vKey.Key, StringComparer.OrdinalIgnoreCase)) { try { string version = _version ?? vKey.Version; if (version != null) { KeyVaultSecret versionedSecret = await _kvClient.GetSecretAsync(vKey.Key, version); if (versionedSecret != null && versionedSecret.Properties.Enabled.GetValueOrDefault()) { return(versionedSecret); } return(null); } KeyVaultSecret secret = await _kvClient.GetSecretAsync(vKey.Key); if (secret != null && secret.Properties.Enabled.GetValueOrDefault()) { return(secret); } return(null); } catch (RequestFailedException rfex) { // Simply return null if the secret wasn't found //if (rfex.ErrorCode == "SecretNotFound" || rfex.ErrorCode == "BadParameter") // .ErrorCode doesn't get populated. :/ // "SecretNotFound" == 404 // "BadParameter" = 400 if (rfex.Status == 404 || rfex.Status == 400) { return(null); } // If there was a permission issue or some other error, let the exception bubble // FYI: kve.Body.Error.Code == "Forbidden" :: No Rights, or secret is disabled. if (!Optional) { throw; } } } return(null); }
private async Task <SecretBundle> GetValueAsync(string key) { if (_kvClient == null) { return(null); } VersionedKey vKey = new VersionedKey(key); if (!_preload || _preloadFailed || _allKeys.Contains(vKey.Key, StringComparer.OrdinalIgnoreCase)) { try { string version = !String.IsNullOrWhiteSpace(_version) ? _version : vKey.Version; if (version != null) { SecretBundle versionedSecret = await _kvClient.GetSecretAsync(_uri, vKey.Key, version); return(versionedSecret); } SecretBundle secret = await _kvClient.GetSecretAsync(_uri, vKey.Key); return(secret); } catch (KeyVaultErrorException kve) { // Simply return null if the secret wasn't found if (kve.Body.Error.Code == "SecretNotFound" || kve.Body.Error.Code == "BadParameter") { return(null); } // If there was a permission issue or some other error, let the exception bubble // FYI: kve.Body.Error.Code == "Forbidden" :: No Rights, or secret is disabled. if (!Optional) { throw; } } } return(null); }