import { appendAPIURL, getHeaders } from "./apiUtils";
import { removeDoubleSlash } from "../utils";


export async function createOrUpdateSecret(
  baseMount: string,
  mountType: string,
  secretPath: string[],
  name: string,
  data: Record<string, unknown>
): Promise<void> {
  let secretURL = "";
  let APIData = {};

  if (mountType == "kv-v2") {
    secretURL = `/v1/${baseMount}/data/${secretPath.join("/")}/${name}`;
    APIData = { "data": data };
  } else {
    secretURL = `/v1/${baseMount}/${secretPath.join("/")}/${name}`;
    APIData = data;
  }

  secretURL = removeDoubleSlash(secretURL).replace(/\/$/, "");
  const request = new Request(appendAPIURL(secretURL), {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      ...getHeaders(),
    },
    body: JSON.stringify(APIData, null, 0)
  });
  const response = await fetch(request);
  if (!response.ok) {
    const json = await response.json();
    throw new Error(json.errors[0]);
  }
}