From 85f217f63e248ae0df44368a6a0d03620955f170 Mon Sep 17 00:00:00 2001 From: Carson Fleming Date: Wed, 18 Oct 2023 03:48:52 -0400 Subject: Created initial backend architecture and redirection routes --- api-routes.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 api-routes.js (limited to 'api-routes.js') 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; -- cgit v1.2.3