From 1877cef919068903a2b98c0ca18a6e37ac80516e Mon Sep 17 00:00:00 2001 From: Daniel Mursa Date: Thu, 12 Dec 2024 15:29:45 +0100 Subject: [PATCH] [#13] Fix admin.js --- .../static/log_outgoing_requests/js/admin.js | 104 ++++++++---------- 1 file changed, 47 insertions(+), 57 deletions(-) diff --git a/log_outgoing_requests/static/log_outgoing_requests/js/admin.js b/log_outgoing_requests/static/log_outgoing_requests/js/admin.js index c4a8253..0a73ec2 100644 --- a/log_outgoing_requests/static/log_outgoing_requests/js/admin.js +++ b/log_outgoing_requests/static/log_outgoing_requests/js/admin.js @@ -1,63 +1,53 @@ -const getCsrfTokenFromDom = () => { - return document.querySelector("[name=csrfmiddlewaretoken]").value; -}; - document.addEventListener("DOMContentLoaded", function () { - const prettifyAnchors = document.querySelectorAll( - ".prettify-body-response" - ); - const originalAnchors = document.querySelectorAll( - ".original-body-response" - ); - const url = window.location.href; - - prettifyAnchors.forEach(function (element) { - const responseBodyText = document.querySelector(".body-response-text"); - - element.addEventListener("click", function (event) { + const link = document.querySelector(".prettify-toggle-link"); + if (link) { + link.addEventListener("click", function (event) { event.preventDefault(); - - fetch(element.href, { - method: "POST", - credentials: "same-origin", - headers: { - "X-CSRFToken": getCsrfTokenFromDom(), - "Content-Type": "application/json", - }, - body: JSON.stringify({ url: url, text: element.textContent }), - }) - .then((response) => response.json()) - .then((data) => { - responseBodyText.textContent = data.newValue; - }) - .catch((error) => { - console.error("Error:", error); - }); + const textArea = document.querySelector(".prettify-output"); + const contentType = textArea.getAttribute("content-type"); + const responseBody = textArea.value; + if (textArea.style.display === "none") { + let outputValue = ''; + if (contentType.includes('json')) { + try { + outputValue = JSON.stringify(JSON.parse(responseBody), null, 3); + } catch (error) { + outputValue = "
Invalid JSON format"; + } + } else if (contentType.includes('xml')) { + try { + outputValue = prettifyXml(responseBody); + } catch (xmlError) { + outputValue = "
Invalid XML format"; + } + } + textArea.value = outputValue; + textArea.style.display = "inline"; + } else { + textArea.style.display = "none"; + } }); - }); + } +}); - originalAnchors.forEach(function (element) { - const responseBodyText = document.querySelector(".body-response-text"); +var prettifyXml = function(sourceXml) { + var xmlDoc = new DOMParser().parseFromString(sourceXml, 'application/xml'); + var xsltDoc = new DOMParser().parseFromString([ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + '', + ].join('\n'), 'application/xml'); - element.addEventListener("click", function (event) { - event.preventDefault(); + var xsltProcessor = new XSLTProcessor(); + xsltProcessor.importStylesheet(xsltDoc); + var resultDoc = xsltProcessor.transformToDocument(xmlDoc); + var resultXml = new XMLSerializer().serializeToString(resultDoc); + return resultXml; +}; - fetch(element.href, { - method: "POST", - credentials: "same-origin", - headers: { - "X-CSRFToken": getCsrfTokenFromDom(), - "Content-Type": "application/json", - }, - body: JSON.stringify({ url: url, text: element.textContent }), - }) - .then((response) => response.json()) - .then((data) => { - responseBodyText.textContent = data.newValue; - }) - .catch((error) => { - console.error("Error:", error); - }); - }); - }); -});