heos-api
Version:
🎵 A zero-dependency low level api-wrapper for communicating with HEOS devices 🎵
68 lines • 2.89 kB
JavaScript
;
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