GladysProject/Gladys

View on GitHub
server/services/sonos/index.js

Summary

Maintainability
A
0 mins
Test Coverage
const logger = require('../../utils/logger');
const SonosHandler = require('./lib');
const sonosController = require('./api/sonos.controller');

module.exports = function SonosService(gladys, serviceId) {
  // @ts-ignore
  const sonosLib = require('@svrooij/sonos');
  const sonosHandler = new SonosHandler(gladys, sonosLib, serviceId);

  /**
   * @public
   * @description This function starts the sonos service service.
   * @example
   * gladys.services['sonos'].start();
   */
  async function start() {
    logger.info('Starting Sonos service');
    sonosHandler.init();
  }

  /**
   * @public
   * @description This function stops the sonos service.
   * @example
   *  gladys.services['sonos'].stop();
   */
  async function stop() {
    logger.info('Stopping sonos service');
  }

  /**
   * @public
   * @description This function return true if the service is used.
   * @returns {Promise<boolean>} Resolves with a boolean.
   * @example
   *  const isUsed = await gladys.services['sonos'].isUsed();
   */
  async function isUsed() {
    return sonosHandler.devices.length > 0;
  }

  return Object.freeze({
    start,
    stop,
    isUsed,
    device: sonosHandler,
    controllers: sonosController(sonosHandler),
  });
};