WikiController.coffee 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. request = require("request")
  2. settings = require("settings-sharelatex")
  3. logger = require("logger-sharelatex")
  4. ErrorController = require "../Errors/ErrorController"
  5. module.exports = WikiController =
  6. getPage: (req, res, next) ->
  7. page = req.url.replace(/^\/learn/, "").replace(/^\//, "")
  8. if page == ""
  9. page = "Main_Page"
  10. logger.log page: page, "getting page from wiki"
  11. WikiController._getPageContent "Contents", (error, contents) ->
  12. return next(error) if error?
  13. WikiController._getPageContent page, (error, page) ->
  14. return next(error) if error?
  15. res.render "wiki/page", {
  16. page: page
  17. contents: contents
  18. }
  19. _getPageContent: (page, callback = (error, data = { content: "", title: "" }) ->) ->
  20. request {
  21. url: "#{settings.apis.wiki.url}/learn-scripts/api.php"
  22. qs: {
  23. page: decodeURI(page)
  24. action: "parse"
  25. format: "json"
  26. }
  27. }, (err, response, data)->
  28. return callback(err) if err?
  29. try
  30. data = JSON.parse(data)
  31. catch err
  32. logger.err err:err, data:data, "error parsing data from wiki"
  33. callback null, {
  34. content: data?.parse?.text?['*']
  35. title: data?.parse?.title
  36. }