DropboxWebhookHandler.coffee 828 B

12345678910111213141516171819202122232425
  1. logger = require("logger-sharelatex")
  2. async = require "async"
  3. User = require("../../models/User").User
  4. TpdsUpdateSender = require "../ThirdPartyDataStore/TpdsUpdateSender"
  5. module.exports = DropboxWebhookHandler =
  6. pollDropboxUids: (dropbox_uids, callback = (error) ->) ->
  7. jobs = []
  8. for uid in dropbox_uids
  9. do (uid) ->
  10. jobs.push (callback) ->
  11. DropboxWebhookHandler.pollDropboxUid uid, callback
  12. async.series jobs, callback
  13. pollDropboxUid: (dropbox_uid, callback = (error) ->) ->
  14. User.find {
  15. "dropbox.access_token.uid": dropbox_uid
  16. "features.dropbox": true
  17. }, (error, users = []) ->
  18. return callback(error) if error?
  19. user = users[0]
  20. if !user?
  21. logger.log dropbox_uid: dropbox_uid, "no sharelatex user found"
  22. return callback()
  23. TpdsUpdateSender.pollDropboxForUser user._id, callback