jtptoijalatest1

📅 2025-09-22T09:41:57.039Z
👁️ 69 katselukertaa
🔓 Julkinen


(function() {
  let lastRequest = null; // tallennetaan viimeisin pyyntö

  // --- tekee nätin fetch-stringin logiin ---
  function formatFetch(url, options = {}) {
    return `fetch("${url}", ${JSON.stringify(options, null, 2)});`;
  }

  // --- ottaa bearer-tokenin payloadin ja tulostaa exp:in ---
  function decodeJWT(token) {
    try {
      const payload = JSON.parse(atob(token.split(".")[1]));
      if (payload.exp) {
        const expDate = new Date(payload.exp * 1000);
        console.log("Token exp:", payload.exp, "=>", expDate.toString());
      } else {
        console.log("Tokenissa ei ole exp-kenttää");
      }
    } catch (e) {
      console.warn("Virheellinen JWT:", e);
    }
  }

  // --- tallennetaan pyyntö sen sijaan että ajettais heti ---
  function captureRequest(url, options) {
    if (url.includes("myWorkOffers")) {
      lastRequest = { url, options };
      console.log("==== Kaapattu myWorkOffers-pyyntö ====");
      console.log(formatFetch(url, options));

      // tsekataan onko bearer-token mukana
      if (options.headers && options.headers["authorization"]) {
        const bearer = options.headers["authorization"].split(" ")[1];
        decodeJWT(bearer);
      }
    }
  }

  // --- patch fetch että saadaan kaikki pyynnöt kiinni ---
  const origFetch = window.fetch;
  window.fetch = async function(url, options = {}) {
    try {
      captureRequest(url, options);
    } catch (e) {
      console.error("Virhe fetchin kaappauksessa:", e);
    }
    return origFetch.apply(this, arguments);
  };

  // --- patchataan myös XHR jos joku käyttää sitä ---
  const origOpen = XMLHttpRequest.prototype.open;
  const origSend = XMLHttpRequest.prototype.send;
  const origSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;

  XMLHttpRequest.prototype.open = function(method, url) {
    this._method = method;
    this._url = url;
    this._headers = {};
    return origOpen.apply(this, arguments);
  };

  XMLHttpRequest.prototype.setRequestHeader = function(header, value) {
    this._headers[header] = value;
    return origSetRequestHeader.apply(this, arguments);
  };

  XMLHttpRequest.prototype.send = function(body) {
    if (this._url && this._url.includes("myWorkOffers")) {
      let options = {
        method: this._method,
        headers: this._headers,
        body: body || null
      };
      captureRequest(this._url, options);
    }
    return origSend.apply(this, arguments);
  };

  // --- Enter-näppäimellä ajetaan viimeisin kaapattu pyyntö uudestaan ---
  document.addEventListener("keydown", e => {
    if (e.key === "Enter" && lastRequest) {
      console.log("Ajetaan viimeisin pyyntö uudestaan...");
      origFetch(lastRequest.url, lastRequest.options)
        .then(r => r.clone().text())
        .then(txt => {
          console.log("==== Uusinta-ajon vastaus (text) ====");
          console.log(txt);
          try {
            console.log("==== Uusinta-ajon vastaus (JSON) ====");
            console.log(JSON.parse(txt));
          } catch {}
        })
        .catch(err => console.error("Uusinta epäonnistui:", err));
    }
  });

  console.log("[Logger] Kaapataan kaikki myWorkOffers-pyynnöt. Paina ENTER niin ajetaan viimeisin uudestaan.");
})();