mirror of
https://github.com/hashicorp/vault-action.git
synced 2025-11-10 00:26:55 +00:00
Refactored out selectAndAppendResults
This commit is contained in:
parent
477b47511d
commit
4c238e2453
1 changed files with 47 additions and 18 deletions
|
|
@ -23,7 +23,7 @@ const { normalizeOutputKey } = require('./utils');
|
||||||
*/
|
*/
|
||||||
async function getSecrets(secretRequests, client) {
|
async function getSecrets(secretRequests, client) {
|
||||||
const responseCache = new Map();
|
const responseCache = new Map();
|
||||||
const results = [];
|
let results = [];
|
||||||
|
|
||||||
for (const secretRequest of secretRequests) {
|
for (const secretRequest of secretRequests) {
|
||||||
let { path, selector } = secretRequest;
|
let { path, selector } = secretRequest;
|
||||||
|
|
@ -48,8 +48,9 @@ async function getSecrets(secretRequests, client) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selector === wildcard) {
|
|
||||||
body = JSON.parse(body);
|
body = JSON.parse(body);
|
||||||
|
|
||||||
|
if (selector === wildcard) {
|
||||||
let keys = body.data;
|
let keys = body.data;
|
||||||
if (body.data["data"] != undefined) {
|
if (body.data["data"] != undefined) {
|
||||||
keys = keys.data;
|
keys = keys.data;
|
||||||
|
|
@ -91,22 +92,13 @@ async function getSecrets(secretRequests, client) {
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!selector.match(/.*[\.].*/)) {
|
results = await selectAndAppendResults(
|
||||||
selector = '"' + selector + '"'
|
selector,
|
||||||
}
|
body,
|
||||||
selector = "data." + selector
|
cachedResponse,
|
||||||
body = JSON.parse(body)
|
secretRequest,
|
||||||
if (body.data["data"] != undefined) {
|
results
|
||||||
selector = "data." + selector
|
);
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const value = await selectData(body, selector);
|
|
||||||
results.push({
|
|
||||||
request: secretRequest,
|
|
||||||
value,
|
|
||||||
cachedResponse
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
|
|
@ -134,6 +126,43 @@ async function selectData(data, selector) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Uses selectData with the selector to get the value and then appends it to the
|
||||||
|
* results. Returns a new array with all of the results.
|
||||||
|
* @param {string} selector
|
||||||
|
* @param {object} body
|
||||||
|
* @param {object} cachedResponse
|
||||||
|
* @param {TRequest} secretRequest
|
||||||
|
* @param {SecretResponse<TRequest>[]} results
|
||||||
|
* @return {Promise<SecretResponse<TRequest>[]>}
|
||||||
|
*/
|
||||||
|
const selectAndAppendResults = async (
|
||||||
|
selector,
|
||||||
|
body,
|
||||||
|
cachedResponse,
|
||||||
|
secretRequest,
|
||||||
|
results
|
||||||
|
) => {
|
||||||
|
if (!selector.match(/.*[\.].*/)) {
|
||||||
|
selector = '"' + selector + '"';
|
||||||
|
}
|
||||||
|
selector = "data." + selector;
|
||||||
|
|
||||||
|
if (body.data["data"] != undefined) {
|
||||||
|
selector = "data." + selector;
|
||||||
|
}
|
||||||
|
|
||||||
|
const value = await selectData(body, selector);
|
||||||
|
return [
|
||||||
|
...results,
|
||||||
|
{
|
||||||
|
request: secretRequest,
|
||||||
|
value,
|
||||||
|
cachedResponse,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
getSecrets,
|
getSecrets,
|
||||||
selectData
|
selectData
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue