ninjs-request
Version:
request engine
84 lines (71 loc) • 2.51 kB
JavaScript
/**
* 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)
}