/*
https://developer.vimeo.com/api/authentication
https://developer.vimeo.com/api/reference/showcases#get_showcase
https://developer.vimeo.com/player/sdk
*/
/**
* @module managers/vimeo-manager
* @description This module manages Vimeo hosted content
* {@link https://developer.vimeo.com/api/guides/start}
* @requires vimeo
*/
define([
"vimeo"
],
function (Vimeo) {
// ---------------------------------------------------------------
//
// VIMEO
//
// ---------------------------------------------------------------
var VimeoManager = function () {
console.log(" * <vimeo>");
window.tEvent.eventStr.EVENT_VIMEO_INIT = "EVENT_VIMEO_INIT";
// services
this.oServices = -1;
// model loaded
this.isReady = false;
// config
this.projectConfig = -1;
window.Vimeo = Vimeo;
this.def = {
STATUS_OK : "ok",
STATUS_ERROR : "error"
};
this.ui = {
};
this.init();
};
VimeoManager.prototype = {
// ______________________________________________________________
// init
/**
* init
* @description Initializes class
* @fires assignListeners()
* @memberOf module:managers/vimeo-manager
* @instance
*/
init: function() {
this.assignListeners();
},
// ______________________________________________________________
// assignListeners
/**
* assignListeners
* @description Assigns listeners to events used in this class.
* @listens EVENT_MODEL_READY
* @memberOf module:managers/vimeo-manager
* @instance
*/
assignListeners: function() {
var self = this;
if (typeof window.oModel === "undefined" || window.oModel.jConfig === -1){
window.tEvent.addListener("EVENT_MODEL_READY", function(evt, data)
{
// clean up for new page
self.onJsonLoaded();
});
} else {
self.onJsonLoaded();
}
},
// --------------------------------------------------------------
// HELPERS
// --------------------------------------------------------------
// ______________________________________________________________
// getReturnObj
/**
* getReturnObj
* @description Returns generic return object
* @returns {Object}
* @example
* {
* "status": "ok",
* "data": -1
* }
* @memberOf module:managers/vimeo-manager
* @instance
*/
getReturnObj: function() {
return({
status: this.def.STATUS_OK,
data: -1
});
},
// ______________________________________________________________
// isReady
/**
* readyCheck
* @description Checks if module is ready
* @fires EVENT_VIMEO_INIT
* @memberOf module:managers/vimeo-manager
* @instance
*/
readyCheck: function() {
if (this.projectConfig !== -1){
this.isReady = true;
window.tEvent.fire(window.tEvent.eventStr.EVENT_VIMEO_INIT);
}
},
// ______________________________________________________________
// getShowcaseVideos
/**
* getShowcaseVideos
* @description Gets Vimeo showcase videos
* @param {Function} callback - Callback function
* @param {Object} options - Options when loading showcase
* @param {String} showcaseId
* @fires oServices.vimeoService()
* @memberOf module:managers/vimeo-manager
* @instance
*/
getShowcaseVideos: function(callback, options, showcaseId) {
var self = this;
var config = this.projectConfig.services.vimeo;
var wsUrl = config.urls.getShowcaseVideos;
// use existing showcaseID if one is not submitted
if (typeof showcaseId === "undefined"){
showcaseId = config.showcases.showcase1;
}
wsUrl = wsUrl.replace("[[SHOWCASE_ID]]", showcaseId);
// process options
if (typeof options !== "undefined"){
wsUrl += "?";
for (var key in options) {
wsUrl += key + "=" + options[key] + "&";
}
}
var serviceConfig = {
wsUrl : wsUrl,
base64Code : window.btoa(config.clientId + ":" + config.clientSecret)
};
// call service
this.oServices.vimeoService(serviceConfig, callback);
},
// ______________________________________________________________
// initVideo
// https://developer.vimeo.com/player/sdk
/**
* initVideo
* @description Initializes video
* {@link https://developer.vimeo.com/player/sdk}
* @param {String} videoId - ID of video to load
* @param {String} containerId - Container ID where the video will be assigned
* @param {Object} options - Options when loading video
* @returns {VimeoInstance}
* @memberOf module:managers/vimeo-manager
* @instance
*/
initVideo: function(videoId, containerId, options) {
var videoConfig = {
id: videoId
};
// process options
if (typeof options !== "undefined"){
for (var key in options) {
videoConfig[key] = options[key];
}
}
return( new Vimeo(containerId, videoConfig) );
},
// ______________________________________________________________
// getVideoIdFromUrl
/**
* getVideoIdFromUrl
* @description Parse url and return video ID
* @param {String} link - URL link of video
* @returns {String} Video ID
* @memberOf module:managers/vimeo-manager
* @instance
*/
getVideoIdFromUrl: function(link) {
link = link.split("/");
return( link[link.length-1] );
},
// --------------------------------------------------------------
// EVENTS
// --------------------------------------------------------------
// ______________________________________________________________
// onJsonLoaded
/**
* onJsonLoaded
* @description Assing private methods
* @fires readyCheck()
* @memberOf module:managers/vimeo-manager
* @instance
*/
onJsonLoaded: function() {
this.projectConfig = window.oModel.jConfig;
this.oServices = window.oModel.oServices;
this.readyCheck();
}
};
return (VimeoManager);
});