links.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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.delete(
  27. "/:id",
  28. asyncHandler(auth.apikey),
  29. asyncHandler(auth.jwt),
  30. validators.deleteLink,
  31. asyncHandler(helpers.verify),
  32. asyncHandler(link.remove)
  33. );
  34. router.get(
  35. "/:id/stats",
  36. asyncHandler(auth.apikey),
  37. asyncHandler(auth.jwt),
  38. validators.getStats,
  39. asyncHandler(link.stats)
  40. );
  41. router.post(
  42. "/:id/protected",
  43. validators.redirectProtected,
  44. asyncHandler(helpers.verify),
  45. asyncHandler(link.redirectProtected)
  46. );
  47. router.post(
  48. "/report",
  49. validators.reportLink,
  50. asyncHandler(helpers.verify),
  51. asyncHandler(link.report)
  52. );
  53. router.post(
  54. "/admin/ban/:id",
  55. asyncHandler(auth.apikey),
  56. asyncHandler(auth.jwt),
  57. asyncHandler(auth.admin),
  58. validators.banLink,
  59. asyncHandler(helpers.verify),
  60. asyncHandler(link.ban)
  61. );
  62. export default router;