WebApiManager.coffee 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. request = require('request').defaults(jar: false)
  2. Settings = require("settings-sharelatex")
  3. # DEPRECATED! This method of getting user details via chat is deprecated
  4. # in the way we lay out our services.
  5. # Instead, web should be responsible for collecting the raw data (user_ids) and
  6. # filling it out with calls to other services. All API calls should create a
  7. # tree-like structure as much as possible, with web as the root.
  8. module.exports = WebApiManager =
  9. apiRequest: (url, method, options = {}, callback = (error, result) ->) ->
  10. if typeof options == "function"
  11. callback = options
  12. options = {}
  13. url = "#{Settings.apis.web.url}#{url}"
  14. options.url = url
  15. options.method = method
  16. request options, (error, response, body) ->
  17. return callback(error) if error?
  18. if 200 <= response.statusCode < 300
  19. try
  20. result = JSON.parse(body)
  21. catch e
  22. return callback(e)
  23. return callback null, result
  24. else
  25. error = new Error("web api returned non-success code: #{response.statusCode}")
  26. error.statusCode = response.statusCode
  27. return callback error
  28. getUserDetails: (user_id, callback = (error, details) ->) ->
  29. @apiRequest "/user/#{user_id}/personal_info", "get", {
  30. auth:
  31. user: Settings.apis.web.user
  32. pass: Settings.apis.web.pass
  33. sendImmediately: true
  34. }, (error, data) ->
  35. if error?
  36. if error.statusCode == 404
  37. return callback null, null
  38. else
  39. return callback error
  40. else
  41. return callback null, data