UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

50 lines (49 loc) 2.67 kB
"use strict"; var _ = require('lodash'); var IntegrationInformationsGetter = require('./services/integration-informations-getter'); var AttributesGetter = require('./services/attributes-getter'); var serializeAttributes = require('./serializers/intercom-attributes'); var ConversationsGetter = require('./services/conversations-getter'); var serializeConversations = require('./serializers/intercom-conversations'); var ConversationGetter = require('./services/conversation-getter'); var serializeConversation = require('./serializers/intercom-conversation'); var path = require('../../services/path'); var auth = require('../../services/auth'); module.exports = function Routes(app, model, Implementation, options) { var _this = this; var modelName = Implementation.getModelName(model); var integrationInfo; if (options.integrations && options.integrations.intercom) { integrationInfo = new IntegrationInformationsGetter(modelName, Implementation, options.integrations.intercom).perform(); } this.getAttributes = function (request, response, next) { new AttributesGetter(Implementation, _.extend(request.query, request.params), options, integrationInfo).perform().then(function (attributes) { return serializeAttributes(attributes, modelName); }).then(function (attributes) { response.send(attributes); })["catch"](next); }; this.listConversations = function (request, response, next) { new ConversationsGetter(Implementation, _.extend(request.query, request.params), options, integrationInfo).perform().spread(function (count, conversations) { return serializeConversations(conversations, modelName, { count: count }); }).then(function (conversations) { response.send(conversations); })["catch"](next); }; this.getConversation = function (request, response, next) { new ConversationGetter(Implementation, _.extend(request.query, request.params), options).perform().then(function (conversation) { return serializeConversation(conversation, modelName); }).then(function (conversation) { response.send(conversation); })["catch"](next); }; this.perform = function () { if (integrationInfo) { app.get(path.generate("".concat(modelName, "/:recordId/intercom_attributes"), options), auth.ensureAuthenticated, _this.getAttributes); app.get(path.generate("".concat(modelName, "/:recordId/intercom_conversations"), options), auth.ensureAuthenticated, _this.listConversations); app.get(path.generate("".concat(modelName, "_intercom_conversations/:conversationId"), options), auth.ensureAuthenticated, _this.getConversation); } }; };