UNPKG

datocms-client

Version:

For new DatoCMS users, we recommend @datocms/cma-client-node

85 lines (66 loc) 2.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = uploadFromUrl; var _nodeLocal = _interopRequireDefault(require("./nodeLocal")); var _downloadLocally = _interopRequireDefault(require("../../utils/downloadLocally")); 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 uploadFromUrl(client, fileUrl, options) { var isCancelled = false; var cancelFn = null; var start = /*#__PURE__*/function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { var downloadRequest, _yield$downloadReques, filePath, deleteTmpFile, uploadRequest; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: downloadRequest = (0, _downloadLocally["default"])(fileUrl, options); cancelFn = downloadRequest.cancel; _context.next = 4; return downloadRequest.promise; case 4: _yield$downloadReques = _context.sent; filePath = _yield$downloadReques.filePath; deleteTmpFile = _yield$downloadReques.deleteTmpFile; uploadRequest = (0, _nodeLocal["default"])(client, filePath, options); cancelFn = uploadRequest.cancel; _context.prev = 9; if (!isCancelled) { _context.next = 12; break; } throw new Error('upload aborted'); case 12: _context.next = 14; return uploadRequest.promise; case 14: return _context.abrupt("return", _context.sent); case 15: _context.prev = 15; deleteTmpFile(); return _context.finish(15); case 18: case "end": return _context.stop(); } } }, _callee, null, [[9,, 15, 18]]); })); return function start() { return _ref.apply(this, arguments); }; }(); return { promise: start(), cancel: function cancel() { isCancelled = true; if (cancelFn) { cancelFn(); } } }; }