homebridge-gsh
Version:
Google Smart Home
50 lines • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseMessage = void 0;
exports.createConnection = createConnection;
const node_net_1 = require("node:net");
const node_url_1 = require("node:url");
const httpParser_1 = require("./httpParser");
exports.parseMessage = httpParser_1.default;
function createConnection(instance, pin, body) {
const client = (0, node_net_1.createConnection)({
host: instance.ipAddress,
port: instance.port,
});
client.write(_buildMessage({
method: 'PUT',
url: 'http://' + instance.ipAddress + ':' + instance.port + '/characteristics',
maxAttempts: 1,
headers: {
'Content-Type': 'Application/json',
'authorization': pin,
'connection': 'keep-alive',
},
body: JSON.stringify(body),
}));
return client;
}
function _headersToString(headers) {
let response = '';
for (const header of Object.keys(headers)) {
response = response + header + ': ' + headers[header] + '\r\n';
}
return (response);
}
function _buildMessage(request) {
const context = (0, node_url_1.parse)(request.url);
let message;
message = request.method + ' ' + context.pathname;
if (context.search) {
message = message + context.search;
}
message = message + ' HTTP/1.1\r\nHost: ' + context.host + '\r\n' + _headersToString(request.headers);
if (request.body) {
message = message + 'Content-Length: ' + request.body.length + '\r\n\r\n' + request.body + '\r\n\r\n';
}
else {
message = message + '\r\n\r\n';
}
return (message);
}
//# sourceMappingURL=index.js.map