WebApiManager.coffee 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 == 404
  16. logger.log url: url, "got 404 from web api"
  17. return callback null, null
  18. if res.statusCode >= 200 and res.statusCode < 300
  19. return callback null, body
  20. else
  21. error = new Error("web returned a non-success status code: #{res.statusCode}")
  22. callback error
  23. getUserInfo: (user_id, callback = (error, userInfo) ->) ->
  24. url = "/user/#{user_id}/personal_info"
  25. logger.log user_id: user_id, "getting user info from web"
  26. WebApiManager.sendRequest url, (error, body) ->
  27. if error?
  28. logger.error err: error, user_id: user_id, url: url, "error accessing web"
  29. return callback error
  30. if body == null
  31. logger.error user_id: user_id, url: url, "no user found"
  32. return callback null, null
  33. try
  34. user = JSON.parse(body)
  35. catch error
  36. return callback(error)
  37. callback null, {
  38. id: user.id
  39. email: user.email
  40. first_name: user.first_name
  41. last_name: user.last_name
  42. }
  43. getProjectDetails: (project_id, callback = (error, details) ->) ->
  44. url = "/project/#{project_id}/details"
  45. logger.log project_id: project_id, "getting project details from web"
  46. WebApiManager.sendRequest url, (error, body) ->
  47. if error?
  48. logger.error err: error, project_id: project_id, url: url, "error accessing web"
  49. return callback error
  50. try
  51. project = JSON.parse(body)
  52. catch error
  53. return callback(error)
  54. callback null, project