HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
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);
  },
};