summaryrefslogtreecommitdiff
path: root/api-routes.js
diff options
context:
space:
mode:
authorCarson Fleming <cflems@cflems.net>2023-10-18 03:48:52 -0400
committerCarson Fleming <cflems@cflems.net>2023-10-18 03:48:52 -0400
commit85f217f63e248ae0df44368a6a0d03620955f170 (patch)
treed6d84084f8f2ad5a3fa0804ee576b492d9e33e7e /api-routes.js
parentadaf5b0fde4431eb186075e7921e2f0999e68dd9 (diff)
downloadfle.ms-85f217f63e248ae0df44368a6a0d03620955f170.tar.gz
Created initial backend architecture and redirection routes
Diffstat (limited to 'api-routes.js')
-rw-r--r--api-routes.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/api-routes.js b/api-routes.js
new file mode 100644
index 0000000..9f02edb
--- /dev/null
+++ b/api-routes.js
@@ -0,0 +1,32 @@
+const express = require('express');
+const Url = require('./db/url-schema.js');
+const utils = require('./utils.js');
+const router = express.Router();
+
+router.all('/', async (req, res) => {
+ utils.sendBadRequestError(res, 'Nothing to be done at API root.');
+});
+
+router.put('/:slug', async (req, res) => {
+ try {
+ const {url} = req.body;
+ const slug = req.params.slug;
+ if (!utils.isUrlFormatted(url))
+ return utils.sendBadRequestError(res, 'URL "'+url+'" is malformatted. Must be a valid URL.');
+ if (!utils.isAlphaNumeric(slug))
+ return utils.sendBadRequestError(res, 'Slug "'+slug+'" is malformatted. Must be alphanumeric.');
+ if (await Url.exists({slug: slug}))
+ return utils.sendBadRequestError(res, 'Slug "'+slug+'" already exists. Updates are not supported at this time.');
+
+ await new Url({url, slug}).save();
+ utils.sendSuccessfulSlugCreation(res, slug);
+ } catch (err) {
+ utils.sendInternalServerError(res);
+ }
+});
+
+router.all('/*', async (req, res) => {
+ utils.sendNotFoundError(res);
+});
+
+module.exports = router;