TemplatesWebController.coffee 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. request = require("request")
  2. settings = require("settings-sharelatex")
  3. logger = require("logger-sharelatex")
  4. module.exports = TemplatesWebController =
  5. renderTemplatesIndexPage: (req, res)->
  6. logger.log "rendering index page of templates"
  7. TemplatesWebController._getDataFromTemplatesApi "/user/#{req.params.user_id}", (err, data)->
  8. if err? or !data?
  9. logger.err err:err, "something went wrong in renderTemplatesIndexPage"
  10. return res.send 500
  11. data.title = "latex_templates"
  12. res.render "templates/index", data
  13. renerTemplateInTag: (req, res)->
  14. {user_id, tag_name, template_name} = req.params
  15. logger.log user_id:user_id, tag_name:tag_name, template_name:template_name, "rendering latex template page"
  16. TemplatesWebController._getDataFromTemplatesApi "/user/#{user_id}/tag/#{tag_name}/template/#{template_name}", (err, data)->
  17. if err? or !data?
  18. logger.err err:err, user_id:user_id, tag_name:tag_name, template_name:template_name, "something went wrong in renerTemplateInTag"
  19. return res.send 500
  20. data.title = data?.template?.name
  21. res.render "templates/template", data
  22. tagOrCanonicalPage: (req, res)->
  23. if req.params.template_id?
  24. TemplatesWebController._renderCanonicalPage(req, res)
  25. else if req.params.tag_name?.toLowerCase() == "all"
  26. TemplatesWebController._renderAllTemplatesPage(req, res)
  27. else if req.params.tag_name?
  28. TemplatesWebController._renderTagPage(req, res)
  29. else
  30. logger.log params:req.params, "problem rendering tagOrCanonicalPage"
  31. res.send 500
  32. proxyToTemplatesApi: (req, res)->
  33. url = req.url
  34. logger.log url:url, "proxying request to templates api"
  35. getReq = request.get("#{settings.apis.templates_api.url}#{url}")
  36. getReq.pipe(res)
  37. getReq.on "error", (error) ->
  38. logger.error err: error, "templates proxy API error"
  39. res.send 500
  40. _renderCanonicalPage: (req, res)->
  41. {user_id, template_id} = req.params
  42. logger.log user_id:user_id, template_id:template_id, "rendering template page"
  43. TemplatesWebController._getDataFromTemplatesApi "/user/#{user_id}/template/#{template_id}", (err, data)->
  44. if err?
  45. logger.err err:err, user_id:user_id, template_id:template_id, "something went wrong in _renderCanonicalPage"
  46. return res.send 500
  47. data.title = data?.template?.name
  48. data.tag = null
  49. res.render "templates/template", data
  50. _renderAllTemplatesPage: (req, res)->
  51. {user_id} = req.params
  52. logger.log user_id:user_id, "rendering all templates page"
  53. TemplatesWebController._getDataFromTemplatesApi "/user/#{user_id}/all", (err, data)->
  54. if err?
  55. logger.err err:err, user_id:user_id, "something went wrong in _renderCanonicalPage"
  56. return res.send 500
  57. data.title = "all_templates"
  58. res.render "templates/tag", data
  59. _renderTagPage: (req, res)->
  60. {user_id, tag_name} = req.params
  61. logger.log user_id:user_id, tag_name:tag_name, "rendinging tag page for templates"
  62. TemplatesWebController._getDataFromTemplatesApi "/user/#{user_id}/tag/#{tag_name}", (err, data)->
  63. if err?
  64. logger.err err:err, user_id:user_id, tag_name:tag_name, "something went wrong in _renderCanonicalPage"
  65. return res.send 500
  66. data.title = data?.tag?.name
  67. res.render "templates/tag", data
  68. _getDataFromTemplatesApi: (path, callback)->
  69. opts =
  70. url: "#{settings.apis.templates_api.url}#{path}"
  71. json:true
  72. request.get opts, (err, response, data)->
  73. callback err, data