links.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { Router } from "express";
  2. import asyncHandler from "express-async-handler";
  3. import cors from "cors";
  4. import * as validators from "../handlers/validators";
  5. import * as helpers from "../handlers/helpers";
  6. import * as link from "../handlers/links";
  7. import * as auth from "../handlers/auth";
  8. const router = Router();
  9. router.get(
  10. "/",
  11. asyncHandler(auth.apikey),
  12. asyncHandler(auth.jwt),
  13. helpers.query,
  14. asyncHandler(link.get)
  15. );
  16. router.post(
  17. "/",
  18. cors(),
  19. asyncHandler(auth.apikey),
  20. asyncHandler(auth.jwtLoose),
  21. asyncHandler(auth.recaptcha),
  22. asyncHandler(auth.cooldown),
  23. validators.createLink,
  24. asyncHandler(helpers.verify),
  25. asyncHandler(link.create)
  26. );
  27. router.patch(
  28. "/:id",
  29. asyncHandler(auth.apikey),
  30. asyncHandler(auth.jwt),
  31. validators.editLink,
  32. asyncHandler(helpers.verify),
  33. asyncHandler(link.edit)
  34. );
  35. router.delete(
  36. "/:id",
  37. asyncHandler(auth.apikey),
  38. asyncHandler(auth.jwt),
  39. validators.deleteLink,
  40. asyncHandler(helpers.verify),
  41. asyncHandler(link.remove)
  42. );
  43. router.get(
  44. "/:id/stats",
  45. asyncHandler(auth.apikey),
  46. asyncHandler(auth.jwt),
  47. validators.getStats,
  48. asyncHandler(link.stats)
  49. );
  50. router.post(
  51. "/:id/protected",
  52. validators.redirectProtected,
  53. asyncHandler(helpers.verify),
  54. asyncHandler(link.redirectProtected)
  55. );
  56. router.post(
  57. "/report",
  58. validators.reportLink,
  59. asyncHandler(helpers.verify),
  60. asyncHandler(link.report)
  61. );
  62. router.post(
  63. "/admin/ban/:id",
  64. asyncHandler(auth.apikey),
  65. asyncHandler(auth.jwt),
  66. asyncHandler(auth.admin),
  67. validators.banLink,
  68. asyncHandler(helpers.verify),
  69. asyncHandler(link.ban)
  70. );
  71. export default router;