From abad5dd09200c389581802437685c574709ac5ba Mon Sep 17 00:00:00 2001 From: kmoyaba Date: Sun, 2 Oct 2016 22:47:41 +0200 Subject: [PATCH 1/3] use cross-platform path for loading handler file --- lib/atajo.io.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) { From 1db0eb1cb391b8bd9cdcfc07d1165c2408ad3fa9 Mon Sep 17 00:00:00 2001 From: kmoyaba Date: Sun, 2 Oct 2016 23:09:44 +0200 Subject: [PATCH 2/3] refactor handlerWebRequest --- lib/handlerWebRequest.js | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/lib/handlerWebRequest.js b/lib/handlerWebRequest.js index cf8dcaf..2093947 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,13 @@ } 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) { + var post = function (urlPath, postData, params, heads) { var deferred = Q.defer(); params = params || {}; @@ -61,14 +61,14 @@ 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) { + var get = function (urlPath, params, heads) { var deferred = Q.defer(); params = params || {}; @@ -79,14 +79,14 @@ 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) { + var put = function (urlPath, postData, params, heads) { var deferred = Q.defer(); params = params || {}; @@ -99,14 +99,14 @@ 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) { + var deleteReq = function (urlPath, params, heads) { var deferred = Q.defer(); params = params || {}; @@ -117,13 +117,15 @@ qs: params, headers: heads }; - makeRequest(options).then(function(data) { + makeRequest(options).then(function (data) { deferred.resolve(data); }); return deferred.promise; }; + + module.exports = { post: post, get: get, From 532c185cfd60f07a83db008de320bb3c77684785 Mon Sep 17 00:00:00 2001 From: kmoyaba Date: Sun, 2 Oct 2016 23:26:54 +0200 Subject: [PATCH 3/3] add custom request method and prelim documentation --- lib/handlerWebRequest.js | 48 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/lib/handlerWebRequest.js b/lib/handlerWebRequest.js index 2093947..e0e2e11 100644 --- a/lib/handlerWebRequest.js +++ b/lib/handlerWebRequest.js @@ -48,6 +48,14 @@ return deferred.promise; }; + /** + * 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(); @@ -68,6 +76,13 @@ return deferred.promise; }; + /** + * 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(); @@ -86,6 +101,14 @@ return deferred.promise; }; + /** + * 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(); @@ -106,6 +129,13 @@ return deferred.promise; }; + /** + * 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(); @@ -124,12 +154,26 @@ 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); + }); + + return deferred.promise; + }; module.exports = { post: post, get: get, put: put, - delete: deleteReq + delete: deleteReq, + customRequest: customReq }; }());