links.ts 1.7 KB

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