Example #1
0
          (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();
                });
              }
            );
          }
Example #2
0
                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();
                            });
                        });
                    });
                });
Example #3
0
          (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();
                });
              }
            );
          }
Example #4
0
                        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();
                                }
                              );
                            }
                          );
                        }
Example #5
0
          (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();
                          }
                        );
                      });
                    });
                  }
                );
              }
            );
          }
Example #6
0
                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();
                                });
                            });
                        });
                    });
                });
Example #7
0
          (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();
                    });
                  }
                );
              }
            );
          }
Example #8
0
                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();
                        });
                    });
                });
Example #9
0
                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();
                        });
                    });
                });
Example #10
0
                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();
                    });
                });
Example #11
0
                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();
                                    });
                                });
                            });
                        });
                    });
                });