NewsletterManager.coffee 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. async = require('async')
  2. Request = require('request')
  3. logger = require 'logger-sharelatex'
  4. Settings = require 'settings-sharelatex'
  5. module.exports =
  6. subscribe: (user, callback = () ->)->
  7. if !Settings.markdownmail?
  8. logger.warn "No newsletter provider configured so not subscribing user"
  9. return callback()
  10. logger.log user:user, email:user.email, "trying to subscribe user to the mailing list"
  11. options = buildOptions(user, true)
  12. Request.post options, (err, response, body)->
  13. logger.log body:body, user:user, "finished attempting to subscribe the user to the news letter"
  14. callback(err)
  15. unsubscribe: (user, callback = () ->)->
  16. if !Settings.markdownmail?
  17. logger.warn "No newsletter provider configured so not unsubscribing user"
  18. return callback()
  19. logger.log user:user, email:user.email, "trying to unsubscribe user to the mailing list"
  20. options = buildOptions(user, false)
  21. Request.post options, (err, response, body)->
  22. logger.log err:err, body:body, email:user.email, "compled newsletter unsubscribe attempt"
  23. callback(err)
  24. buildOptions = (user, is_subscribed)->
  25. options =
  26. json:
  27. secret_token: Settings.markdownmail.secret
  28. name: "#{user.first_name} #{user.last_name}"
  29. email: user.email
  30. subscriber_list_id: Settings.markdownmail.list_id
  31. is_subscribed: is_subscribed
  32. url: "https://www.markdownmail.io/lists/subscribe"
  33. timeout: 30 * 1000
  34. return options