UNPKG

domotz-remote-pawn

Version:

Domotz Agent

76 lines (68 loc) 2.86 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/>. **/ var httpRequest = function (message, resourceLocator) { var cid = message.correlationId; var options = message.payload; /** * basic_auth is the historical field delegated to authentication: kept this * name for retro-compatibility. */ if (options.basic_auth) { // auth = payload.basic_auth.user + ':' + payload.basic_auth.password + '@'; options.auth = options.basic_auth; delete options.basic_auth; } var url = 'http://' + options.host + ':' + options.port + options.path; delete options.host; delete options.port; delete options.path; options.url = url; if (options.timeout === undefined) { options.timeout = 2000; // 2s of default timeout } return { execute: function (callback) { var responseCallback = function (error, response) { if (response === undefined) { console.log("MESSAGE - (%s): Empty response, probable connection error - %s", cid, JSON.stringify(error)); response = {}; } else { console.log("MESSAGE - (%s): Got response - Code: %s", cid, response.statusCode); } callback({ error: error, statusCode: response.statusCode, headers: response.headers, body: response.body }); }; console.log("MESSAGE - (%s): Sending request: %s", cid, url); resourceLocator.request(options, responseCallback); }, describe: function () { var match = resourceLocator.url.parse(url); return "httpRequest - " + "Method: " + options.method + '. ' + "Protocol: " + match.protocol + '. ' + "Host: " + match.hostname + '. ' + "Port: " + (match.port || 80) + '. ' + "Path: " + match.pathname + '.'; // TODO: Print also query params (but excluding password) } }; }; module.exports.command = httpRequest;