UNPKG

@dolbyio/dolbyio-rest-apis-client

Version:
350 lines (342 loc) 18.2 kB
"use strict"; function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); exports.updateMediaAsset = exports.registerMediaAsset = exports.read = exports.list = exports.generateUploadCredentials = exports.deleteAssets = exports.deleteAllAssets = exports.create = void 0; var Urls = _interopRequireWildcard(require("../urls")); var _httpHelpers = require("./internal/httpHelpers"); var _stringHelpers = require("./internal/stringHelpers"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); } function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); } function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } /** * ## Creates Media Asset * * Create a live clip from an ongoing live stream. You must provide the stream name and start time, and once processing is complete the media asset of the type clip will be available for retrieval. * * If a stop time is not specified, the time the request was received will be used. The clip duration must be a minimum of ten (10) seconds and cannot exceed eight (8) hours. * * There are a few cases where more than one clip will be generated from a single request. * 1. A stream went offline during the time range will generate separate clips for the period before and after the restart. * 1. A stream that is configured for multi-source when a simulcastId is not given in the request to select a single layer. * 1. A stream that is configured for multi-bitrate contribution or redundant fallback ingest and a sourceId is not given in the request to specify which to use. In that scenario, sources will be ranked based on the following criteria and the highest ranked source is selected for clipping: * * priority * * quality * * start time * * By using an `Idempotency-Key` header in your requests, you can avoid generating more than one identical clip should the same request be received more than once. * To avoid unnecessary charges, it is recommended you use a common identifier for live clip requests based on a common source stream and time range. * For background on the usage of this header, please refer to the {@link https://datatracker.ietf.org/doc/draft-ietf-httpapi-idempotency-key-header/ | IETF Draft}. * * @see {@link https://optiview.dolby.com/docs/millicast/api/media-assets-create-media-asset/} * * @param apiSecret The API Secret used to authenticate this request. * @param clipRequest The request body for creating a new media asset. * @param idempotencyKey Optional, The unique identifier for this request to prevent duplicate submissions. */ var create = exports.create = /*#__PURE__*/function () { var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(apiSecret, clipRequest, idempotencyKey) { var options; return _regenerator().w(function (_context) { while (1) switch (_context.n) { case 0: options = { hostname: Urls.getRtsHostname(), path: '/api/v3/media/assets', headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: "Bearer ".concat(apiSecret), 'Idempotency-Key': idempotencyKey }, body: JSON.stringify(clipRequest) }; _context.n = 1; return (0, _httpHelpers.sendPost)(options); case 1: return _context.a(2, _context.v); } }, _callee); })); return function create(_x, _x2, _x3) { return _ref.apply(this, arguments); }; }(); /** * ## Lists Media Assets * * List media assets, excluding those that have been deleted. A media asset can be: * 1. A `"recording"` that is from the full duration of the stream * 1. A `"clip"` which is generated from {@link create | Create Media Asset} * 1. A `"timeline"` which is a series of segments that is buffered in a cache and available for clipping. A `"timeline"` is capped at a 12 hour duration or whenever the stream is re-started. * 1. Of type `storageValidation`, which is a record reflecting the outcome of triggering Validate Third Party Storage Setup * * @see {@link https://optiview.dolby.com/docs/millicast/api/media-assets-list-media-assets/} * * @param apiSecret The API Secret used to authenticate this request. * @param params Query parameters for filtering the list of media assets. * * @returns A {@link !Promise Promise} whose fulfillment handler receives an array of {@link AssetResponseData} objects. */ var list = exports.list = /*#__PURE__*/function () { var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(apiSecret, params) { var options; return _regenerator().w(function (_context2) { while (1) switch (_context2.n) { case 0: options = { hostname: Urls.getRtsHostname(), path: '/api/v3/media/assets', headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: "Bearer ".concat(apiSecret) }, params: (0, _stringHelpers.toDictString)(params) }; _context2.n = 1; return (0, _httpHelpers.sendGet)(options); case 1: return _context2.a(2, _context2.v); } }, _callee2); })); return function list(_x4, _x5) { return _ref2.apply(this, arguments); }; }(); /** * ## Delete Media Assets * * Deletes multiple media assets from storage. * * @remarks Only media assets with status Complete or Error can be deleted. * * @see {@link https://optiview.dolby.com/docs/millicast/api/media-assets-delete-media-assets/} * * @param apiSecret The API Secret used to authenticate this request. * @param assetIds The list of asset IDs to delete. * * @returns A {@link !Promise Promise} whose fulfillment handler receives an array of asset deletion tasks that failed. */ var deleteAssets = exports.deleteAssets = /*#__PURE__*/function () { var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(apiSecret, assetIds) { var options; return _regenerator().w(function (_context3) { while (1) switch (_context3.n) { case 0: options = { hostname: Urls.getRtsHostname(), path: 'api/v3/media/assets', headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: "Bearer ".concat(apiSecret) }, params: (0, _stringHelpers.toDictString)(assetIds) }; _context3.n = 1; return (0, _httpHelpers.sendDelete)(options); case 1: return _context3.a(2, _context3.v); } }, _callee3); })); return function deleteAssets(_x6, _x7) { return _ref3.apply(this, arguments); }; }(); /** * ## Read Media Asset * * Gets media asset specified by id. Includes temporary download link if the media asset is complete. * * @see {@link https://optiview.dolby.com/docs/millicast/api/media-assets-read-media-asset/} * * @param apiSecret The API Secret used to authenticate this request. * @param assetId The ID of the media asset to read. * * @returns A {@link !Promise Promise} whose fulfillment handler receives an {@link AssetResponseData} object. */ var read = exports.read = /*#__PURE__*/function () { var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(apiSecret, assetId) { var options; return _regenerator().w(function (_context4) { while (1) switch (_context4.n) { case 0: options = { hostname: Urls.getRtsHostname(), path: "/api/v3/media/assets/".concat(assetId), headers: { Accept: 'application/json', Authorization: "Bearer ".concat(apiSecret) } }; _context4.n = 1; return (0, _httpHelpers.sendGet)(options); case 1: return _context4.a(2, _context4.v); } }, _callee4); })); return function read(_x8, _x9) { return _ref4.apply(this, arguments); }; }(); /** * ## Delete All Media Assets * * Deletes all media assets of a specified type from storage. * * @see {@link https://optiview.dolby.com/docs/millicast/api/media-assets-delete-media-assets-2/} * * @param apiSecret The API Secret used to authenticate this request. * @param mediaAssetType Asset type to delete. * * @returns A {@link !Promise Promise} whose fulfillment handler receives an array of asset deletion tasks that failed. */ var deleteAllAssets = exports.deleteAllAssets = /*#__PURE__*/function () { var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(apiSecret, mediaAssetType) { var options; return _regenerator().w(function (_context5) { while (1) switch (_context5.n) { case 0: options = { hostname: Urls.getRtsHostname(), path: 'api/v3/media/assets/all', headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: "Bearer ".concat(apiSecret) }, params: { type: mediaAssetType } }; _context5.n = 1; return (0, _httpHelpers.sendDelete)(options); case 1: return _context5.a(2, _context5.v); } }, _callee5); })); return function deleteAllAssets(_x0, _x1) { return _ref5.apply(this, arguments); }; }(); /** * ## Generate Upload Credentials * * Generate AWS access credentials for uploading media to a specified S3 location. * * @see {@link https://optiview.dolby.com/docs/millicast/api/media-assets-get-upload-credentials/} * * @param apiSecret The API Secret used to authenticate this request. */ var generateUploadCredentials = exports.generateUploadCredentials = /*#__PURE__*/function () { var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(apiSecret) { var options; return _regenerator().w(function (_context6) { while (1) switch (_context6.n) { case 0: options = { hostname: Urls.getRtsHostname(), path: '/api/v3/media/assets/upload', headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: "Bearer ".concat(apiSecret) } }; _context6.n = 1; return (0, _httpHelpers.sendPost)(options); case 1: return _context6.a(2, _context6.v); } }, _callee6); })); return function generateUploadCredentials(_x10) { return _ref6.apply(this, arguments); }; }(); /** * ## Registers Media Asset * * Register media asset upon completion of content upload. * * @see {@link https://optiview.dolby.com/docs/millicast/api/media-assets-register-media-asset/} * * @param apiSecret The API Secret used to authenticate this request. * @param registrationRequest The request body for creating a new media asset. */ var registerMediaAsset = exports.registerMediaAsset = /*#__PURE__*/function () { var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(apiSecret, registrationRequest) { var options; return _regenerator().w(function (_context7) { while (1) switch (_context7.n) { case 0: options = { hostname: Urls.getRtsHostname(), path: '/api/v3/media/assets/register', headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: "Bearer ".concat(apiSecret) }, body: JSON.stringify(registrationRequest) }; _context7.n = 1; return (0, _httpHelpers.sendPost)(options); case 1: return _context7.a(2, _context7.v); } }, _callee7); })); return function registerMediaAsset(_x11, _x12) { return _ref7.apply(this, arguments); }; }(); /** * ## Updates Media Asset * * Update media asset settings. * * @see {@link https://optiview.dolby.com/docs/millicast/api/media-assets-update-media-asset/} * * @param apiSecret The API Secret used to authenticate this request. * @param updateRequest The request body for creating a new media asset. */ var updateMediaAsset = exports.updateMediaAsset = /*#__PURE__*/function () { var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(apiSecret, updateRequest) { var body, options; return _regenerator().w(function (_context8) { while (1) switch (_context8.n) { case 0: body = { mediaDistributionId: updateRequest.mediaDistributionId, customPath: updateRequest.customPath }; options = { hostname: Urls.getRtsHostname(), path: "/api/v3/media/assets/".concat(updateRequest.mediaAssetId), headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: "Bearer ".concat(apiSecret) }, body: JSON.stringify(body) }; _context8.n = 1; return (0, _httpHelpers.sendPatch)(options); case 1: return _context8.a(2, _context8.v); } }, _callee8); })); return function updateMediaAsset(_x13, _x14) { return _ref8.apply(this, arguments); }; }();