UNPKG

react-escalade-priceline

Version:
180 lines (140 loc) 4.5 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var fetchMethod = function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(options) { var _this = this; var ids, body, fetchObj, res; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!options.site) { console.log('Warning: No site option set.'); } ids = []; if (options.ids) { ids.push.apply(ids, (0, _toConsumableArray3.default)(options.ids)); } if (options.id) { ids.push(options.id); } if (ids.length) { _context.next = 6; break; } return _context.abrupt('return'); case 6: // Fetch data body = (0, _stringify2.default)({ skus: ids }); fetchObj = { headers: { 'ESC-API-Context': options.site }, method: 'POST', body: body }; if (options.debug) { console.log('Options sent through priceline: ', (0, _stringify2.default)(options, null, 2)); console.log('Ids being sent: ', (0, _stringify2.default)(ids, null, 2)); console.log('Fetch Object: ', (0, _stringify2.default)(fetchObj, null, 2)); } _context.next = 11; return (0, _isomorphicFetch2.default)(options.endpoint, fetchObj); case 11: res = _context.sent; _context.prev = 12; _context.next = 15; return res.json(); case 15: res = _context.sent; _context.next = 26; break; case 18: _context.prev = 18; _context.t0 = _context['catch'](12); _context.t1 = console; _context.t2 = _context.t0; _context.next = 24; return res.text(); case 24: _context.t3 = _context.sent; _context.t1.log.call(_context.t1, 'res.json() error: ', _context.t2, _context.t3); case 26: if (options.debug) { console.log('fetch response from priceline: ', res); } if ('inventory' in res) { res = extractStock(res, ids); } if ('prices' in res) { res = extractPrices(res, ids); } this.setState(res); // Repoll interval if ((typeof window === 'undefined' ? 'undefined' : (0, _typeof3.default)(window)) === 'object') { clearTimeout(this.timeout); this.timeout = setTimeout(function () { _this.fetch((0, _extends3.default)({}, options, { ids: (0, _keys2.default)(_this.state) })); }, 60 * 1000); } case 31: case 'end': return _context.stop(); } } }, _callee, this, [[12, 18]]); })); return function fetchMethod(_x) { return _ref.apply(this, arguments); }; }(); var _isomorphicFetch = require('isomorphic-fetch'); var _isomorphicFetch2 = _interopRequireDefault(_isomorphicFetch); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function extractStock(res, ids) { var newRes = {}; res = res.inventory || {}; for (var i = ids.length; i--;) { var id = ids[i].toUpperCase(); if (id in res) { newRes[id.toLowerCase()] = res[id].stock; } else { newRes[id.toLowerCase()] = 0; } } return newRes; } function extractPrices(res, ids) { var newRes = {}; res = res.prices || {}; for (var i = ids.length; i--;) { var id = ids[i].toUpperCase(); if (id in res) { newRes[id.toLowerCase()] = Number(res[id].price); } else { newRes[id.toLowerCase()] = false; } } return newRes; } exports.default = fetchMethod;