1
0
Fork 0
VaultUI/src/api/kv/undeleteSecret.ts
2021-05-09 11:18:18 +01:00

37 lines
1 KiB
TypeScript

import { appendAPIURL, getHeaders } from "../apiUtils";
import { getObjectKeys, removeDoubleSlash } from "../../utils";
import { getSecretMetadata } from "./getSecretMetadata";
export async function undeleteSecret(
baseMount: string,
secretPath: string[],
name: string,
version: string|null = null
): Promise<void> {
let secretURL = `/v1/${baseMount}/undelete/${secretPath.join("/")}/${name}`;
secretURL = removeDoubleSlash(secretURL).replace(/\/$/, "");
if (version == null) {
const meta = await getSecretMetadata(
baseMount,
secretPath,
name
);
const versions = getObjectKeys(meta.versions);
version = String(versions[versions.length - 1]);
}
const request = new Request(appendAPIURL(secretURL), {
method: "POST",
headers: {
...getHeaders(),
'Content-Type': 'application/json',
},
body: JSON.stringify({ "versions": [version] })
});
const response = await fetch(request);
if (!response.ok) {
const json = await response.json();
throw new Error(json.errors[0]);
}
}