UNPKG

domotz-remote-pawn

Version:

Domotz Agent

93 lines (82 loc) 3.14 kB
/** This file is part of Domotz Agent. * Copyright (C) 2016 Domotz Ltd * * Domotz Agent is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Domotz Agent is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Domotz Agent. If not, see <http://www.gnu.org/licenses/>. **/ /** * Created by Iacopo Papalini <ipapalini@domotz.com> on 09/04/15. * */ var sendNotificationToUpdater = function (modHttp, unixSocket, content, status, callback, myConsole) { content = JSON.stringify(content); var postOptions = { socketPath: unixSocket, method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(content), }, }; var isUpdaterSimulated = 1 === process.env.UPDATER_SIMULATION; myConsole.info('Sending request to the Agent Updater... (simulated=%s)', isUpdaterSimulated.toString()); var postRequest = modHttp.request(postOptions, function (response) { if (response.statusCode === 202) { callback(); if (isUpdaterSimulated === true) { status.set(status.UPDATING); } } else { callback({ error: 'Unexpected status code ' + response.statusCode }); } }); postRequest.on('error', function (err) { var errorMessage = JSON.stringify(err); myConsole.error('Error on Unix socket request : %s', errorMessage); callback({ error: errorMessage }); }); postRequest.write(content); postRequest.end(); }; var updateAgent = function (message, resourceLocator) { var myConsole = resourceLocator.log.decorateLogs(); var payload = message.payload; var pkgRegistry = payload.registry_url; var pkgName = payload.package_name; var pkgVersion = payload.package_version; return { describe: function () { return 'Update Agent: ' + 'Url: ' + pkgRegistry + ', ' + 'Pkg: ' + pkgName + '. ' + 'Version: ' + pkgVersion; }, execute: function (callback) { if (!pkgVersion) { myConsole.error('Invalid package version'); callback({ error: 'Invalid package version' }); return; } sendNotificationToUpdater( resourceLocator.http, process.env.DOMOTZ_UPDATER_UNIX_SOCKET, { registry: pkgRegistry, name: pkgName, version: pkgVersion, }, resourceLocator.status, callback, myConsole ); }, }; }; module.exports.command = updateAgent;