Sha256: f442ccd927adf41e4d79de248ff945da9d19f778acc0366057ffb6f2a2059ee3

Contents?: true

Size: 1.11 KB

Versions: 3

Compression:

Stored size: 1.11 KB

Contents

export function csrfToken(): string {
  const elem = document.querySelector("[name=csrf-token]");

  if (!elem) {
    return "";
  }

  return elem.getAttribute("content") || "";
}

function jsonFetchOptions() {
  return({ method: "POST",
           headers: { "Content-Type": "application/json; charset=utf-8",
                      "X-CSRF-Token": csrfToken() } });
}

export async function postJson(url: string, data: Record<string, unknown>) {
  const options = { ...jsonFetchOptions(), method: "POST" };
  if (data) {
    options.body = JSON.stringify(data);
  }
  const response = await fetch(url, options);
  return response.json();
}

export async function putJson(url: string, data: Record<string, unknown>) {
  const options = { ...jsonFetchOptions(), method: "PUT" };
  if (data) {
    options.body = JSON.stringify(data);
  }
  const response = await fetch(url, options);
  return response.json();
}

export async function post(url: string, data: Record<string, unknown>) {
  const response = await fetch(url, {
    method: "POST",
    body: data,
    headers: { "X-CSRF-Token": csrfToken() }
  });
  return response.json();
}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pages_core-3.12.4 app/javascript/lib/request.ts
pages_core-3.12.3 app/javascript/lib/request.ts
pages_core-3.12.2 app/javascript/lib/request.ts