sp-streams
Version:
Streamplace Streams for Piping Video Around and Stuff
96 lines (83 loc) • 2.76 kB
JavaScript
;
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.
*/