/** Apache HTTP Server (`apache.read`, `apache.manage`). */
import { call } from "../transport";
import type { Payload } from "../types";

const command = (name: string, action: string) => (sessionId: string, payload: Payload = {}) => call<Payload>(`module_apache_${name}`, `plugin:apache:${action}`, { ...payload, sessionId });

export const apache = Object.freeze({
  inspect: (sessionId: string) => call<Payload>("module_apache_inspect", "plugin:apache:inspect", { sessionId }),
  inventory: command("inventory", "inventory"),
  readLog: command("read_log", "readLog"),
  probeBackends: command("probe_backends", "probeBackends"),
  readFile: command("read_file", "readFile"),
  backups: command("backups", "backups"),
  readBackup: command("read_backup", "readBackup"),
  planSite: command("plan_site", "planSite"),
  planEdit: command("plan_edit", "planEdit"),
  planFix: command("plan_fix", "planFix"),
  saveFile: command("save_file", "saveFile"),
  restoreBackup: command("restore_backup", "restoreBackup"),
  createSite: command("create_site", "createSite"),
  setSiteEnabled: command("set_site_enabled", "setSiteEnabled"),
  adoptSite: command("adopt_site", "adoptSite"),
  dropBrokenLink: command("drop_broken_link", "dropBrokenLink"),
  setModule: command("set_module", "setModule"),
  reload: command("reload", "reload"),
  installCertbot: command("install_certbot", "installCertbot"),
  issueCertificate: command("issue_certificate", "issueCertificate")
});
