Router.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import OError from '@overleaf/o-error'
  2. import * as HttpController from './HttpController.js'
  3. export function initialize(app) {
  4. // use an extended timeout on all endpoints, to allow for long requests to history-v1
  5. app.use(longerTimeout)
  6. app.post('/project', HttpController.initializeProject)
  7. app.delete('/project/:project_id', HttpController.deleteProject)
  8. app.get('/project/:project_id/snapshot', HttpController.getLatestSnapshot)
  9. app.get('/project/:project_id/diff', HttpController.getDiff)
  10. app.get('/project/:project_id/filetree/diff', HttpController.getFileTreeDiff)
  11. app.get('/project/:project_id/updates', HttpController.getUpdates)
  12. app.get(
  13. '/project/:project_id/changes-in-chunk',
  14. HttpController.getChangesInChunkSince
  15. )
  16. app.get('/project/:project_id/version', HttpController.latestVersion)
  17. app.post('/project/:project_id/flush', HttpController.flushProject)
  18. app.post('/project/:project_id/resync', HttpController.resyncProject)
  19. app.get('/project/:project_id/dump', HttpController.dumpProject)
  20. app.get('/project/:project_id/labels', HttpController.getLabels)
  21. app.post('/project/:project_id/labels', HttpController.createLabel)
  22. app.delete(
  23. '/project/:project_id/user/:user_id/labels/:label_id',
  24. HttpController.deleteLabelForUser
  25. )
  26. app.delete(
  27. '/project/:project_id/labels/:label_id',
  28. HttpController.deleteLabel
  29. )
  30. app.post(
  31. '/user/:from_user/labels/transfer/:to_user',
  32. HttpController.transferLabels
  33. )
  34. app.get(
  35. '/project/:project_id/version/:version/:pathname',
  36. HttpController.getFileSnapshot
  37. )
  38. app.get(
  39. '/project/:project_id/ranges/version/:version/:pathname',
  40. HttpController.getRangesSnapshot
  41. )
  42. app.get(
  43. '/project/:project_id/metadata/version/:version/:pathname',
  44. HttpController.getFileMetadataSnapshot
  45. )
  46. app.get(
  47. '/project/:project_id/version/:version',
  48. HttpController.getProjectSnapshot
  49. )
  50. app.get(
  51. '/project/:project_id/paths/version/:version',
  52. HttpController.getPathsAtVersion
  53. )
  54. app.post('/project/:project_id/force', HttpController.forceDebugProject)
  55. app.get('/project/:history_id/blob/:hash', HttpController.getProjectBlob)
  56. app.get('/status/failures', HttpController.getFailures)
  57. app.get('/status/queue', HttpController.getQueueCounts)
  58. app.post('/retry/failures', HttpController.retryFailures)
  59. app.post('/flush/old', HttpController.flushOld)
  60. app.get('/status', (req, res, next) => res.send('project-history is up'))
  61. app.get('/oops', function (req, res, next) {
  62. throw new OError('dummy test error')
  63. })
  64. app.get('/check_lock', HttpController.checkLock)
  65. app.get('/health_check', HttpController.healthCheck)
  66. }
  67. function longerTimeout(req, res, next) {
  68. res.setTimeout(6 * 60 * 1000)
  69. next()
  70. }