diff --git a/index.html b/index.html index fe6fc46..f7465a0 100644 --- a/index.html +++ b/index.html @@ -1,16 +1,22 @@ - - - Service unavailable + + + Service unavailable + -

Oh no!

+

Oh, no!

The website you are trying to reach is currently down. Your URL works, but the system is in maintenance and powered off temporarily.

Please come back later!

Kind regards, Tibo De Peuter

+ +
+ kitten holding paw to forehead + + diff --git a/script.js b/script.js new file mode 100644 index 0000000..16814e9 --- /dev/null +++ b/script.js @@ -0,0 +1,64 @@ +async function websiteUp(url) { + // TODO Fix CORS + try { + const response = await fetch(url, { method: 'head' }); + console.log(response); + return false; + } catch (error) { + console.error(`An error occurred while checking the URL '${url}': ${error.message}`); + } +} + +async function check(destination, container, dot, message, button) { + const destinationUp = await websiteUp(destination); + + if (destinationUp) { + console.log('Destination is back up'); + + dot.className = 'dot green'; + message.textContent = 'URL is back online.'; + button.textContent = "Go to URL."; + button.onclick = function () { + window.location.href = destination; + }; + } else { + dot.className = 'dot red'; + message.textContent = 'URL is still down.'; + button.textContent = "Check again."; + button.onclick = function () { + check(destination, container, dot, message, button); + }; + } + button.style.visibility = 'visible'; +} + +function createCheckButton(destination) { + const dot = document.createElement('span'); + dot.className = 'dot orange'; + dot.id = 'checkDot'; + + const message = document.createElement('span'); + message.textContent = 'Checking availability...'; + + const button = document.createElement('button'); + button.style.visibility = 'hidden'; + + const container = document.getElementById('checkContainer'); + container.appendChild(dot); + container.appendChild(message); + container.appendChild(button); + + check(destination, container, dot, message, button); +} + +function checkDestination() { + const url = window.location.search; + const searchParams = new URLSearchParams(url); + const destination = searchParams.get('destination'); + + if (destination) { + createCheckButton(destination); + } +} + +checkDestination(); \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..6b9ec86 --- /dev/null +++ b/style.css @@ -0,0 +1,19 @@ +.dot { + width: 15px; + height: 15px; + border-radius: 50%; + display: inline-block; + margin-right: 5px; +} + +.dot.green { + background-color: green; +} + +.dot.orange { + background-color: orange; +} + +.dot.red { + background-color: red; +}