apis.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. 'use strict';
  2. const request = require('request'),
  3. config = require('config'),
  4. utils = require('../utils'),
  5. hooks = require('./hooks');
  6. module.exports = {
  7. /**
  8. * Fetches a list of songs from Youtubes API
  9. *
  10. * @param session
  11. * @param query - the query we'll pass to youtubes api
  12. * @param cb
  13. * @return {{ status: String, data: Object }}
  14. */
  15. searchYoutube: (session, query, cb) => {
  16. const params = [
  17. 'part=snippet',
  18. `q=${encodeURIComponent(query)}`,
  19. `key=${config.get('apis.youtube.key')}`,
  20. 'type=video',
  21. 'maxResults=15'
  22. ].join('&');
  23. request(`https://www.googleapis.com/youtube/v3/search?${params}`, (err, res, body) => {
  24. if (err) {
  25. console.error(err);
  26. return cb({ status: 'error', message: 'Failed to search youtube with the requested query' });
  27. }
  28. cb({ status: 'success', data: JSON.parse(body) });
  29. });
  30. },
  31. joinRoom: (session, page, cb) => {
  32. if (page === 'home') {
  33. utils.socketJoinRoom(session.socketId, page);
  34. }
  35. cb({});
  36. },
  37. joinAdminRoom: hooks.adminRequired((session, page, cb) => {
  38. if (page === 'queue' || page === 'songs' || page === 'stations' || page === 'reports') {
  39. utils.socketJoinRoom(session.socketId, `admin.${page}`);
  40. }
  41. cb({});
  42. })
  43. };