AnalyticsRouter.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const AuthenticationController = require('./../Authentication/AuthenticationController')
  2. const AnalyticsController = require('./AnalyticsController')
  3. const AnalyticsProxy = require('./AnalyticsProxy')
  4. const RateLimiterMiddleware = require('./../Security/RateLimiterMiddleware')
  5. const { expressify } = require('../../util/promises')
  6. module.exports = {
  7. apply(webRouter, privateApiRouter, publicApiRouter) {
  8. webRouter.post(
  9. '/event/:event([a-z0-9-_]+)',
  10. RateLimiterMiddleware.rateLimit({
  11. endpointName: 'analytics-record-event',
  12. maxRequests: 200,
  13. timeInterval: 60,
  14. }),
  15. AnalyticsController.recordEvent
  16. )
  17. webRouter.put(
  18. '/editingSession/:projectId',
  19. RateLimiterMiddleware.rateLimit({
  20. endpointName: 'analytics-update-editing-session',
  21. params: ['projectId'],
  22. maxRequests: 20,
  23. timeInterval: 60,
  24. }),
  25. expressify(AnalyticsController.updateEditingSession)
  26. )
  27. publicApiRouter.use(
  28. '/analytics/uniExternalCollaboration',
  29. AuthenticationController.requirePrivateApiAuth(),
  30. RateLimiterMiddleware.rateLimit({
  31. endpointName: 'analytics-uni-external-collab-proxy',
  32. maxRequests: 20,
  33. timeInterval: 60,
  34. }),
  35. AnalyticsProxy.call('/uniExternalCollaboration')
  36. )
  37. },
  38. }