als-request
Version:
versatile HTTP client offering enhanced features for Node.js with functionality for speed limitation with events, CORS management, stream support, automatic data preparation, error and response handling, and more
21 lines (19 loc) • 851 B
JavaScript
const errorHandler = require('../error-handler')
const { http, https } = require('follow-redirects');
const URL = require('url');
const isValidUrl = require('./is-valid-url')
function prepareRequest(originalUrl,referer,errors) {
let result = isValidUrl(originalUrl,referer)
if(result == false) {
errors.push(errorHandler({code:'INVALIDURL',url:originalUrl}))
return {requester:null,url:originalUrl,options:{headers:{}}}
}
let {url,urlObj} = result
let options = URL.parse(url, true)
options.headers = {}
const { protocol } = options
const requester = protocol === 'http:' ? http : protocol === 'https:' ? https : null
if(requester === null) errors.push(errorHandler({code:'INVALIDPROTOCOL',url,details:{protocol}}))
return {requester,url,options,urlObj}
}
module.exports = prepareRequest