UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

69 lines (65 loc) 3.14 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var logger = require('../../../services/logger'); var ContactGetter = require('./contact-getter'); function AttributesGetter(Implementation, params, opts, mappingValue) { var Intercom = opts.integrations.intercom.intercom; var intercom = new Intercom.Client(opts.integrations.intercom.credentials); this.perform = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() { var contactQueryResponse, contact, tags, companies; return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 3; return ContactGetter.getContact(intercom, Implementation, mappingValue, params.recordId); case 3: contactQueryResponse = _context.sent; if (!(!contactQueryResponse || !contactQueryResponse.body || !contactQueryResponse.body.data || !contactQueryResponse.body.data[0])) { _context.next = 7; break; } logger.error('Cannot access to Intercom attributes: No intercom contact matches the given key'); return _context.abrupt("return", null); case 7: contact = contactQueryResponse.body.data[0]; contact.city = contact.location.city; contact.country = contact.location.country; // NOTICE: This slows down the request _context.next = 12; return intercom.get("/contacts/".concat(contact.id, "/tags")); case 12: tags = _context.sent; contact.tags = tags.body.data.map(function (tag) { return tag.name; }); // NOTICE: This slows down the request _context.next = 16; return intercom.get("/contacts/".concat(contact.id, "/companies")); case 16: companies = _context.sent; contact.companies = companies.body.data.map(function (company) { return company.name; }); // NOTICE: As of v2.0, intercom API does not retrieve the segments a contact is part of // You can look for a contact with a given segment id but it isn't retrieved with it return _context.abrupt("return", contact); case 21: _context.prev = 21; _context.t0 = _context["catch"](0); if (_context.t0.statusCode) { logger.error('Cannot retrieve Intercom attributes for the following reason: ', _context.t0); } else { logger.error('Internal error while retrieving Intercom attributes: ', _context.t0); } return _context.abrupt("return", null); case 25: case "end": return _context.stop(); } }, _callee, null, [[0, 21]]); })); } module.exports = AttributesGetter;