UNPKG

@kellojo/homebridge-http-webhooks

Version:

A http plugin with support of webhooks for Homebridge: https://github.com/nfarina/homebridge

51 lines (48 loc) 1.71 kB
const Constants = require('./Constants'); var request = require("request"); const callHttpApi = function(log, urlToCall, urlMethod, urlBody, urlForm, urlHeaders, rejectUnauthorized, homeKitCallback, context, onSuccessCallback, onFailureCallback, timeout) { if (urlToCall !== "" && context !== Constants.CONTEXT_FROM_WEBHOOK) { var theRequest = { method : urlMethod, url : urlToCall, timeout : timeout || Constants.DEFAULT_REQUEST_TIMEOUT, headers : JSON.parse(urlHeaders), rejectUnauthorized: rejectUnauthorized }; if (urlMethod === "POST" || urlMethod === "PUT" || urlMethod === "PATCH") { if (urlForm) { log("Adding Form " + urlForm); theRequest.form = JSON.parse(urlForm); } else if (urlBody) { log("Adding Body " + urlBody); theRequest.body = urlBody; } } request(theRequest, (function(err, response, body) { var statusCode = response && response.statusCode ? response.statusCode : -1; log("Request to '%s' finished with status code '%s' and body '%s'.", urlToCall, statusCode, body, err); if (!err && statusCode >= 200 && statusCode < 300) { if (onSuccessCallback) { onSuccessCallback(); } homeKitCallback(null); } else { if (onFailureCallback) { onFailureCallback(); } homeKitCallback(err || new Error("Request to '" + urlToCall + "' was not succesful.")); } }).bind(this)); } else { if (onSuccessCallback) { onSuccessCallback(); } homeKitCallback(null); } }; module.exports = { callHttpApi : callHttpApi };