UNPKG

sp-streams

Version:

Streamplace Streams for Piping Video Around and Stuff

96 lines (83 loc) 2.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (params) { var accessKeyId = params.accessKeyId, secretAccessKey = params.secretAccessKey, host = params.host, bucket = params.bucket, prefix = params.prefix; ["accessKeyId", "secretAccessKey", "host", "bucket", "prefix"].forEach(function (key) { if (!params[key]) { throw new Error("Missing required parameter " + key); } }); var parsed = _url2.default.parse(host); var secure = parsed.protocol === "https:"; var mpegMunger = (0, _mpegMungerStream2.default)(); var port = parsed.port; if (!port) { port = secure ? 443 : 80; } else { port = parseInt(port); } var minio = new _minio.Client({ endPoint: parsed.hostname, accessKey: accessKeyId, secretKey: secretAccessKey, secure: secure, port: port }); var objects = void 0; // Pipe the next chunk to myself. var processNext = function processNext() { log("processNext with length of " + objects.length); if (objects.length === 0) { log("ending mpegmunger"); return mpegMunger.end(); } var obj = objects.shift(); minio.getObject(bucket, obj.name).then(function (s3Stream) { s3Stream.pipe(mpegMunger).on("error", function (err) { throw err; }).on("end", function () { log("s3Stream ended"); processNext(); }); }).catch(function (err) { throw err; }); }; return new Promise(function (resolve, reject) { var objects = []; minio.listObjectsV2(bucket, prefix, true).on("error", function (err) { return reject(err); }).on("data", function (obj) { return objects.push(obj); }).on("end", function () { return resolve(objects); }); }).then(function (s3Objects) { log("Got " + JSON.stringify(s3Objects) + " for prefix " + prefix); objects = s3Objects.filter(function (_ref) { var name = _ref.name; return name !== ".DS_Store"; }); // dont make fun of me processNext(); return mpegMunger; }); }; var _minio = require("@streamplace/minio"); var _url = require("url"); var _url2 = _interopRequireDefault(_url); var _mpegMungerStream = require("./mpeg-munger-stream"); var _mpegMungerStream2 = _interopRequireDefault(_mpegMungerStream); var _debug = require("debug"); var _debug2 = _interopRequireDefault(_debug); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var log = (0, _debug2.default)("sp:file-input-stream"); /** * Implements the file API described in sp-plugin-core's File.yaml. UUID prefixes are concatenated * in ASCII order. This lets us split up mpegts files however we like. */