|
- import Armpits from "@sniff/armpits";
- import express from "express";
- import config from "./config";
- import middleware from "./middleware/index";
- import { CreateLink } from "./utils/database";
- import { ErrorResponse } from "./utils/generators";
- const app = express();
- app.use(express.json());
- app.use(middleware.database);
- app.use(middleware.log);
- app.get("/", async (req, res) => {
- return res.redirect(config.mainDomain);
- });
-
- app.get("/all", async (req, res) => {
- let links = [];
- req.db.list({ include_docs: true }).then((body) => {
- body.rows.forEach((row) => {
- delete row.doc._id;
- delete row.doc._rev;
- links.push(row.doc);
- });
- res.json(links);
- });
- });
-
- app.post("/", middleware.lock, async (req, res) => {
- try {
- let { target, code } = req.body;
- if (!target)
- return res
- .status(400)
- .send({ success: false, error: ErrorResponse("MISSING_TARGET") });
-
- let Link = await CreateLink({ target, code });
- return res.send(Link);
- } catch (error) {
- res.send({
- success: false,
- error: ErrorResponse(error.message),
- });
- }
- });
-
- app.get("/:code", async (req, res) => {
- try {
- let response = await req.db.get(req.params.code);
- res.redirect(301, response.target);
- } catch (error) {
- switch (error.message) {
- case "missing":
- return res.send({
- success: false,
- error: ErrorResponse("MISSING_CODE"),
- });
- default:
- return res.send({ success: false, error: { msg: error } });
- }
- }
- });
-
- app.listen(config.port, () => {
- Armpits.plus(
- `${config.domain.replace(/https?:\/\//, "")} | Listening on port`,
- config.port
- );
- });
|