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.");
})();