TpdsController.coffee 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. tpdsUpdateHandler = require('./TpdsUpdateHandler')
  2. UpdateMerger = require "./UpdateMerger"
  3. logger = require('logger-sharelatex')
  4. Path = require('path')
  5. metrics = require("../../infrastructure/Metrics")
  6. module.exports =
  7. mergeUpdate: (req, res)->
  8. metrics.inc("tpds.merge-update")
  9. {filePath, user_id, projectName} = parseParams(req)
  10. source = req.headers["x-sl-update-source"] or "unknown"
  11. logger.log user_id:user_id, filePath:filePath, fullPath:req.params[0], projectName:projectName, source: source, "reciving update request from tpds"
  12. tpdsUpdateHandler.newUpdate user_id, projectName, filePath, req, source, (err)->
  13. logger.log user_id:user_id, filePath:filePath, fullPath:req.params[0], "sending response that tpdsUpdate has been completed"
  14. if err?
  15. logger.err err:err, user_id:user_id, filePath:filePath, "error reciving update from tpds"
  16. res.send(500)
  17. else
  18. logger.log user_id:user_id, filePath:filePath, projectName:projectName, "telling tpds update has been processed"
  19. res.send 200
  20. req.session.destroy()
  21. deleteUpdate: (req, res)->
  22. metrics.inc("tpds.delete-update")
  23. {filePath, user_id, projectName} = parseParams(req)
  24. source = req.headers["x-sl-update-source"] or "unknown"
  25. logger.log user_id:user_id, filePath:filePath, projectName:projectName, fullPath:req.params[0], source: source, "reciving delete request from tpds"
  26. tpdsUpdateHandler.deleteUpdate user_id, projectName, filePath, source, (err)->
  27. if err?
  28. logger.err err:err, user_id:user_id, filePath:filePath, "error reciving update from tpds"
  29. res.send(500)
  30. else
  31. logger.log user_id:user_id, filePath:filePath, projectName:projectName, "telling tpds delete has been processed"
  32. res.send 200
  33. req.session.destroy()
  34. updateProjectContents: (req, res, next = (error) ->) ->
  35. {project_id} = req.params
  36. path = "/" + req.params[0] # UpdateMerger expects leading slash
  37. source = req.headers["x-sl-update-source"] or "unknown"
  38. logger.log project_id: project_id, path: path, source: source, "received project contents update"
  39. UpdateMerger.mergeUpdate project_id, path, req, source, (error) ->
  40. return next(error) if error?
  41. res.send(200)
  42. req.session.destroy()
  43. deleteProjectContents: (req, res, next = (error) ->) ->
  44. {project_id} = req.params
  45. path = "/" + req.params[0] # UpdateMerger expects leading slash
  46. source = req.headers["x-sl-update-source"] or "unknown"
  47. logger.log project_id: project_id, path: path, source: source, "received project contents delete request"
  48. UpdateMerger.deleteUpdate project_id, path, source, (error) ->
  49. return next(error) if error?
  50. res.send(200)
  51. req.session.destroy()
  52. parseParams: parseParams = (req)->
  53. path = req.params[0]
  54. user_id = req.params.user_id
  55. path = Path.join("/",path)
  56. if path.substring(1).indexOf('/') == -1
  57. filePath = "/"
  58. projectName = path.substring(1)
  59. else
  60. filePath = path.substring(path.indexOf("/",1))
  61. projectName = path.substring(0, path.indexOf("/",1))
  62. projectName = projectName.replace("/","")
  63. return filePath:filePath, user_id:user_id, projectName:projectName