UNPKG

heos-api

Version:

🎵 A zero-dependency low level api-wrapper for communicating with HEOS devices 🎵

68 lines • 2.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var net_1 = require("net"); var constants_1 = require("../utils/constants"); var responseEventHandler_1 = require("../listen/responseEventHandler"); var responseParser_1 = require("../listen/responseParser"); var heosConnection_1 = require("./heosConnection"); function createHeosSocket(address, responseParser) { var hasResolvedOrRejected = false; return new Promise(function (resolve, reject) { var host = address; var port = constants_1.DEFAULT_PORT; try { var socket_1 = net_1.createConnection({ port: port, host: host, localPort: 0 }, function () { hasResolvedOrRejected = true; resolve(socket_1); }); socket_1.on('data', function (data) { return responseParser.put(data); }); socket_1.on('timeout', function () { if (!hasResolvedOrRejected) { socket_1.end(); hasResolvedOrRejected = true; reject(new Error('Socket timeout')); } }); socket_1.on('error', function (error) { if (!hasResolvedOrRejected) { hasResolvedOrRejected = true; reject(error); } else { console.error(error); } }); } catch (error) { reject(error); } }); } /** * Establishes a connection with a HEOS device. Use this function when you know the address of a HEOS device. It is recommended to use `hoes.discoverOneDevice()` to find an address. * @param address The address of the host (HEOS device) to create a connection to. * @returns A promise that resolves with a HeosConnection that can be used to communicate with a HEOS device. */ function connect(address) { return new Promise(function (resolve, reject) { var responseEventHandler = new responseEventHandler_1.ResponseEventHandler(); var responseParser = new responseParser_1.ResponseParser(function (message) { return responseEventHandler.put(message); }); createHeosSocket(address, responseParser) .then(function (socket) { var on = function (event, listener) { return responseEventHandler.on(event, listener); }; var once = function (event, listener) { return responseEventHandler.once(event, listener); }; var onAll = function (listener) { return responseEventHandler.onAll(listener); }; var connection = new heosConnection_1.HeosConnection(on, once, onAll, socket); resolve(connection); }) .catch(reject); }); } exports.connect = connect; //# sourceMappingURL=connect.js.map