| 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({});
 
- 	})
 
- };
 
 
  |