| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 'use strict';const request = require('request'),	  config  = require('config'),		utils = require('../utils'),		hooks = require('./hooks');module.exports = {	/**	 * Fetches a list of songs from Youtubes API	 *	 * @param session	 * @param query - the query we'll pass to youtubes api	 * @param cb	 * @return {{ status: String, data: Object }}	 */	searchYoutube: (session, query, cb) => {		const params = [			'part=snippet',			`q=${encodeURIComponent(query)}`,			`key=${config.get('apis.youtube.key')}`,			'type=video',			'maxResults=15'		].join('&');		request(`https://www.googleapis.com/youtube/v3/search?${params}`, (err, res, body) => {			if (err) {				console.error(err);				return cb({ status: 'error', message: 'Failed to search youtube with the requested query' });			}			cb({ status: 'success', data: JSON.parse(body) });		});	},	joinRoom: (session, page, cb) => {		if (page === 'home') {			utils.socketJoinRoom(session.socketId, page);		}		cb({});	},	joinAdminRoom: hooks.adminRequired((session, page, cb) => {		if (page === 'queue' || page === 'songs' || page === 'stations' || page === 'reports') {			utils.socketJoinRoom(session.socketId, `admin.${page}`);		}		cb({});	})};
 |