links.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. validators.createLink,
  23. asyncHandler(helpers.verify),
  24. asyncHandler(link.create)
  25. );
  26. router.patch(
  27. "/:id",
  28. asyncHandler(auth.apikey),
  29. asyncHandler(auth.jwtLoose),
  30. validators.editLink,
  31. asyncHandler(helpers.verify),
  32. asyncHandler(link.edit)
  33. );
  34. router.delete(
  35. "/:id",
  36. asyncHandler(auth.apikey),
  37. asyncHandler(auth.jwt),
  38. validators.deleteLink,
  39. asyncHandler(helpers.verify),
  40. asyncHandler(link.remove)
  41. );
  42. router.get(
  43. "/:id/stats",
  44. asyncHandler(auth.apikey),
  45. asyncHandler(auth.jwt),
  46. validators.getStats,
  47. asyncHandler(link.stats)
  48. );
  49. router.post(
  50. "/:id/protected",
  51. validators.redirectProtected,
  52. asyncHandler(helpers.verify),
  53. asyncHandler(link.redirectProtected)
  54. );
  55. router.post(
  56. "/report",
  57. validators.reportLink,
  58. asyncHandler(helpers.verify),
  59. asyncHandler(link.report)
  60. );
  61. router.post(
  62. "/admin/ban/:id",
  63. asyncHandler(auth.apikey),
  64. asyncHandler(auth.jwt),
  65. asyncHandler(auth.admin),
  66. validators.banLink,
  67. asyncHandler(helpers.verify),
  68. asyncHandler(link.ban)
  69. );
  70. export default router;