NotificationsHandler.coffee 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. settings = require("settings-sharelatex")
  2. request = require("request")
  3. logger = require("logger-sharelatex")
  4. oneSecond = 1000
  5. module.exports =
  6. getUserNotifications: (user_id, callback)->
  7. opts =
  8. uri: "#{settings.apis.notifications.url}/user/#{user_id}"
  9. json: true
  10. timeout: oneSecond
  11. request.get opts, (err, res, unreadNotifications)->
  12. statusCode = if res? then res.statusCode else 500
  13. if err? or statusCode != 200
  14. e = new Error("something went wrong getting notifications, #{err}, #{statusCode}")
  15. logger.err err:err, "something went wrong getting notifications"
  16. callback(null, [])
  17. else
  18. if !unreadNotifications?
  19. unreadNotifications = []
  20. callback(null, unreadNotifications)
  21. createNotification: (user_id, key, templateKey, messageOpts, callback)->
  22. opts =
  23. uri: "#{settings.apis.notifications.url}/user/#{user_id}"
  24. timeout: oneSecond
  25. json: {
  26. key:key
  27. messageOpts:messageOpts
  28. templateKey:templateKey
  29. }
  30. logger.log opts:opts, "creating notification for user"
  31. request.post opts, callback
  32. markAsReadWithKey: (user_id, key, callback)->
  33. opts =
  34. uri: "#{settings.apis.notifications.url}/user/#{user_id}"
  35. timeout: oneSecond
  36. json: {
  37. key:key
  38. }
  39. logger.log user_id:user_id, key:key, "sending mark notification as read with key to notifications api"
  40. request.del opts, callback
  41. markAsRead: (user_id, notification_id, callback)->
  42. opts =
  43. uri: "#{settings.apis.notifications.url}/user/#{user_id}/notification/#{notification_id}"
  44. timeout:oneSecond
  45. logger.log user_id:user_id, notification_id:notification_id, "sending mark notification as read to notifications api"
  46. request.del opts, callback