index.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import asyncHandler from "express-async-handler";
  2. import { Router } from "express";
  3. import cors from "cors";
  4. import {
  5. validateUrl,
  6. ipCooldownCheck
  7. } from "./controllers/validateBodyController";
  8. import * as auth from "../handlers/auth";
  9. import * as link from "./controllers/linkController";
  10. import env from "../env";
  11. const router = Router();
  12. /* URL shortener */
  13. router.post(
  14. "/url/submit",
  15. cors(),
  16. asyncHandler(auth.apikey),
  17. asyncHandler(env.DISALLOW_ANONYMOUS_LINKS ? auth.jwt : auth.jwtLoose),
  18. asyncHandler(auth.recaptcha),
  19. asyncHandler(validateUrl),
  20. asyncHandler(ipCooldownCheck),
  21. asyncHandler(link.shortener)
  22. );
  23. router.post(
  24. "/url/deleteurl",
  25. asyncHandler(auth.apikey),
  26. asyncHandler(auth.jwt),
  27. asyncHandler(link.deleteUserLink)
  28. );
  29. router.get(
  30. "/url/geturls",
  31. asyncHandler(auth.apikey),
  32. asyncHandler(auth.jwt),
  33. asyncHandler(link.getUserLinks)
  34. );
  35. router.post(
  36. "/url/customdomain",
  37. asyncHandler(auth.jwt),
  38. asyncHandler(link.setCustomDomain)
  39. );
  40. router.delete(
  41. "/url/customdomain",
  42. asyncHandler(auth.jwt),
  43. asyncHandler(link.deleteCustomDomain)
  44. );
  45. router.get(
  46. "/url/stats",
  47. asyncHandler(auth.apikey),
  48. asyncHandler(auth.jwt),
  49. asyncHandler(link.getLinkStats)
  50. );
  51. router.post("/url/requesturl", asyncHandler(link.goToLink));
  52. router.post("/url/report", asyncHandler(link.reportLink));
  53. router.post(
  54. "/url/admin/ban",
  55. asyncHandler(auth.apikey),
  56. asyncHandler(auth.jwt),
  57. asyncHandler(auth.admin),
  58. asyncHandler(link.ban)
  59. );
  60. export default router;