From b3f73fde50788ae6c6fd1479977586489efea9b5 Mon Sep 17 00:00:00 2001 From: meeg_leeto Date: Sat, 30 Apr 2022 00:53:42 +0100 Subject: [PATCH] feat: barebones HTML interface is working --- data/served/index.html | 19 +++++++++++++- data/served/main.js | 56 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 data/served/main.js diff --git a/data/served/index.html b/data/served/index.html index 8660be7..da213df 100644 --- a/data/served/index.html +++ b/data/served/index.html @@ -1,13 +1,30 @@ + Lonk + + - +

+ + +
+ + +
+ +

+ \ No newline at end of file diff --git a/data/served/main.js b/data/served/main.js new file mode 100644 index 0000000..6332e1c --- /dev/null +++ b/data/served/main.js @@ -0,0 +1,56 @@ +'use strict'; + +(() => { + document.addEventListener('DOMContentLoaded', (_) => { + const waiting = false; + let xhr; + + const field = document.getElementById('url'); + + field.addEventListener('change', () => { + if (waiting && xhr != null) { + xhr.abort(); + } + }); + + const form = document.getElementById('form'); + + form.addEventListener('submit', (event) => { + // We need to create a different body, so prevent the default submission. + event.preventDefault(); + + if (waiting) { + // Prevent multiple requests. + return; + } + + // Get the URL the user is trying to shorten. + const url = document.getElementById('url').value; + + // Encode the URL as Base64. + const encoded = btoa(encodeURIComponent(url).replace(/%([0-9A-F]{2})/g, (match, p1) => + String.fromCharCode('0x' + p1) + )); + + // POST the body to /shorten. + xhr = new XMLHttpRequest(); + xhr.open('POST', '/shorten', true); + xhr.overrideMimeType('text/plain'); + xhr.send(encoded); + xhr.onload = () => { + switch (xhr.status) { + case 200: + let slug = xhr.response; + console.log(slug); + break; + default: + console.log(xhr.response); + break; + } + }; + xhr.onerror = () => { + // TODO + }; + }); + }); +})(); \ No newline at end of file