From 8a8a5a7079f8dbd5ae3786ef1cb746c75fb2a456 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 21 Mar 2017 10:57:09 +0000 Subject: [PATCH 1/3] Add a 'ServiceNotConfiguredError' to Errors module. --- services/web/app/coffee/Features/Errors/Errors.coffee | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Errors/Errors.coffee b/services/web/app/coffee/Features/Errors/Errors.coffee index 0bbff1f19b..92228f7b0b 100644 --- a/services/web/app/coffee/Features/Errors/Errors.coffee +++ b/services/web/app/coffee/Features/Errors/Errors.coffee @@ -5,5 +5,14 @@ NotFoundError = (message) -> return error NotFoundError.prototype.__proto__ = Error.prototype + +ServiceNotConfiguredError = (message) -> + error = new Error(message) + error.name = "ServiceNotConfiguredError" + error.__proto__ = ServiceNotConfiguredError.prototype + return error + + module.exports = Errors = - NotFoundError: NotFoundError \ No newline at end of file + NotFoundError: NotFoundError + ServiceNotConfiguredError: ServiceNotConfiguredError From 1ed1eaaa052a04a727771a51429ad9313e1d2385 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 21 Mar 2017 10:57:39 +0000 Subject: [PATCH 2/3] If analytics is not configured, produce a ServiceNotConfiguredError --- .../coffee/Features/Analytics/AnalyticsController.coffee | 9 ++++++++- .../coffee/Features/Analytics/AnalyticsManager.coffee | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/services/web/app/coffee/Features/Analytics/AnalyticsController.coffee b/services/web/app/coffee/Features/Analytics/AnalyticsController.coffee index f9431a0f5c..75a8bf092a 100644 --- a/services/web/app/coffee/Features/Analytics/AnalyticsController.coffee +++ b/services/web/app/coffee/Features/Analytics/AnalyticsController.coffee @@ -1,7 +1,14 @@ AnalyticsManager = require "./AnalyticsManager" +Errors = require "../Errors/Errors" + module.exports = AnalyticsController = recordEvent: (req, res, next) -> AnalyticsManager.recordEvent req.session?.user?._id, req.params.event, req.body, (error) -> - return next(error) if error? + if error? + if error instanceof Errors.ServiceNotConfiguredError + # ignore, no-op + return next(204) + else + return next(error) res.send 204 diff --git a/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee b/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee index 9f34d6d9d1..66d2818032 100644 --- a/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee +++ b/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee @@ -2,6 +2,7 @@ settings = require "settings-sharelatex" logger = require "logger-sharelatex" _ = require "underscore" request = require "request" +Errors = require '../Errors/Errors' makeRequest = (opts, callback)-> @@ -10,8 +11,7 @@ makeRequest = (opts, callback)-> opts.url = "#{settings.apis.analytics.url}#{urlPath}" request opts, callback else - callback() - + callback(new Errors.ServiceNotConfiguredError('Analytics service not configured')) module.exports = From 1663f2a8eb6e19fa490bb8f24f15253b6bd56d95 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 21 Mar 2017 11:09:39 +0000 Subject: [PATCH 3/3] Use res.send, not next --- .../app/coffee/Features/Analytics/AnalyticsController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Analytics/AnalyticsController.coffee b/services/web/app/coffee/Features/Analytics/AnalyticsController.coffee index 75a8bf092a..1f2466674c 100644 --- a/services/web/app/coffee/Features/Analytics/AnalyticsController.coffee +++ b/services/web/app/coffee/Features/Analytics/AnalyticsController.coffee @@ -8,7 +8,7 @@ module.exports = AnalyticsController = if error? if error instanceof Errors.ServiceNotConfiguredError # ignore, no-op - return next(204) + return res.send(204) else return next(error) res.send 204