File: /var/dev/nowruzgan/rest/api/helpers/asyncJson.js
var request = require('request');
module.exports = {
friendlyName: 'AsyncJson',
description: 'Async requests to fetch json results.',
inputs: {
url: {
type: 'string'
},
verb: {
type: 'string'
},
data: {
type: 'ref'
},
raw: {
type: 'boolean'
}
},
exits: {
},
fn: async (inputs, exits) => {
if(!inputs.verb) inputs.verb = 'get';
getRequest = (url, verb) =>
new Promise ((resolve, reject) => {
request[verb](url, (err, response, body) => resolve(JSON.parse(body)))
});
// objectRequest = (url, verb) =>
// new Promise ((resolve, reject) => {
// request[verb](url, inputs.data, (err, response, body) => resolve(JSON.parse(body)))
// });
rawRequest = (url, verb) =>
new Promise ((resolve, reject) => {
request[verb]({
url: url,
body: inputs.data,
headers: {'content-type': 'application/json'}
}, (err, response, body) => resolve(JSON.parse(body)))
});
let res = '';
if(inputs.verb=='get' || inputs.verb=='delete')
res = await getRequest(inputs.url, inputs.verb);
if((inputs.verb=='post' || inputs.verb=='put') && !inputs.raw){
inputs.data = JSON.stringify(inputs.data);
res = await rawRequest(inputs.url, inputs.verb);
}
if((inputs.verb=='post' || inputs.verb=='put') && inputs.raw)
res = await rawRequest(inputs.url, inputs.verb);
return exits.success(res);
},
};