AnalyticsManager.coffee 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. settings = require "settings-sharelatex"
  2. logger = require "logger-sharelatex"
  3. _ = require "underscore"
  4. request = require "requestretry"
  5. Errors = require '../Errors/Errors'
  6. makeRequest = (opts, callback)->
  7. if settings.apis?.analytics?.url?
  8. urlPath = opts.url
  9. opts.url = "#{settings.apis.analytics.url}#{urlPath}"
  10. request opts, callback
  11. else
  12. callback(new Errors.ServiceNotConfiguredError('Analytics service not configured'))
  13. module.exports =
  14. identifyUser: (user_id, old_user_id, callback = (error)->)->
  15. opts =
  16. body:
  17. old_user_id:old_user_id
  18. json:true
  19. method:"POST"
  20. timeout:1000
  21. url: "/user/#{user_id}/identify"
  22. makeRequest opts, callback
  23. recordEvent: (user_id, event, segmentation = {}, callback = (error) ->) ->
  24. if user_id+"" == settings.smokeTest?.userId+""
  25. return callback()
  26. opts =
  27. body:
  28. event:event
  29. segmentation:segmentation
  30. json:true
  31. method:"POST"
  32. timeout:1000
  33. url: "/user/#{user_id}/event"
  34. maxAttempts: 20
  35. retryDelay: 5000
  36. if settings.overleaf?
  37. opts.qs = {fromV2: 1}
  38. makeRequest opts, callback
  39. updateEditingSession: (userId, projectId, countryCode, segmentation = {}, callback = (error) ->) ->
  40. if userId+"" == settings.smokeTest?.userId+""
  41. return callback()
  42. opts =
  43. body:
  44. segmentation: segmentation
  45. json: true
  46. method: "PUT"
  47. timeout: 1000
  48. url: "/editingSession"
  49. qs:
  50. userId: userId
  51. projectId: projectId
  52. countryCode: countryCode || undefined
  53. maxAttempts: 20
  54. retryDelay: 5000
  55. if settings.overleaf?
  56. opts.qs.fromV2 = 1
  57. makeRequest opts, callback
  58. getLastOccurrence: (user_id, event, callback = (error) ->) ->
  59. opts =
  60. body:
  61. event:event
  62. json:true
  63. method:"POST"
  64. timeout:1000
  65. url: "/user/#{user_id}/event/last_occurrence"
  66. makeRequest opts, (err, response, body)->
  67. if err?
  68. console.log response, opts
  69. logger.err {user_id, err}, "error getting last occurance of event"
  70. return callback err
  71. else
  72. return callback null, body