/// <reference types="@fastly/js-compute" />

async function handler(event) {
  let req = event.request;
  if(req.method === "POST") {
    //const reqBody = ["GET", "HEAD"].includes(req.method) ? undefined : await req.text();
    const reqBody = await req.text();

    // URL encode request body
    let encbody = encodeURI(reqBody);

    // Format to pass to query string
    let formatquery = encbody.replace('%7B%22query%22:%20%22','');
    formatquery = formatquery.replace('%22%7D','');
    formatquery = formatquery.replace(/\%5Cn/g,'%0A');

    // URL decode
    formatquery = decodeURI(formatquery);

    const url = new URL(req.url);
    url.pathname = "/v1/graphql";

    // Set formatted body to query string
    url.searchParams.set("query", formatquery);

    console.log("GET request URL is " + url);

    // Unset Content-Type and for
    req.headers.delete("Content-Type");

    return await fetch(url, {
      method: "GET",
      backend: "origin_0",
    });
  }else{
    return await fetch(req.url, {
      backend: "origin_0",
    });
  }
}

addEventListener("fetch", event => event.respondWith(handler(event)));