OpenVeo Publish server

API Docs for: 8.0.0
Show:

File: app/server/providers/mediaPlatforms/factory.js

'use strict';

/**
 * @module providers
 */

var TYPES = process.requirePublish('app/server/providers/mediaPlatforms/types.js');

/**
 * Defines a factory to create media platforms' providers.
 *
 * @class mediaPlatformFactory
 * @static
 */

/**
 * Gets an instance of a MediaPlatformProvider giving a type and a configuration object.
 *
 * @method get
 * @static
 * @param {String} type The type of the provider platform to instanciate
 * @param {Object} providerConf A media platform configuration object, it's structure depend on the provider's type,
 * see extended objects for more information
 * @return {MediaPlatformProvider} An instance of a MediaPlatformProvider sub class
 * @throws {Error} The configuration doesn't satisfy the provider or given type is not available
 */
module.exports.get = function(type, providerConf) {
  if (type && providerConf) {
    switch (type) {
      case TYPES.VIMEO:
        var VimeoProvider = process.requirePublish('app/server/providers/mediaPlatforms/VimeoProvider.js');
        return new VimeoProvider(providerConf);
      case TYPES.YOUTUBE:
        var YoutubeProvider = process.requirePublish('app/server/providers/mediaPlatforms/youtube/YoutubeProvider.js');
        var GoogleOAuthHelper = process.requirePublish(
          'app/server/providers/mediaPlatforms/youtube/GoogleOAuthHelper.js'
        );
        return new YoutubeProvider(providerConf, new GoogleOAuthHelper());
      case TYPES.WOWZA:
        var WowzaProvider = process.requirePublish('app/server/providers/mediaPlatforms/WowzaProvider.js');
        return new WowzaProvider(providerConf);
      case TYPES.LOCAL:
        var LocalProvider = process.requirePublish('app/server/providers/mediaPlatforms/LocalProvider.js');
        return new LocalProvider(providerConf);
      case TYPES.TLS:
        var TlsProvider = process.requirePublish('app/server/providers/mediaPlatforms/tls/TlsProvider.js');
        return new TlsProvider(providerConf);

      default:
        throw new Error('Unknown media plateform type');
    }
  }

  return null;
};