Guh
This commit is contained in:
parent
50c328a492
commit
6398baa64e
2
index.js
2
index.js
|
@ -12,7 +12,7 @@ app.use(express.json());
|
|||
app.use(express.urlencoded({ extended: true }));
|
||||
|
||||
app.get("/", (req, res) => {
|
||||
res.status(404).json({ error: 'Not found' });
|
||||
res.sendFile(__dirname + "/static/index.html");
|
||||
});
|
||||
|
||||
// Add your routes and middleware here
|
||||
|
|
85
static/index.html
Normal file
85
static/index.html
Normal file
|
@ -0,0 +1,85 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>KCA URL Shortener</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
||||
</head>
|
||||
|
||||
<body class="bg-dark text-light">
|
||||
<!-- Modal -->
|
||||
<div class="modal fade show" tabindex="-1" style="display: block;">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content bg-dark text-light">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">URL Shortener</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>
|
||||
If you're seeing this, you probably either hit a bad link, or were curious as to what this is!
|
||||
Welcome! There isn't a lot to see here, and the tool itself is password protected, so there isn't much to do.
|
||||
If you want to use this for yourself, or just want to peek at the code, check out the source code <a
|
||||
href="https://git.chrischro.me/KCA/UrlShortener" class="text-light">here!</a>
|
||||
Other than that, the form below is used for creating links!
|
||||
</p>
|
||||
<form id="shortenForm">
|
||||
<div class="mb-3">
|
||||
<label for="url" class="form-label">URL:</label>
|
||||
<input type="text" id="url" name="url" class="form-control" required>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="shortUrl" class="form-label">Custom Short URL (optional):</label>
|
||||
<input type="text" id="shortUrl" name="shortUrl" class="form-control">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="passcode" class="form-label">Passcode:</label>
|
||||
<input type="password" id="passcode" name="passcode" class="form-control" required>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Shorten URL</button>
|
||||
</form>
|
||||
|
||||
<div id="result" style="margin-top: 20px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.getElementById('shortenForm').addEventListener('submit', function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
const formData = new FormData(this);
|
||||
const data = {
|
||||
url: formData.get('url'),
|
||||
shortUrl: formData.get('shortUrl'),
|
||||
passcode: formData.get('passcode')
|
||||
};
|
||||
|
||||
fetch('/shorten', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(result => {
|
||||
const resultDiv = document.getElementById('result');
|
||||
if (result.error) {
|
||||
resultDiv.innerHTML = `<p style="color: red;">${result.error}</p>`;
|
||||
} else {
|
||||
resultDiv.innerHTML = `<p>Short URL: <a href="${result.shortUrl}" class="text-light">${result.shortUrl}</a></p>`;
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error:', error);
|
||||
document.getElementById('result').innerHTML = `<p style="color: red;">An error occurred.</p>`;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in a new issue