TemplatesWebController.coffee 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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?
  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?
  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.tag = null
  48. res.render "templates/template", data
  49. _renderAllTemplatesPage: (req, res)->
  50. {user_id} = req.params
  51. logger.log user_id:user_id, "rendering all templates page"
  52. TemplatesWebController._getDataFromTemplatesApi "/user/#{user_id}/all", (err, data)->
  53. if err?
  54. logger.err err:err, user_id:user_id, "something went wrong in _renderCanonicalPage"
  55. return res.send 500
  56. data.title = "All Templates"
  57. res.render "templates/tag", data
  58. _renderTagPage: (req, res)->
  59. {user_id, tag_name} = req.params
  60. logger.log user_id:user_id, tag_name:tag_name, "rendinging tag page for templates"
  61. TemplatesWebController._getDataFromTemplatesApi "/user/#{user_id}/tag/#{tag_name}", (err, data)->
  62. if err?
  63. logger.err err:err, user_id:user_id, tag_name:tag_name, "something went wrong in _renderCanonicalPage"
  64. return res.send 500
  65. data.title = data.tag.name
  66. res.render "templates/tag", data
  67. _getDataFromTemplatesApi: (path, callback)->
  68. opts =
  69. url: "#{settings.apis.templates_api.url}#{path}"
  70. json:true
  71. request.get opts, (err, response, data)->
  72. callback err, data