diff --git a/lib/atajo.io.js b/lib/atajo.io.js index 4489f5b..e388043 100644 --- a/lib/atajo.io.js +++ b/lib/atajo.io.js @@ -388,7 +388,7 @@ _io = { return; } - var fnam = './handlers/' + handlerName + '.js'; + var fnam = path.join(__dirname, '..', '..', 'handlers', handlerName + '.js'); atajo.log.d("CHECKING HANDLER " + fnam); fs.exists(fnam, function(exists) { diff --git a/lib/handlerWebRequest.js b/lib/handlerWebRequest.js index cf8dcaf..e0e2e11 100644 --- a/lib/handlerWebRequest.js +++ b/lib/handlerWebRequest.js @@ -2,15 +2,15 @@ * This is a helper to call http requests for handlers * This when using an underlying web api */ -(function() { - var apiConfig = require('../../apiConfig.json'); - var http = require('http'); - var path = require('path'); - var url = require('url'); - var _log = require('./log'); +(function () { + 'use strict'; + var Q = require('q'); var request = require('request'); + var apiConfig = require('../../apiConfig.json'); + var _log = require('./atajo.log').init('forkController'); + /** * This is the fallback error * @type {String} @@ -28,13 +28,13 @@ */ var baseURL = apiConfig.REST_BASE_URL; - var makeRequest = function(options) { + var makeRequest = function (options) { var deferred = Q.defer(); _log.d(" start handler web request via uri: " + options.uri); - request(options, function(error, response, body) { + request(options, function (error, response, body) { if (!error) { - if (typeof body == 'object') { + if (typeof body === 'object') { deferred.resolve(body); } else { deferred.resolve(JSON.parse(body)); @@ -42,13 +42,21 @@ } else { _log.e("Request unsuccessfull: " + (error ? error : '') + " | status: " + (response ? response.statusCode : 'N/A')); - deferred.resolve({ error: true, message: unresolvedErrorMessage }); + deferred.resolve({error: true, message: unresolvedErrorMessage}); } }); return deferred.promise; }; - var post = function(urlPath, postData, params, heads) { + /** + * JSON based `POST` request + * @param {string} urlPath URL of web service + * @param {object} postData object with JSON payload + * @param {object} params HTTP query parameters + * @param {object} heads HTTP headers + * @return {promise} Promise with result of request + */ + var post = function (urlPath, postData, params, heads) { var deferred = Q.defer(); params = params || {}; @@ -61,14 +69,21 @@ qs: params, headers: heads }; - makeRequest(options).then(function(data) { + makeRequest(options).then(function (data) { deferred.resolve(data); }); return deferred.promise; }; - var get = function(urlPath, params, heads) { + /** + * JSON based `GET` request + * @param {string} urlPath URL of web service + * @param {object} params HTTP query parameters + * @param {object} heads HTTP headers + * @return {promise} Promise with result of request + */ + var get = function (urlPath, params, heads) { var deferred = Q.defer(); params = params || {}; @@ -79,14 +94,22 @@ qs: params, headers: heads }; - makeRequest(options).then(function(data) { + makeRequest(options).then(function (data) { deferred.resolve(data); }); return deferred.promise; }; - var put = function(urlPath, postData, params, heads) { + /** + * JSON based `PUT` request + * @param {string} urlPath URL of web service + * @param {object} postData object with JSON payload + * @param {object} params HTTP query parameters + * @param {object} heads HTTP headers + * @return {promise} Promise with result of request + */ + var put = function (urlPath, postData, params, heads) { var deferred = Q.defer(); params = params || {}; @@ -99,14 +122,21 @@ qs: params, headers: heads }; - makeRequest(options).then(function(data) { + makeRequest(options).then(function (data) { deferred.resolve(data); }); return deferred.promise; }; - var deleteReq = function(urlPath, params, heads) { + /** + * JSON based `DELETE` request + * @param {string} urlPath URL of web service + * @param {object} params HTTP query parameters + * @param {object} heads HTTP headers + * @return {promise} Promise with result of request + */ + var deleteReq = function (urlPath, params, heads) { var deferred = Q.defer(); params = params || {}; @@ -117,7 +147,22 @@ qs: params, headers: heads }; - makeRequest(options).then(function(data) { + makeRequest(options).then(function (data) { + deferred.resolve(data); + }); + + return deferred.promise; + }; + + /** + * Custom request using standard `request` options as they are + * @param {object} requestOptions `request` Object + * @return {promise} Promise with result of request + */ + var customReq = function (requestOptions) { + var deferred = Q.defer(); + + makeRequest(requestOptions).then(function (data) { deferred.resolve(data); }); @@ -128,6 +173,7 @@ post: post, get: get, put: put, - delete: deleteReq + delete: deleteReq, + customRequest: customReq }; }());