Plugin v7: Features

How to integrate the adapter

The customer should declare the json adapter, or get it from their sources, to register the adapter.

The register adapter method is pretty similar, but adding the adapter json code instead of the adapter instance (from v6).

Let's see a simple code to register an html5 adapter:

// Turn on logs
npaw.Log.logLevel = npaw.Log.Level.DEBUG

// init plugin
window.plugin = new npaw.Plugin({
    // Account and User
    'accountCode': 'powerdev',
    'user.name': 'npaw user',
    // Other content/app info
    'app.name': 'PluginV7 Tutorial',
    'app.releaseVersion': 'v1.0.0'
})

//Declare the adapter html Code
var adapterCode = '{"adapter,checkExistsPlayer":"try{return this.checkExistsObjectOnPage(this.player)}catch(err){return true}","adapter,pauseListener,e":"this.firePlayerLog(\'pauseListener\',{});this.firePause({},\'pauseListener\')","adapter,stalledListener,e":"this.firePlayerLog(\'stalledListener\',{});this.fireBufferBegin({},false,\'stalledListener\')","adapter,bufferingListener,e":"this.firePlayerLog(\'waitingListener\',{});this.fireBufferBegin({},false,\'waitingListener\')","adapter,getIsLive":"return this.player.duration===Infinity","adapter,playListener,e":"this.firePlayerLog(\'playListener\',{});if(this.player){this.checkReadyState(this.player.readyState,\'playListener\')};this.fireStart({},\'playListener\')","adapter,registerListeners":"this.monitorPlayhead(false,false);this.references={play:this.playListener.bind(this),timeupdate:this.timeupdateListener.bind(this),pause:this.pauseListener.bind(this),playing:this.playingListener.bind(this),error:this.errorListener.bind(this),seeking:this.seekingListener.bind(this),seeked:this.seekedListener.bind(this),ended:this.endedListener.bind(this),loadstart:this.loadStartListener.bind(this),stalled:this.stalledListener.bind(this),waiting:this.bufferingListener.bind(this),canplay:this.canPlayListener.bind(this),canplaythrough:this.canPlayThroughListener.bind(this),loadedmediadata:this.loadedMediaDataListener.bind(this),loadeddata:this.loadedDataListener.bind(this)};for(var key in this.references){this.player.addEventListener(key,this.references[key])}","adapter,endedListener,e":"this.firePlayerLog(\'endedListener\',{});this.fireStop({},\'endedListener\')","adapter,getPlayrate":"return this.player.playbackRate","adapter,canPlayListener,e":"if(this.player){this.checkReadyState(this.player.readyState,\'canPlayListener\')}","adapter,canPlayThroughListener,e":"if(this.player){this.checkReadyState(this.player.readyState,\'canPlayThroughListener\')}","adapter,timeupdateListener,e":"if((this.getPlayhead()>0.1||(this.plugin&&this.plugin.getIsLive()))&&!this.player.error){this.fireStart({},\'timeupdateListener\');this.fireJoin({},\'timeupdateListener\')}","adapter,getResource":"return this.player.currentSrc","adapter,getPlayhead":"return this.player.currentTime","adapter,getDuration":"return this.player.duration","adapter,seekingListener,e":"this.firePlayerLog(\'seekingListener\',{});this.fireSeekBegin({},false,\'seekingListener\')","adapter,getPlayerName":"return \'html5\'","adapter,playingListener,e":"this.firePlayerLog(\'playingListener\',{});this.fireResume({},\'playingListener\');this.fireSeekEnd({},\'playingListener\');if(this.flags.isBuffering){this.fireBufferEnd({},\'playingListener\')}","adapter,errorListener,e":"this.firePlayerLog(\'errorListener\',{});var msg=null;var code=null;try{if(e&&e.target&&e.target.error){code=e.target.error.code;msg=e.target.error.message}}catch(err){};this.fireError(code,msg,undefined,undefined,\'errorListener\')","adapter,loadedMediaDataListener,e":"if(this.player){this.checkReadyState(this.player.readyState,\'loadedMediaDataListener\')}","adapter,getVersion":"return \'7.0.1-html5-js\'","adapter,seekedListener,e":"this.firePlayerLog(\'seekedListener\',{});this.fireSeekEnd({},\'seekedListener\')","adapter,loadStartListener,e":"this.firePlayerLog(\'loadStartListener\',{});if(this.flags.isJoined){this.fireStop({},\'loadStartListener\')}","adapter,unregisterListeners":"if(this.monitor)this.monitor.stop();if(this.player&&this.references){for(var key in this.references){this.player.removeEventListener(key,this.references[key]);delete this.references[key]}}","adapter,loadedDataListener,e":"if(this.player){this.checkReadyState(this.player.readyState,\'loadedDataListener\')}"}';

// Register adapter
plugin.registerAdapter('videohtml', adapterHtml5Value);