function getSecret()

in lib/keyVaultConfigurationResolver.js [49:79]


function getSecret(keyVaultClient, secretStash, secretId, callback) {
  const cached = secretStash.get(secretId);
  if (cached) {
    return callback(null, cached);
  }
  const secretUrl = new URL(secretId);
  const vaultBaseUrl = secretUrl.origin;
  const i = secretUrl.pathname.indexOf(secretsPath);
  if (i < 0) {
    return callback(new Error('The requested resource must be a KeyVault secret'));
  }
  let secretName = secretUrl.pathname.substr(i + secretsPath.length);
  let version = '';
  const versionIndex = secretName.indexOf('/');
  if (versionIndex >= 0) {
    version = secretName.substr(versionIndex + 1);
    secretName = secretName.substr(0, versionIndex);
  }

  try {
    keyVaultClient.getSecret(vaultBaseUrl, secretName, version, (getSecretError, secretResponse) => {
      if (getSecretError) {
        return callback(getSecretError);
      }
      secretStash.set(secretId, secretResponse);
      return callback(null, secretResponse);
    });
  } catch (keyVaultValidationError) {
    return callback(keyVaultValidationError);
  }
}