Files
enstrayedapi/archive/etyd/etyd.js
2025-09-01 22:45:04 -07:00

93 lines
3.4 KiB
JavaScript

window.onload = function() {
if (navigator.userAgent.includes("Firefox")) {
document.getElementById('resultfeed').value += `\nClipboard buttons only work on Firefox >127.`
}
// Event listeners can only be added after the page is loaded
document.getElementById("actiondropdown").addEventListener("change", function() {
if (document.getElementById("actiondropdown").value === "POST") {
document.getElementById("randomizationtoggle").disabled = false
document.getElementById("valuefield").disabled = false
} else if (document.getElementById("actiondropdown").value === "DELETE") {
document.getElementById("randomizationtoggle").disabled = true
document.getElementById("randomizationtoggle").checked = false
randomUrlTick()
document.getElementById("valuefield").disabled = true
} else {
console.error("UI Code Error: Action dropdown event listener function reached impossible state")
}
})
}
function makeRandomHex(amount) {
const characters = "1234567890abcdef"
let counter = 0
let result = ""
while (counter < amount) {
result += characters.charAt(Math.floor(Math.random() * characters.length))
counter += 1
}
return result
}
function randomUrlTick() {
if (document.getElementById("randomizationtoggle").checked == true) {
document.getElementById("targetfield").disabled = true
document.getElementById("targetfield").value = makeRandomHex(6)
} else {
document.getElementById("targetfield").disabled = false
document.getElementById("targetfield").value = null
}
}
// function buttonCopyResult() {
// navigator.clipboard.writeText(`${document.location.href}${document.getElementById("urlfield").value}`)
// }
function buttonFillFromClipboard() {
navigator.clipboard.readText().then(res => {
document.getElementById("valuefield").value = res;
})
}
// Changes the buttons text to OK for 500ms for action feedback
// "internal" in this context just means not called from the page
function internalButtonConfirmation(element) {
let normalValue = document.getElementById(element).innerHTML
document.getElementById(element).innerHTML = "Ok"
setTimeout(function() {
document.getElementById(element).innerHTML = normalValue
}, 500)
}
function buttonCopyUrl() {
navigator.clipboard.writeText(`this doesn't work rn lol`)
internalButtonConfirmation("buttonCopyUrl")
}
function buttonClearLog() {
document.getElementById("resultfeed").value = ""
internalButtonConfirmation("buttonClearLog")
}
function submitData() {
fetch(`http://nrdesktop:8081/etyd${document.getElementById("targetfield").value}`, {
method: document.getElementById("actiondropdown").value,
mode: "cors",
headers: {
"Authorization": document.getElementById("authfield").value
},
body: JSON.stringify({
"target": document.getElementById("targetfield").value,
"value": document.getElementById("valuefield").value,
"action": document.getElementById("actiondropdown").value,
"random": document.getElementById("randomizationtoggle").checked
})
}).then(response => {
document.getElementById("resultfeed").value += `\n${response.status} ${response.body}`
}).catch(error => {
document.getElementById("resultfeed").value += `\nError: ${error}`
})
}