Sha256: f15e5147e90bb76d3fa1441ab8b577a2a4c01658f8cd0d523a9ade130b092de5

Contents?: true

Size: 1.03 KB

Versions: 5

Compression:

Stored size: 1.03 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 response = await fetch(url, {
    ...jsonFetchOptions(),
    method: "POST",
    body: data ? JSON.stringify(data) : null
  });
  return response.json();
}

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

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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
pages_core-3.15.5 app/javascript/lib/request.ts
pages_core-3.15.4 app/javascript/lib/request.ts
pages_core-3.15.3 app/javascript/lib/request.ts
pages_core-3.15.2 app/javascript/lib/request.ts
pages_core-3.15.1 app/javascript/lib/request.ts