WebApiManager.coffee 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. request = require "request"
  2. logger = require "logger-sharelatex"
  3. Settings = require "settings-sharelatex"
  4. module.exports = WebApiManager =
  5. sendRequest: (url, callback = (error, body) ->) ->
  6. request.get {
  7. url: "#{Settings.apis.web.url}#{url}"
  8. auth:
  9. user: Settings.apis.web.user
  10. pass: Settings.apis.web.pass
  11. sendImmediately: true
  12. }, (error, res, body)->
  13. if error?
  14. return callback(error)
  15. if res.statusCode >= 200 and res.statusCode < 300
  16. return callback null, body
  17. else
  18. error = new Error("web returned a non-success status code: #{res.statusCode}")
  19. callback error
  20. getUserInfo: (user_id, callback = (error, userInfo) ->) ->
  21. url = "/user/#{user_id}/personal_info"
  22. logger.log user_id: user_id, "getting user info from web"
  23. WebApiManager.sendRequest url, (error, body) ->
  24. if error?
  25. logger.error err: error, user_id: user_id, url: url, "error accessing web"
  26. return callback error
  27. try
  28. user = JSON.parse(body)
  29. catch error
  30. return callback(error)
  31. callback null, {
  32. id: user.id
  33. email: user.email
  34. first_name: user.first_name
  35. last_name: user.last_name
  36. }
  37. getProjectDetails: (project_id, callback = (error, details) ->) ->
  38. url = "/project/#{project_id}/details"
  39. logger.log project_id: project_id, "getting project details from web"
  40. WebApiManager.sendRequest url, (error, body) ->
  41. if error?
  42. logger.error err: error, project_id: project_id, url: url, "error accessing web"
  43. return callback error
  44. try
  45. project = JSON.parse(body)
  46. catch error
  47. return callback(error)
  48. callback null, project