UNPKG

ninjs-request

Version:
84 lines (71 loc) 2.51 kB
/** * Ninjs Web Request * Request wrapper using request module */ const _ = require('ninjs-lodash') _.$load(_.path.resolve(__dirname, '..', '.ninjs', 'settings.js')) const request = require('request') const _NAME = _.path.name(__filename) const _NS = `ninjs.${_NAME}` exports = module.exports = request _.assign(exports, { NAME: _NAME, NS: _NS, DIR: __dirname, FILE: __filename, SETTINGS: _SETTINGS, toFile: toFile, writeHead: writeHead, writeHeaders: writeHeaders, writeRequest: writeRequest }) function toFile(options, callback) { let { url='', dest='', pretty=false } = options pretty = _.isBoolean(pretty) ? pretty : false let ex = dest ? _.path.ex(dest) || '' : '' if (!url || !_.isString(url)) return _.fail('Invalid url', callback) if (!dest || !_.isString(dest)) return _.fail('Invalid dest', callback) if (!ex) return _.fail('Invalid dest extension', callback) request(url, function(err, res, body) { if(err) return _.fail(err, callback) // BREAKS OCCASIONALLY WITH INVALID MUP AND IS VERY INEFFICIENT SO USE SPARINGLY // let result = pretty && ex === 'html' ? _.prettyHtml(body) : body _.outputFile(dest, body, callback) }) } function writeHead(options, callback) { let { url='', dest=''} = options if (!url || !_.isString(url)) return _.fail('Invalid url', callback) if (!dest || !_.isString(dest)) return _.fail('Invalid dest', callback) _.async.waterfall([ _.async.constant(url), request.head, _.async.apply(_.outputJson, dest) ], callback) } function writeHeaders(options, callback) { let { url='', dest=''} = options if (!url || !_.isString(url)) return _.fail('Invalid url', callback) if (!dest || !_.isString(dest)) return _.fail('Invalid dest', callback) _.async.waterfall([ _.async.constant(url), request.head, _.async._.asyncify(function(result) { return _.get(result.toJSON(), 'headers') }), _.async.apply(_.outputJson, dest) ], callback) } function writeRequest(options, callback) { let { url='', dest=''} = options if (!url || !_.isString(url)) return _.fail('Invalid url', callback) if (!dest || !_.isString(dest)) return _.fail('Invalid dest', callback) _.async.waterfall([ _.async.constant(url), request.head, _.async._.asyncify(function (result) { return _.get(result.toJSON(), 'request') }), _.async.apply(_.outputJson, dest) ], callback) }