TpdsPollingBackgroundTasks.coffee 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. User = require('../../models/User').User
  2. settings = require('settings-sharelatex')
  3. request = require "request"
  4. logger = require('logger-sharelatex')
  5. redis = require('redis')
  6. rclient = redis.createClient(settings.redis.web.port, settings.redis.web.host)
  7. rclient.auth(settings.redis.web.password)
  8. LAST_TIME_POLL_HAPPEND_KEY = "LAST_TIME_POLL_HAPPEND_KEY"
  9. self = module.exports =
  10. pollUsersWithDropbox: (callback)->
  11. self._getUserIdsWithDropbox (err, user_ids)=>
  12. logger.log user_ids:user_ids, userCount:user_ids.length, "telling tpds to poll users with dropbox"
  13. self._markPollHappened()
  14. self._sendToTpds user_ids, callback
  15. _sendToTpds : (user_ids, callback)->
  16. if user_ids.length > 0
  17. request.post {uri:"#{settings.apis.thirdPartyDataStore.url}/user/poll", json:{user_ids:user_ids}}, callback
  18. else if callback?
  19. callback()
  20. _getUserIdsWithDropbox: (callback)->
  21. User.find {"dropbox.access_token.oauth_token_secret":{"$exists":true}}, "_id", (err, users)->
  22. ids = users.map (user)->
  23. return user._id+""
  24. callback err, ids
  25. _markPollHappened: (callback)->
  26. rclient.set LAST_TIME_POLL_HAPPEND_KEY, new Date().getTime(), callback
  27. getLastTimePollHappned: (callback = (err, lastTimePollHappened)->)->
  28. rclient.get LAST_TIME_POLL_HAPPEND_KEY, callback