UNPKG

cimpress-customizr

Version:

A thin client for Cimpress Customizr service

236 lines (193 loc) 8.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _pope = require("pope"); var _axios = _interopRequireDefault(require("axios")); var _axiosRetry = _interopRequireDefault(require("axios-retry")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var DEFAULT_BASE_URL = 'https://customizr.at.cimpress.io'; var SESSION_PROXY_URL = 'https://sessions.cimpress.io'; var CustomizrClient = /*#__PURE__*/ function () { function CustomizrClient(options) { _classCallCheck(this, CustomizrClient); this.baseUrl = options.baseUrl || DEFAULT_BASE_URL; this.resource = encodeURIComponent(options.resource); this.timeout = options.timeout || 3000; this.retryAttempts = options.retryAttempts || 2; this.retryDelayInMs = options.retryDelayInMs || 1000; var understoodOptions = ['baseUrl', 'resource', 'timeout', 'retryAttempts', 'retryDelayInMs']; Object.keys(options).forEach(function (passedOption) { if (understoodOptions.indexOf(passedOption) === -1) { // eslint-disable-next-line no-console console.error("[CustomizrClient] Option '".concat(passedOption, "' is not understood and will be ignored.")); } }); } _createClass(CustomizrClient, [{ key: "__getUrl", value: function __getUrl(resource) { return "".concat((0, _pope.pope)('/v1/resources/{{resource}}/settings', { resource: resource || this.resource })); } }, { key: "__getProxyUrl", value: function __getProxyUrl(url, method) { return "".concat((0, _pope.pope)('/v1/sessions/proxy?proxyUrl={{url}}&proxyUrlMethod={{method}}', { url: url, method: method })); } }, { key: "__getAxiosInstance", value: function __getAxiosInstance(accessToken, sessionId) { var _this = this; var instance = _axios["default"].create({ baseURL: accessToken ? this.baseUrl : SESSION_PROXY_URL, timeout: this.timeout, headers: accessToken ? { Authorization: "Bearer ".concat(accessToken) } : { 'x-session-id': sessionId } }); if (this.retryAttempts > 0) { (0, _axiosRetry["default"])(instance, { retries: this.retryAttempts, retryDelay: function retryDelay(retryCount) { return _this.retryDelayInMs; }, shouldResetTimeout: true }); } return instance; } }, { key: "getSettings", value: function () { var _getSettings = _asyncToGenerator( /*#__PURE__*/ _regenerator["default"].mark(function _callee(accessToken) { var resource, sessionId, axiosInstance, response, _args = arguments; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: resource = _args.length > 1 && _args[1] !== undefined ? _args[1] : undefined; sessionId = _args.length > 2 && _args[2] !== undefined ? _args[2] : undefined; axiosInstance = this.__getAxiosInstance(accessToken, sessionId); _context.prev = 3; if (!accessToken) { _context.next = 10; break; } _context.next = 7; return axiosInstance.get(this.__getUrl(resource)); case 7: _context.t0 = _context.sent; _context.next = 13; break; case 10: _context.next = 12; return axiosInstance.post(this.__getProxyUrl("".concat(this.baseUrl).concat(this.__getUrl(resource)), 'get'), {}); case 12: _context.t0 = _context.sent; case 13: response = _context.t0; return _context.abrupt("return", response.data); case 17: _context.prev = 17; _context.t1 = _context["catch"](3); if (!(_context.t1.response && _context.t1.response.status !== 404)) { _context.next = 21; break; } throw _context.t1; case 21: return _context.abrupt("return", {}); case 22: case "end": return _context.stop(); } } }, _callee, this, [[3, 17]]); })); function getSettings(_x) { return _getSettings.apply(this, arguments); } return getSettings; }() }, { key: "putSettings", value: function () { var _putSettings = _asyncToGenerator( /*#__PURE__*/ _regenerator["default"].mark(function _callee2(accessToken, update) { var resource, sessionId, settings, newSettings, axiosInstance, response, _args2 = arguments; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: resource = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : undefined; sessionId = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : undefined; _context2.next = 4; return this.getSettings(accessToken, resource, sessionId); case 4: settings = _context2.sent; newSettings = Object.assign({}, settings, update); axiosInstance = this.__getAxiosInstance(accessToken, sessionId); if (!accessToken) { _context2.next = 13; break; } _context2.next = 10; return axiosInstance.put(this.__getUrl(resource), newSettings); case 10: _context2.t0 = _context2.sent; _context2.next = 16; break; case 13: _context2.next = 15; return axiosInstance.post(this.__getProxyUrl("".concat(this.baseUrl).concat(this.__getUrl(resource)), 'put'), newSettings); case 15: _context2.t0 = _context2.sent; case 16: response = _context2.t0; return _context2.abrupt("return", response.data); case 18: case "end": return _context2.stop(); } } }, _callee2, this); })); function putSettings(_x2, _x3) { return _putSettings.apply(this, arguments); } return putSettings; }() }]); return CustomizrClient; }(); var _default = CustomizrClient; exports["default"] = _default;