Backend/server/shortener.ts

28 lines
924 B
TypeScript

import express, {Express, Request, Response} from 'express';
import {getLinkObjectById} from "../controller/links";
const app: Express = express();
app.get("*", async (req: Request, res: Response) => {
const link = req.originalUrl.substring(1) || "home";
let redirect_url = "https://sheepstar.xyz";
// Search provided link
const found = await getLinkObjectById(link);
if (found != null) {
// Update redirect url
redirect_url = found.originalUrl;
// Increment clicks
await found.updateOne({$inc: {clicks: 1}}).exec();
}
// Redirect to url
res.status(301).header("Location", redirect_url).end();
});
/** Logs something with a shortener prefix */
const log = (msg: string) => console.log(`[Shortener] ${msg}`);
/** Starts the shortener service */
export const startServer = (port: number = 8672) => app.listen(port, () => log(`Listening on port ${port}`));