(err, content) => { assert.ok(!err); // Set a MediaCore id on the content item ContentDAO.Previews.storeMetadata( content, content.latestRevisionId, 'done', null, null, { mediaCoreId: 12345 }, {}, err => { assert.ok(!err); // Add a handler for the embed code endpoint that returns 200 but invalid JSON mediaCoreApp.get('/api2/media/:mediaCoreId/embedcode', (req, res) => { assert.strictEqual(req.params.mediaCoreId, '12345'); res.status(502).send({ reason: 'you are DOSd' }); }); // Verify we get 500 when fetching embed code for a MediaCore server that has gone awry RestAPI.MediaCore.getEmbedCode(user.restContext, content.id, err => { assert.ok(err); assert.strictEqual(err.code, 500); return callback(); }); } ); }
RestAPI.Content.createFile(user.restContext, 'test video', null, 'private', _getVideoStream, null, null, null, function(err, content) { assert.ok(!err); var mediaCoreId = '23457'; // Set a MediaCore id on the content item ContentDAO.Previews.storeMetadata(content, content.latestRevisionId, 'done', null, null, {'mediaCoreId': mediaCoreId}, {}, function(err) { assert.ok(!err); // Map id 23457 to the content item MediaCoreDAO.saveContentRevisionId(mediaCoreId, content.id, content.latestRevisionId, function(err) { assert.ok(!err); // Add a handler that listens for the expected thumbnail request returning a successful response mediaCoreApp.get('/api2/media/:mediaCoreId/thumbs', function(req, res) { res.status(502).send({'sizes': {}}); }); // Cause the thumbnails to be updated RestAPI.MediaCore.notifyEncodingComplete(user.restContext, mediaCoreId, function(err) { assert.ok(err); assert.equal(err.code, 500); return callback(); }); }); }); });
(err, content) => { assert.ok(!err); // Set a MediaCore id on the content item ContentDAO.Previews.storeMetadata( content, content.latestRevisionId, 'done', null, null, { mediaCoreId: 12345 }, {}, err => { assert.ok(!err); // Add a handler for the embed code endpoint that returns 200 but invalid JSON mediaCoreApp.get('/api2/media/:mediaCoreId/embedcode', (req, res) => { assert.strictEqual(req.params.mediaCoreId, '12345'); res.status(200).send('not valid json'); }); // Verify we get 500 because the MediaCore response was not valid JSON RestAPI.MediaCore.getEmbedCode(user.restContext, content.id, err => { assert.ok(err); assert.strictEqual(err.code, 500); return callback(); }); } ); }
err => { assert.ok(err); assert.strictEqual(err.code, 401); // Set a MediaCore id on the content item ContentDAO.Previews.storeMetadata( content, content.latestRevisionId, 'done', null, null, { mediaCoreId: 12345 }, {}, err => { assert.ok(!err); // Now getting the embed code as the user that created the content item should be successful RestAPI.MediaCore.getEmbedCode( user.restContext, content.id, (err, embedCode) => { assert.ok(!err); assert.ok(embedCode); assert.ok(embedCode.html); return callback(); } ); } ); }
(err, content) => { assert.ok(!err); const mediaCoreId = '23456'; // Set a MediaCore id on the content item ContentDAO.Previews.storeMetadata( content, content.latestRevisionId, 'done', null, null, { mediaCoreId }, {}, err => { assert.ok(!err); // Map id 23456 to the content item MediaCoreDAO.saveContentRevisionId( mediaCoreId, content.id, content.latestRevisionId, err => { assert.ok(!err); // Ensure an invalid id results in a 400 RestAPI.MediaCore.notifyEncodingComplete(user.restContext, 'not-an-id', err => { assert.ok(err); assert.strictEqual(err.code, 400); // Ensure a non-existing id results in a 404 RestAPI.MediaCore.notifyEncodingComplete(user.restContext, 0, err => { assert.ok(err); assert.strictEqual(err.code, 404); const fetchedThumbnails = false; // Add a handler that listens for the expected thumbnail request returning a successful response mediaCoreApp.get('/api2/media/:mediaCoreId/thumbs', (req, res) => { res.status(200).send({ sizes: {} }); }); RestAPI.MediaCore.notifyEncodingComplete( user.restContext, mediaCoreId, err => { assert.ok(!err); return callback(); } ); }); }); } ); } ); }
RestAPI.Content.createFile(user.restContext, 'test video', null, 'private', _getVideoStream, null, null, null, function(err, content) { assert.ok(!err); var mediaCoreId = '23457'; // Set a MediaCore id on the content item ContentDAO.Previews.storeMetadata(content, content.latestRevisionId, 'done', null, null, {'mediaCoreId': mediaCoreId}, {}, function(err) { assert.ok(!err); // Map id 23457 to the content item MediaCoreDAO.saveContentRevisionId(mediaCoreId, content.id, content.latestRevisionId, function(err) { assert.ok(!err); // Add a handler that listens for the expected thumbnail request returning a successful response mediaCoreApp.get('/api2/media/:mediaCoreId/thumbs', function(req, res) { res.status(200).send({ 'sizes': { 'l': 'http://path/to/large/image', '720p': 'http://path/to/720p/image' } }); }); // Ensure a non-existing id results in a 404 RestAPI.MediaCore.notifyEncodingComplete(user.restContext, mediaCoreId, function(err) { assert.ok(!err); RestAPI.Content.getContent(user.restContext, content.id, function(err, content) { assert.ok(!err); assert.ok(content.previews); // Verify the URIs are not returned in the preview model assert.ok(!content.previews.smallUri); assert.ok(!content.previews.mediumUri); assert.ok(!content.previews.largeUri); assert.ok(!content.previews.wideUri); // Verify the URLs. The "remote" backend simply uses the location part as-is so the url should just be the // direct links to the files assert.equal(content.previews.smallUrl, 'http://path/to/large/image'); assert.equal(content.previews.mediumUrl, 'http://path/to/720p/image'); assert.equal(content.previews.largeUrl, 'http://path/to/720p/image'); assert.equal(content.previews.wideUrl, 'http://path/to/720p/image'); return callback(); }); }); }); }); });
(err, content) => { assert.ok(!err); const mediaCoreId = '23457'; // Set a MediaCore id on the content item ContentDAO.Previews.storeMetadata( content, content.latestRevisionId, 'done', null, null, { mediaCoreId }, {}, err => { assert.ok(!err); // Map id 23457 to the content item MediaCoreDAO.saveContentRevisionId( mediaCoreId, content.id, content.latestRevisionId, err => { assert.ok(!err); // Add a handler that listens for the expected thumbnail request returning a successful response mediaCoreApp.get('/api2/media/:mediaCoreId/thumbs', (req, res) => { res.status(502).send({ sizes: {} }); }); // Cause the thumbnails to be updated RestAPI.MediaCore.notifyEncodingComplete(user.restContext, mediaCoreId, err => { assert.ok(err); assert.strictEqual(err.code, 500); return callback(); }); } ); } ); }
RestAPI.Content.createFile(user.restContext, 'test video', null, 'private', _getVideoStream, null, null, null, function(err, content) { assert.ok(!err); // Set a MediaCore id on the content item ContentDAO.Previews.storeMetadata(content, content.latestRevisionId, 'done', null, null, {'mediaCoreId': 12345}, {}, function(err) { assert.ok(!err); // Add a handler for the embed code endpoint that returns 200 but invalid JSON mediaCoreApp.get('/api2/media/:mediaCoreId/embedcode', function(req, res) { assert.equal(req.params.mediaCoreId, 12345); res.status(502).send({'reason': 'you are DOSd'}); }); // Verify we get 500 when fetching embed code for a MediaCore server that has gone awry RestAPI.MediaCore.getEmbedCode(user.restContext, content.id, function(err) { assert.ok(err); assert.equal(err.code, 500); return callback(); }); }); });
RestAPI.Content.createFile(user.restContext, 'test video', null, 'private', _getVideoStream, null, null, function(err, content) { assert.ok(!err); // Set a MediaCore id on the content item ContentDAO.Previews.storeMetadata(content, content.latestRevisionId, 'done', null, null, {'mediaCoreId': 12345}, {}, function(err) { assert.ok(!err); // Add a handler for the embed code endpoint that returns 200 but invalid JSON mediaCoreApp.get('/api2/media/:mediaCoreId/embedcode', function(req, res) { assert.equal(req.params.mediaCoreId, 12345); res.send(200, 'not valid json'); }); // Verify we get 500 because the MediaCore response was not valid JSON RestAPI.MediaCore.getEmbedCode(user.restContext, content.id, function(err) { assert.ok(err); assert.equal(err.code, 500); return callback(); }); }); });
MediaCoreUtil.signedRequest(content.tenant.alias, 'get', getThumbsUrl, null, null, function(err, res, body) { if (err) { return callback(err); } else if (res.statusCode !== 200) { log().error({'code': res.statusCode, 'body': body}, 'An unexpected error occurred communicating with MediaCore'); return callback({'code': 500, 'msg': util.format('There was an unexpected error communicating with the media server. Code: %s', res.statusCode)}); } try { body = JSON.parse(body); } catch (parseErr) { log().error({ 'err': parseErr, 'mediaCoreId': mediaCoreId, 'body': body }, 'Error parsing MediaCore response as JSON'); return callback({'code': 500, 'msg': 'Error parsing MediaCore response as JSON'}); } var thumbnailUri = 'remote:' + body.sizes.l; var previewMetadata = { 'smallUri': 'remote:' + body.sizes.l, 'mediumUri': 'remote:' + body.sizes['720p'], 'largeUri': 'remote:' + body.sizes['720p'], 'wideUri': 'remote:' + body.sizes['720p'], 'mediaCoreId': mediaCoreId }; // Store the thumbnail info on the content item ContentDAO.Previews.storeMetadata(content, contentRevisionId.revisionId, ContentConstants.previews.DONE, thumbnailUri, null, previewMetadata, {}, function(err){ if (err) { return callback(err); } // Indicate that we've just updated a preview ContentAPI.emit(ContentConstants.events.UPDATED_CONTENT_PREVIEW, content); return callback(); }); });
RestAPI.Content.createFile(user.restContext, 'test video', null, 'private', _getVideoStream, null, null, null, function(err, content) { assert.ok(!err); var mediaCoreId = '23456'; // Set a MediaCore id on the content item ContentDAO.Previews.storeMetadata(content, content.latestRevisionId, 'done', null, null, {'mediaCoreId': mediaCoreId}, {}, function(err) { assert.ok(!err); // Map id 23456 to the content item MediaCoreDAO.saveContentRevisionId(mediaCoreId, content.id, content.latestRevisionId, function(err) { assert.ok(!err); // Ensure an invalid id results in a 400 RestAPI.MediaCore.notifyEncodingComplete(user.restContext, 'not-an-id', function(err) { assert.ok(err); assert.equal(err.code, 400); // Ensure a non-existing id results in a 404 RestAPI.MediaCore.notifyEncodingComplete(user.restContext, 0, function(err) { assert.ok(err); assert.equal(err.code, 404); var fetchedThumbnails = false; // Add a handler that listens for the expected thumbnail request returning a successful response mediaCoreApp.get('/api2/media/:mediaCoreId/thumbs', function(req, res) { res.status(200).send({'sizes': {}}); }); RestAPI.MediaCore.notifyEncodingComplete(user.restContext, mediaCoreId, function(err) { assert.ok(!err); return callback(); }); }); }); }); }); });