canopy/www/doc/server/playlistHandler.html

5245 lines
64 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: playlistHandler</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-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: playlistHandler</h1>
<section>
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>playlistHandler<span class="signature">(server, channel)</span><span class="type-signature"></span></h2>
<div class="class-description">Class containing playlist management logic for a single channel</div>
</header>
<article>
<div class="container-overview">
<h2>Constructor</h2>
<h4 class="name" id="playlistHandler"><span class="type-signature"></span>new playlistHandler<span class="signature">(server, channel)</span><span class="type-signature"></span></h4>
<div class="description">
Instantiates a new object to handle playlist management for a single channel
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>server</code></td>
<td class="type">
<span class="param-type"><a href="channelManager.html">channelManager</a></span>
</td>
<td class="description last">Parent server object</td>
</tr>
<tr>
<td class="name"><code>channel</code></td>
<td class="type">
<span class="param-type"><a href="activeChannel.html">activeChannel</a></span>
</td>
<td class="description last">Parent Channel object for desired channel queue</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line30">line 30</a>
</li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<h4 class="name" id="channel"><span class="type-signature"></span>channel<span class="type-signature"></span></h4>
<div class="description">
Parent Channel Object for desired channel queue
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line45">line 45</a>
</li></ul></dd>
</dl>
<h4 class="name" id="server"><span class="type-signature"></span>server<span class="type-signature"></span></h4>
<div class="description">
Parent Server Object
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line40">line 40</a>
</li></ul></dd>
</dl>
<h3 class="subsection-title">Methods</h3>
<h4 class="name" id="addToChannelPlaylist"><span class="type-signature">(async) </span>addToChannelPlaylist<span class="signature">(socket, data, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Adds media to channel playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channnel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line439">line 439</a>
</li></ul></dd>
</dl>
<h4 class="name" id="addToPlaylistValidator"><span class="type-signature">(async) </span>addToPlaylistValidator<span class="signature">(socket, URL)</span><span class="type-signature"> &rarr; {Array}</span></h4>
<div class="description">
Validates client requests to add media to a playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Newly connected socket to define listeners against</td>
</tr>
<tr>
<td class="name"><code>URL</code></td>
<td class="type">
<span class="param-type">String</span>
</td>
<td class="description last">URL String handed over from the client</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line121">line 121</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
List of media objects which where added
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Array</span>
</dd>
</dl>
<h4 class="name" id="addToUserPlaylist"><span class="type-signature">(async) </span>addToUserPlaylist<span class="signature">(socket, data, userDB)</span><span class="type-signature"></span></h4>
<div class="description">
Adds media to user playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>userDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">User Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line490">line 490</a>
</li></ul></dd>
</dl>
<h4 class="name" id="changeDefaultTitlesChannelPlaylist"><span class="type-signature">(async) </span>changeDefaultTitlesChannelPlaylist<span class="signature">(socket, data, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Changes default titles for a given channel playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line973">line 973</a>
</li></ul></dd>
</dl>
<h4 class="name" id="changeDefaultTitlesUserPlaylist"><span class="type-signature">(async) </span>changeDefaultTitlesUserPlaylist<span class="signature">(socket, data, userDB)</span><span class="type-signature"></span></h4>
<div class="description">
Changes default titles for a given user playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>userDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">User Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line1013">line 1013</a>
</li></ul></dd>
</dl>
<h4 class="name" id="changeDefaultTitlesValidator"><span class="type-signature"></span>changeDefaultTitlesValidator<span class="signature">(data)</span><span class="type-signature"> &rarr; {Array}</span></h4>
<div class="description">
Validates client requests to change default titles for a given playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line193">line 193</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
Array of strings containing valid titles from the output
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Array</span>
</dd>
</dl>
<h4 class="name" id="createChannelPlaylist"><span class="type-signature">(async) </span>createChannelPlaylist<span class="signature">(socket, data, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Creates a new channel playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channnel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line275">line 275</a>
</li></ul></dd>
</dl>
<h4 class="name" id="createPlaylistValidator"><span class="type-signature"></span>createPlaylistValidator<span class="signature">(socket, data)</span><span class="type-signature"> &rarr; {Object}</span></h4>
<div class="description">
Validates client requests to create a playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Newly connected socket to define listeners against</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line85">line 85</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
returns validated titles
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Object</span>
</dd>
</dl>
<h4 class="name" id="createUserPlaylist"><span class="type-signature">(async) </span>createUserPlaylist<span class="signature">(socket, data, userDB)</span><span class="type-signature"></span></h4>
<div class="description">
Creates a new user playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>userDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">User Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line324">line 324</a>
</li></ul></dd>
</dl>
<h4 class="name" id="defineListeners"><span class="type-signature"></span>defineListeners<span class="signature">(socket)</span><span class="type-signature"></span></h4>
<div class="description">
Defines server-side socket.io listeners for newly connected sockets
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Newly connected socket to define listeners against</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line52">line 52</a>
</li></ul></dd>
</dl>
<h4 class="name" id="deleteChannelPlaylist"><span class="type-signature">(async) </span>deleteChannelPlaylist<span class="signature">(socket, data, userDB)</span><span class="type-signature"></span></h4>
<div class="description">
Deletes a user playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>userDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">User Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line372">line 372</a>
</li></ul></dd>
</dl>
<h4 class="name" id="deleteChannelPlaylistMedia"><span class="type-signature">(async) </span>deleteChannelPlaylistMedia<span class="signature">(socket, data, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Deletes media from a given channel playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line1053">line 1053</a>
</li></ul></dd>
</dl>
<h4 class="name" id="deletePlaylistMediaValidator"><span class="type-signature"></span>deletePlaylistMediaValidator<span class="signature">(socket, data)</span><span class="type-signature"></span></h4>
<div class="description">
Validates client requests to rename the playlist validator
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Newly connected socket to define listeners against</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line215">line 215</a>
</li></ul></dd>
</dl>
<h4 class="name" id="deleteUserPlaylist"><span class="type-signature">(async) </span>deleteUserPlaylist<span class="signature">(socket, data, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Deletes a Channel playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channnel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line406">line 406</a>
</li></ul></dd>
</dl>
<h4 class="name" id="deleteUserPlaylistMedia"><span class="type-signature">(async) </span>deleteUserPlaylistMedia<span class="signature">(socket, data, userDB)</span><span class="type-signature"></span></h4>
<div class="description">
Deletes media from a given user playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>userDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">User Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line1102">line 1102</a>
</li></ul></dd>
</dl>
<h4 class="name" id="getChannelPlaylists"><span class="type-signature">(async) </span>getChannelPlaylists<span class="signature">(socket, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Sends channel playlist data to a requesting socket
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Newly connected socket to define listeners against</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channnel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line233">line 233</a>
</li></ul></dd>
</dl>
<h4 class="name" id="getUserPlaylists"><span class="type-signature">(async) </span>getUserPlaylists<span class="signature">(socket, userDB)</span><span class="type-signature"></span></h4>
<div class="description">
Sends user playlist data to a requesting socket
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Newly connected socket to define listeners against</td>
</tr>
<tr>
<td class="name"><code>userDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channnel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line253">line 253</a>
</li></ul></dd>
</dl>
<h4 class="name" id="queueChannelPlaylist"><span class="type-signature">(async) </span>queueChannelPlaylist<span class="signature">(socket, data, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Queues an entire channel playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line538">line 538</a>
</li></ul></dd>
</dl>
<h4 class="name" id="queueFromChannelPlaylist"><span class="type-signature">(async) </span>queueFromChannelPlaylist<span class="signature">(socket, data, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Queues media from a given channel playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line651">line 651</a>
</li></ul></dd>
</dl>
<h4 class="name" id="queueFromChannelPlaylistValidator"><span class="type-signature"></span>queueFromChannelPlaylistValidator<span class="signature">(socket, data)</span><span class="type-signature"> &rarr; {Number}</span></h4>
<div class="description">
Validates client requests to queue media from a playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Newly connected socket to define listeners against</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line156">line 156</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
returns validated start time on success
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Number</span>
</dd>
</dl>
<h4 class="name" id="queueFromUserPlaylist"><span class="type-signature">(async) </span>queueFromUserPlaylist<span class="signature">(socket, data, userDB, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Queues media from a given user playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>userDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">User Document Passthrough to save on DB Access</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line702">line 702</a>
</li></ul></dd>
</dl>
<h4 class="name" id="queueRandomFromChannelPlaylist"><span class="type-signature">(async) </span>queueRandomFromChannelPlaylist<span class="signature">(socket, data, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Queues random media from a given channel playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line758">line 758</a>
</li></ul></dd>
</dl>
<h4 class="name" id="queueRandomFromUserPlaylist"><span class="type-signature">(async) </span>queueRandomFromUserPlaylist<span class="signature">(socket, data, userDB, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Queues random media from a given user playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>userDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">User Document Passthrough to save on DB Access</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line806">line 806</a>
</li></ul></dd>
</dl>
<h4 class="name" id="queueUserPlaylist"><span class="type-signature">(async) </span>queueUserPlaylist<span class="signature">(socket, data, userDB, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Queues an entire user playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>userDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">User Document Passthrough to save on DB Access</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line592">line 592</a>
</li></ul></dd>
</dl>
<h4 class="name" id="renameChannelPlaylist"><span class="type-signature">(async) </span>renameChannelPlaylist<span class="signature">(socket, data, chanDB)</span><span class="type-signature"></span></h4>
<div class="description">
Renames a channel playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>chanDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">Channel Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line860">line 860</a>
</li></ul></dd>
</dl>
<h4 class="name" id="renameChannelPlaylistValidator"><span class="type-signature"></span>renameChannelPlaylistValidator<span class="signature">(socket, data)</span><span class="type-signature"> &rarr; {String}</span></h4>
<div class="description">
Validates client requests to rename the playlist validator
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Newly connected socket to define listeners against</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line175">line 175</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
returns escaped/trimmed name upon success
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">String</span>
</dd>
</dl>
<h4 class="name" id="renameUserPlaylist"><span class="type-signature">(async) </span>renameUserPlaylist<span class="signature">(socket, data, userDB)</span><span class="type-signature"></span></h4>
<div class="description">
Renames a user playlist
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>socket</code></td>
<td class="type">
<span class="param-type">Socket</span>
</td>
<td class="description last">Requesting socket</td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">Data handed over from the client</td>
</tr>
<tr>
<td class="name"><code>userDB</code></td>
<td class="type">
<span class="param-type">Mongoose.Document</span>
</td>
<td class="description last">User Document Passthrough to save on DB Access</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="app_channel_media_playlistHandler.js.html">app/channel/media/playlistHandler.js</a>, <a href="app_channel_media_playlistHandler.js.html#line917">line 917</a>
</li></ul></dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="activeChannel.html">activeChannel</a></li><li><a href="channelManager.html">channelManager</a></li><li><a href="chat.html">chat</a></li><li><a href="chatBuffer.html">chatBuffer</a></li><li><a href="chatHandler.html">chatHandler</a></li><li><a href="commandPreprocessor.html">commandPreprocessor</a></li><li><a href="commandProcessor.html">commandProcessor</a></li><li><a href="connectedUser.html">connectedUser</a></li><li><a href="media.html">media</a></li><li><a href="playlistHandler.html">playlistHandler</a></li><li><a href="queue.html">queue</a></li><li><a href="queuedMedia.html">queuedMedia</a></li><li><a href="tokebot.html">tokebot</a></li></ul><h3>Global</h3><ul><li><a href="global.html#authenticateSession">authenticateSession</a></li><li><a href="global.html#cache">cache</a></li><li><a href="global.html#channelBanSchema">channelBanSchema</a></li><li><a href="global.html#channelPermissionSchema">channelPermissionSchema</a></li><li><a href="global.html#channelSchema">channelSchema</a></li><li><a href="global.html#chatSchema">chatSchema</a></li><li><a href="global.html#comparePassword">comparePassword</a></li><li><a href="global.html#consoleWarn">consoleWarn</a></li><li><a href="global.html#daysToExpire">daysToExpire</a></li><li><a href="global.html#dumpError">dumpError</a></li><li><a href="global.html#emailChangeSchema">emailChangeSchema</a></li><li><a href="global.html#emoteSchema">emoteSchema</a></li><li><a href="global.html#errorHandler">errorHandler</a></li><li><a href="global.html#errorMiddleware">errorMiddleware</a></li><li><a href="global.html#escapeRegex">escapeRegex</a></li><li><a href="global.html#exceptionHandler">exceptionHandler</a></li><li><a href="global.html#exceptionSmith">exceptionSmith</a></li><li><a href="global.html#failedAttempts">failedAttempts</a></li><li><a href="global.html#fetchMetadata">fetchMetadata</a></li><li><a href="global.html#fetchVideoMetadata">fetchVideoMetadata</a></li><li><a href="global.html#fetchYoutubeMetadata">fetchYoutubeMetadata</a></li><li><a href="global.html#fetchYoutubePlaylistMetadata">fetchYoutubePlaylistMetadata</a></li><li><a href="global.html#flairSchema">flairSchema</a></li><li><a href="global.html#genCaptcha">genCaptcha</a></li><li><a href="global.html#getLoginAttempts">getLoginAttempts</a></li><li><a href="global.html#getMediaType">getMediaType</a></li><li><a href="global.html#hashIP">hashIP</a></li><li><a href="global.html#hashPassword">hashPassword</a></li><li><a href="global.html#kickoff">kickoff</a></li><li><a href="global.html#killSession">killSession</a></li><li><a href="global.html#lifetime">lifetime</a></li><li><a href="global.html#localExceptionHandler">localExceptionHandler</a></li><li><a href="global.html#mailem">mailem</a></li><li><a href="global.html#markLink">markLink</a></li><li><a href="global.html#maxAttempts">maxAttempts</a></li><li><a href="global.html#mediaSchema">mediaSchema</a></li><li><a href="global.html#passwordResetSchema">passwordResetSchema</a></li><li><a href="global.html#permissionSchema">permissionSchema</a></li><li><a href="global.html#playlistMediaProperties">playlistMediaProperties</a></li><li><a href="global.html#playlistSchema">playlistSchema</a></li><li><a href="global.html#processExpiredAttempts">processExpiredAttempts</a></li><li><a href="global.html#queuedProperties">queuedProperties</a></li><li><a href="global.html#rankEnum">rankEnum</a></li><li><a href="global.html#refreshRawLink">refreshRawLink</a></li><li><a href="global.html#schedule">schedule</a></li><li><a href="global.html#securityCheck">securityCheck</a></li><li><a href="global.html#sendAddressVerification">sendAddressVerification</a></li><li><a href="global.html#socketCriticalExceptionHandler">socketCriticalExceptionHandler</a></li><li><a href="global.html#socketErrorHandler">socketErrorHandler</a></li><li><a href="global.html#socketExceptionHandler">socketExceptionHandler</a></li><li><a href="global.html#spent">spent</a></li><li><a href="global.html#statSchema">statSchema</a></li><li><a href="global.html#throttleAttempts">throttleAttempts</a></li><li><a href="global.html#tokeCommandSchema">tokeCommandSchema</a></li><li><a href="global.html#transporter">transporter</a></li><li><a href="global.html#typeEnum">typeEnum</a></li><li><a href="global.html#userBanSchema">userBanSchema</a></li><li><a href="global.html#userSchema">userSchema</a></li><li><a href="global.html#verify">verify</a></li><li><a href="global.html#yankMedia">yankMedia</a></li><li><a href="global.html#ytdlpFetch">ytdlpFetch</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.4</a> on Sat Sep 06 2025 19:07:56 GMT-0400 (Eastern Daylight Time)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>