fluro
Version:
Promise based HTTP Fluro client for the browser and node.js
352 lines (256 loc) • 18.9 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>fluro.video.js - Documentation</title>
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
<script src="scripts/nav.js" defer></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<nav >
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="access.html">access</a><ul class='methods'><li data-type='method'><a href="access.html#.addEventListener">addEventListener</a></li><li data-type='method'><a href="access.html#.can">can</a></li><li data-type='method'><a href="access.html#.canDeleteItem">canDeleteItem</a></li><li data-type='method'><a href="access.html#.canEditItem">canEditItem</a></li><li data-type='method'><a href="access.html#.canKnowOf">canKnowOf</a></li><li data-type='method'><a href="access.html#.canViewItem">canViewItem</a></li><li data-type='method'><a href="access.html#.has">has</a></li><li data-type='method'><a href="access.html#.isAuthor">isAuthor</a></li><li data-type='method'><a href="access.html#.removeAllListeners">removeAllListeners</a></li><li data-type='method'><a href="access.html#.removeEventListener">removeEventListener</a></li><li data-type='method'><a href="access.html#.retrieveActionableRealms">retrieveActionableRealms</a></li><li data-type='method'><a href="access.html#.retrieveCurrentSession">retrieveCurrentSession</a></li><li data-type='method'><a href="access.html#.setDefaultApplication">setDefaultApplication</a></li></ul></li><li><a href="api.html">api</a><ul class='methods'><li data-type='method'><a href="api.html#.delete">delete</a></li><li data-type='method'><a href="api.html#.generateEndpointURL">generateEndpointURL</a></li><li data-type='method'><a href="api.html#.get">get</a></li><li data-type='method'><a href="api.html#.post">post</a></li><li data-type='method'><a href="api.html#.put">put</a></li></ul></li><li><a href="app.device.html">device</a></li><li><a href="asset.html">asset</a><ul class='methods'><li data-type='method'><a href="asset.html#.avatarUrl">avatarUrl</a></li><li data-type='method'><a href="asset.html#.downloadUrl">downloadUrl</a></li><li data-type='method'><a href="asset.html#.filesize">filesize</a></li><li data-type='method'><a href="asset.html#.getUrl">getUrl</a></li><li data-type='method'><a href="asset.html#.imageUrl">imageUrl</a></li><li data-type='method'><a href="asset.html#.playerUrl">playerUrl</a></li><li data-type='method'><a href="asset.html#.posterUrl">posterUrl</a></li><li data-type='method'><a href="asset.html#.typeFromMime">typeFromMime</a></li></ul></li><li><a href="auth.html">auth</a><ul class='methods'><li data-type='method'><a href="auth.html#.addEventListener">addEventListener</a></li><li data-type='method'><a href="auth.html#.changeAccount">changeAccount</a></li><li data-type='method'><a href="auth.html#.getCurrentToken">getCurrentToken</a></li><li data-type='method'><a href="auth.html#.getCurrentUser">getCurrentUser</a></li><li data-type='method'><a href="auth.html#.impersonate">impersonate</a></li><li data-type='method'><a href="auth.html#.login">login</a></li><li data-type='method'><a href="auth.html#.logout">logout</a></li><li data-type='method'><a href="auth.html#.refreshAccessToken">refreshAccessToken</a></li><li data-type='method'><a href="auth.html#.removeAllListeners">removeAllListeners</a></li><li data-type='method'><a href="auth.html#.removeEventListener">removeEventListener</a></li><li data-type='method'><a href="auth.html#.retrieveUserFromResetToken">retrieveUserFromResetToken</a></li><li data-type='method'><a href="auth.html#.sendResetPasswordRequest">sendResetPasswordRequest</a></li><li data-type='method'><a href="auth.html#.set">set</a></li><li data-type='method'><a href="auth.html#.signup">signup</a></li><li data-type='method'><a href="auth.html#.updateUserWithToken">updateUserWithToken</a></li></ul></li><li><a href="cache.html">cache</a><ul class='methods'><li data-type='method'><a href="cache.html#.get">get</a></li><li data-type='method'><a href="cache.html#.reset">reset</a></li></ul></li><li><a href="components.html">components</a><ul class='methods'><li data-type='method'><a href="components.html#.hydrateModel">hydrateModel</a></li></ul></li><li><a href="content.html">content</a><ul class='methods'><li data-type='method'><a href="content.html#.duplicate">duplicate</a></li><li data-type='method'><a href="content.html#.external">external</a></li><li data-type='method'><a href="content.html#.filter">filter</a></li><li data-type='method'><a href="content.html#.form">form</a></li><li data-type='method'><a href="content.html#.get">get</a></li><li data-type='method'><a href="content.html#.getMultiple">getMultiple</a></li><li data-type='method'><a href="content.html#.keys">keys</a></li><li data-type='method'><a href="content.html#.list">list</a></li><li data-type='method'><a href="content.html#.query">query</a></li><li data-type='method'><a href="content.html#.related">related</a></li><li data-type='method'><a href="content.html#.retrieve">retrieve</a></li><li data-type='method'><a href="content.html#.slug">slug</a></li><li data-type='method'><a href="content.html#.submitInteraction">submitInteraction</a></li><li data-type='method'><a href="content.html#.submitPost">submitPost</a></li><li data-type='method'><a href="content.html#.thread">thread</a></li><li data-type='method'><a href="content.html#.values">values</a></li></ul></li><li><a href="date.html">date</a><ul class='methods'><li data-type='method'><a href="date.html#.countdown">countdown</a></li><li data-type='method'><a href="date.html#.dateFromID">dateFromID</a></li><li data-type='method'><a href="date.html#.formatDate">formatDate</a></li><li data-type='method'><a href="date.html#.getAge">getAge</a></li><li data-type='method'><a href="date.html#.groupEventByDate">groupEventByDate</a></li><li data-type='method'><a href="date.html#.isDifferentTimezoneThanUser">isDifferentTimezoneThanUser</a></li><li data-type='method'><a href="date.html#.isMultiDayEvent">isMultiDayEvent</a></li><li data-type='method'><a href="date.html#.localDate">localDate</a></li><li data-type='method'><a href="date.html#.militaryTimestamp">militaryTimestamp</a></li><li data-type='method'><a href="date.html#.readableEventDate">readableEventDate</a></li><li data-type='method'><a href="date.html#.readableEventTime">readableEventTime</a></li><li data-type='method'><a href="date.html#.timeago">timeago</a></li><li data-type='method'><a href="date.html#.timeline">timeline</a></li><li data-type='method'><a href="date.html#.timestampToAmPm">timestampToAmPm</a></li><li data-type='method'><a href="date.html#.timezones">timezones</a></li></ul></li><li><a href="fluro.html">fluro</a></li><li><a href="types.html">types</a><ul class='methods'><li data-type='method'><a href="types.html#.all">all</a></li><li data-type='method'><a href="types.html#.basicTypes">basicTypes</a></li><li data-type='method'><a href="types.html#.get">get</a></li><li data-type='method'><a href="types.html#.mapDefinitionItems">mapDefinitionItems</a></li><li data-type='method'><a href="types.html#.parentType">parentType</a></li><li data-type='method'><a href="types.html#.postableTypes">postableTypes</a></li><li data-type='method'><a href="types.html#.readable">readable</a></li><li data-type='method'><a href="types.html#.reloadTerminology">reloadTerminology</a></li><li data-type='method'><a href="types.html#.retrieve">retrieve</a></li><li data-type='method'><a href="types.html#.subTypes">subTypes</a></li><li data-type='method'><a href="types.html#.term">term</a></li></ul></li><li><a href="utils.html">utils</a><ul class='methods'><li data-type='method'><a href="utils.html#.arrayIDs">arrayIDs</a></li><li data-type='method'><a href="utils.html#.comma">comma</a></li><li data-type='method'><a href="utils.html#.currencySymbol">currencySymbol</a></li><li data-type='method'><a href="utils.html#.errorMessage">errorMessage</a></li><li data-type='method'><a href="utils.html#.extractFromArray">extractFromArray</a></li><li data-type='method'><a href="utils.html#.formatCurrency">formatCurrency</a></li><li data-type='method'><a href="utils.html#.getDefaultValueForField">getDefaultValueForField</a></li><li data-type='method'><a href="utils.html#.getFlattenedFields">getFlattenedFields</a></li><li data-type='method'><a href="utils.html#.getStringID">getStringID</a></li><li data-type='method'><a href="utils.html#.guid">guid</a></li><li data-type='method'><a href="utils.html#.hash">hash</a></li><li data-type='method'><a href="utils.html#.injectScript">injectScript</a></li><li data-type='method'><a href="utils.html#.machineName">machineName</a></li><li data-type='method'><a href="utils.html#.mapParameters">mapParameters</a></li><li data-type='method'><a href="utils.html#.matchInArray">matchInArray</a></li><li data-type='method'><a href="utils.html#.processCardPrioritySort">processCardPrioritySort</a></li></ul></li><li><a href="video.html">video</a><ul class='methods'><li data-type='method'><a href="video.html#.hhmmss">hhmmss</a></li><li data-type='method'><a href="video.html#.readableMilliseconds">readableMilliseconds</a></li><li data-type='method'><a href="video.html#.readableSeconds">readableSeconds</a></li></ul></li></ul>
</nav>
<div id="main">
<h1 class="page-title">fluro.video.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>import _ from 'lodash';
///////////////////////////////////////////////////////////////////////////////
/**
* @classdesc A static service that provides useful tools when working with video content
* @alias video
* @class
* @hideconstructor
*/
var FluroVideo = {};
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
FluroVideo.getAssetMediaIDFromURL = function(url, type) {
var lowercase = String(url).toLowerCase();
if (!type) {
if (lowercase.includes('youtube')) {
type = 'youtube'
} else if (lowercase.includes('vimeo')) {
type = 'vimeo'
}
}
var mediaID;
switch (type) {
case 'youtube':
mediaID = FluroVideo.getYouTubeIDFromURL(url)
break;
case 'vimeo':
mediaID = FluroVideo.getVimeoIDFromURL(url)
break;
}
return mediaID;
}
///////////////////////////////////////////////////////////////////////////////
FluroVideo.getYouTubeIDFromURL = function(url) {
if (!url || !url.length) {
return;
}
function contains(str, substr) {
return (str.indexOf(substr) > -1);
}
//////////////////////////////////////
function getParm(url, base) {
var re = new RegExp("(\\?|&)" + base + "\\=([^&]*)(&|$)");
var matches = url.match(re);
if (matches) {
return (matches[2]);
} else {
return ("");
}
}
//////////////////////////////////////
var videoID;
var matches;
//////////////////////////////////////
if (url.indexOf("youtube.com/watch") != -1) {
videoID = getParm(url, "v");
} else {
var youtubeRegexp = /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube(?:-nocookie)?\.com\S*[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&+%\w.-]*(?:['"][^<>]*>|<\/a>))[?=&+%\w.-]*/ig;
//Get the id
var YoutubeID = url.replace(youtubeRegexp, '$1');
if (contains(YoutubeID, ';')) {
var pieces = YoutubeID.split(';');
if (contains(pieces[1], '%')) {
// links like this:
// "http://www.youtube.com/attribution_link?a=pxa6goHqzaA&amp;u=%2Fwatch%3Fv%3DdPdgx30w9sU%26feature%3Dshare"
// have the real query string URI encoded behind a ';'.
// at this point, `YoutubeID is 'pxa6goHqzaA;u=%2Fwatch%3Fv%3DdPdgx30w9sU%26feature%3Dshare'
var uriComponent = decodeURIComponent(YoutubeID.split(';')[1]);
YoutubeID = ('https://youtube.com' + uriComponent)
.replace(youtubeRegexp, '$1');
} else {
// https://www.youtube.com/watch?v=VbNF9X1waSc&amp;feature=youtu.be
// `YoutubeID` looks like 'VbNF9X1waSc;feature=youtu.be' currently.
// strip the ';feature=youtu.be'
YoutubeID = pieces[0];
}
} else if (contains(YoutubeID, '#')) {
// YoutubeID might look like '93LvTKF_jW0#t=1'
// and we want '93LvTKF_jW0'
YoutubeID = YoutubeID.split('#')[0];
}
videoID = YoutubeID;
}
//////console.log('Video thumb', url, retVal);
return videoID;
}
///////////////////////////////////////////////////////////////////////////////
FluroVideo.getVimeoIDFromURL = function(url) {
if (!url || !url.length) {
return;
}
//Vimeo RegExp
var reg = /https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)/;
var match = url.match(reg);
if (match) {
return match[3];
}
}
///////////////////////////////////////////////////////////////////////////////
/**
* @alias video.readableMilliseconds
* @param {Number} milliseconds The number of milliseconds to get duration for
* @return {String} The query string
* @example
* fluro.video.readableMilliseconds(100000)
*/
FluroVideo.readableMilliseconds = function(milliseconds, withoutSuffix) {
var oneSecond = 1000;
var oneMinute = oneSecond * 60;
var oneHour = oneMinute * 60;
var oneDay = oneHour * 24;
var seconds = (milliseconds % oneMinute) / oneSecond;
var minutes = Math.floor((milliseconds % oneHour) / oneMinute);
var hours = Math.floor((milliseconds % oneDay) / oneHour);
var days = Math.floor(milliseconds / oneDay);
var timeString = '';
if (withoutSuffix) {
if (days !== 0) {
timeString += (days !== 1) ? (days + 'd ') : (days + 'd ');
}
if (hours !== 0) {
timeString += (hours !== 1) ? (hours + 'h ') : (hours + 'h ');
}
if (minutes !== 0) {
timeString += (minutes !== 1) ? (minutes + 'm ') : (minutes + 'm ');
}
if (seconds !== 0 || milliseconds < 1000) {
timeString += (seconds !== 1) ? (seconds.toFixed(0) + 's ') : (seconds.toFixed(0) + 's ');
}
} else {
if (days !== 0) {
timeString += (days !== 1) ? (days + ' days ') : (days + ' day ');
}
if (hours !== 0) {
timeString += (hours !== 1) ? (hours + ' hrs ') : (hours + 'hr ');
}
if (minutes !== 0) {
timeString += (minutes !== 1) ? (minutes + ' mins ') : (minutes + 'min ');
}
if (seconds !== 0 || milliseconds < 1000) {
timeString += (seconds !== 1) ? (seconds.toFixed(0) + 's ') : (seconds.toFixed(0) + 's ');
}
}
return timeString;
}
///////////////////////////////////////////////////////////////////////////////
/**
* @alias video.readableSeconds
* @param {Number} seconds The number of seconds to get duration for
* @return {String} The query string
* @example
* fluro.video.readableSeconds(10)
*/
FluroVideo.readableSeconds = function(seconds, withoutSuffix) {
return FluroVideo.readableMilliseconds(seconds * 1000, withoutSuffix);
// var milliseconds = seconds * 1000;
// var oneSecond = 1000;
// var oneMinute = oneSecond * 60;
// var oneHour = oneMinute * 60;
// var oneDay = oneHour * 24;
// var seconds = (milliseconds % oneMinute) / oneSecond;
// var minutes = Math.floor((milliseconds % oneHour) / oneMinute);
// var hours = Math.floor((milliseconds % oneDay) / oneHour);
// var days = Math.floor(milliseconds / oneDay);
// var timeString = '';
// if (days !== 0) {
// timeString += (days !== 1) ? (days + ' days ') : (days + ' day ');
// }
// if (hours !== 0) {
// timeString += (hours !== 1) ? (hours + ' hrs ') : (hours + 'hr ');
// }
// if (minutes !== 0) {
// timeString += (minutes !== 1) ? (minutes + ' mins ') : (minutes + 'min ');
// }
// if (seconds !== 0 || milliseconds < 1000) {
// timeString += (seconds !== 1) ? (seconds.toFixed(1) + 's ') : (seconds.toFixed(1) + 's ');
// }
// return timeString;
}
///////////////////////////////////////////////////////////////////////////////
/**
* @alias video.hhmmss
* @param {Number} seconds The number of seconds to get duration for
* @return {String} The query string
* @example
* //Returns 01:02:00
* fluro.video.hhmmss(62)
*/
FluroVideo.hhmmss = function(secs) {
function secToTimer(sec) {
let o = new Date(0)
let p = new Date(sec * 1000)
return new Date(p.getTime() - o.getTime())
.toISOString()
.split("T")[1]
.split("Z")[0]
}
return secToTimer(secs).split('.')[0];
// function pad(str) {
// return ("0" + str).slice(-2);
// }
// // function hhmmss(secs) {
// var minutes = Math.floor(secs / 60);
// secs = secs % 60;
// var hours = Math.floor(minutes / 60)
// minutes = minutes % 60;
// return pad(hours) + ":" + pad(minutes) + ":" + pad(secs);
// return pad(minutes)+":"+pad(secs);
// }
// return hhmmss(seconds);
}
/////////////////////////////////////////////
/////////////////////////////////////////////
/////////////////////////////////////////////
/////////////////////////////////////////////
/////////////////////////////////////////////
export default FluroVideo;</code></pre>
</article>
</section>
</div>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.3</a> on Tue Jun 29 2021 08:38:17 GMT+1000 (Australian Eastern Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
</footer>
<script>prettyPrint();</script>
<script src="scripts/polyfill.js"></script>
<script src="scripts/linenumber.js"></script>
</body>
</html>