WebApiManager.coffee 1.0 KB

123456789101112131415161718192021222324252627282930
  1. request = require "request"
  2. settings = require "settings-sharelatex"
  3. logger = require "logger-sharelatex"
  4. module.exports = WebApiManager =
  5. joinProject: (project_id, user, callback = (error, project, privilegeLevel) ->) ->
  6. user_id = user._id
  7. logger.log {project_id, user_id}, "sending join project request to web"
  8. url = "#{settings.apis.web.url}/project/#{project_id}/join"
  9. headers = {}
  10. if user.anonymousAccessToken?
  11. headers['x-sl-anonymous-access-token'] = user.anonymousAccessToken
  12. request.post {
  13. url: url
  14. qs: {user_id}
  15. auth:
  16. user: settings.apis.web.user
  17. pass: settings.apis.web.pass
  18. sendImmediately: true
  19. json: true
  20. jar: false
  21. headers: headers
  22. }, (error, response, data) ->
  23. return callback(error) if error?
  24. if 200 <= response.statusCode < 300
  25. callback null, data?.project, data?.privilegeLevel
  26. else
  27. err = new Error("non-success status code from web: #{response.statusCode}")
  28. logger.error {err, project_id, user_id}, "error accessing web api"
  29. callback err