cimpress-customizr
Version:
A thin client for Cimpress Customizr service
236 lines (193 loc) • 8.39 kB
JavaScript
"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;