Compare commits

...

6 Commits

Author SHA1 Message Date
145505b891 1.1.52 2021-05-16 23:39:26 +00:00
f4f50c6a94 fix(core): update 2021-05-16 23:39:25 +00:00
d204059313 1.1.51 2020-09-29 15:22:25 +00:00
00210566d5 fix(core): update 2020-09-29 15:22:25 +00:00
14245b2521 1.1.50 2020-09-29 15:20:41 +00:00
f0fa91e2db fix(core): update 2020-09-29 15:20:40 +00:00
5 changed files with 2789 additions and 1580 deletions

4323
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/smartrequest", "name": "@pushrocks/smartrequest",
"version": "1.1.49", "version": "1.1.52",
"private": false, "private": false,
"description": "dropin replacement for request", "description": "dropin replacement for request",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
@ -23,16 +23,17 @@
}, },
"homepage": "https://gitlab.com/pushrocks/smartrequest#README", "homepage": "https://gitlab.com/pushrocks/smartrequest#README",
"dependencies": { "dependencies": {
"@pushrocks/smartpromise": "^3.0.6", "@pushrocks/smartpromise": "^3.1.5",
"agentkeepalive": "^4.1.3", "@pushrocks/smarturl": "^2.0.1",
"form-data": "^3.0.0" "agentkeepalive": "^4.1.4",
"form-data": "^4.0.0"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.25", "@gitzone/tsbuild": "^2.1.25",
"@gitzone/tsrun": "^1.2.12", "@gitzone/tsrun": "^1.2.12",
"@gitzone/tstest": "^1.0.44", "@gitzone/tstest": "^1.0.54",
"@pushrocks/tapbundle": "^3.2.9", "@pushrocks/tapbundle": "^3.2.14",
"@types/node": "^14.6.0", "@types/node": "^15.3.0",
"tslint": "^6.1.3", "tslint": "^6.1.3",
"tslint-config-prettier": "^1.18.0" "tslint-config-prettier": "^1.18.0"
}, },

View File

@ -5,4 +5,5 @@ export interface ISmartRequestOptions extends https.RequestOptions {
keepAlive?: boolean; keepAlive?: boolean;
requestBody?: any; requestBody?: any;
autoJsonParse?: boolean; autoJsonParse?: boolean;
queryParams?: {[key: string]: string}
} }

View File

@ -1,15 +1,19 @@
import formData from 'form-data'; // node native scope
import * as fs from 'fs'; import * as fs from 'fs';
import * as http from 'http'; import * as http from 'http';
import * as https from 'https'; import * as https from 'https';
import * as path from 'path'; import * as path from 'path';
import * as url from 'url';
export { http, https, fs, path };
// pushrocks scope
import * as smartpromise from '@pushrocks/smartpromise'; import * as smartpromise from '@pushrocks/smartpromise';
import * as smarturl from '@pushrocks/smarturl';
export { formData, http, https, fs, path, url, smartpromise }; export { smartpromise, smarturl };
// third party scope // third party scope
import * as agentkeepalive from 'agentkeepalive'; import agentkeepalive from 'agentkeepalive';
import formData from 'form-data';
export { agentkeepalive }; export { agentkeepalive, formData };

View File

@ -57,7 +57,7 @@ const parseSocketPathAndRoute = (stringToParseArg: string) => {
/** /**
* a custom http agent to make sure we can set custom keepAlive options for speedy subsequent calls * a custom http agent to make sure we can set custom keepAlive options for speedy subsequent calls
*/ */
const httpAgent = new plugins.agentkeepalive.default(); const httpAgent = new plugins.agentkeepalive();
/** /**
* a custom http agent to make sure we can set custom keepAlive options for speedy subsequent calls * a custom http agent to make sure we can set custom keepAlive options for speedy subsequent calls
@ -83,7 +83,7 @@ const httpsAgentKeepAliveFalse = new plugins.https.Agent({
}); });
export let request = async ( export let request = async (
domainArg: string, urlArg: string,
optionsArg: interfaces.ISmartRequestOptions = {}, optionsArg: interfaces.ISmartRequestOptions = {},
responseStreamArg: boolean = false, responseStreamArg: boolean = false,
requestDataFunc: (req: plugins.http.ClientRequest) => void = null requestDataFunc: (req: plugins.http.ClientRequest) => void = null
@ -103,15 +103,18 @@ export let request = async (
}; };
// parse url // parse url
const parsedUrl = plugins.url.parse(domainArg); const parsedUrl = plugins.smarturl.Smarturl.createFromUrl(urlArg, {
searchParams: optionsArg.queryParams || {}
});
optionsArg.hostname = parsedUrl.hostname; optionsArg.hostname = parsedUrl.hostname;
if (parsedUrl.port) { if (parsedUrl.port) {
optionsArg.port = parseInt(parsedUrl.port, 10); optionsArg.port = parseInt(parsedUrl.port, 10);
} }
optionsArg.path = parsedUrl.path; optionsArg.path = parsedUrl.path;
optionsArg.queryParams = parsedUrl.searchParams;
// determine if unixsock // determine if unixsock
if (testForUnixSock(domainArg)) { if (testForUnixSock(urlArg)) {
const detailedUnixPath = parseSocketPathAndRoute(optionsArg.path); const detailedUnixPath = parseSocketPathAndRoute(optionsArg.path);
optionsArg.socketPath = detailedUnixPath.socketPath; optionsArg.socketPath = detailedUnixPath.socketPath;
optionsArg.path = detailedUnixPath.path; optionsArg.path = detailedUnixPath.path;
@ -137,6 +140,11 @@ export let request = async (
} }
})() as typeof plugins.https; })() as typeof plugins.https;
if (!requestModule) {
console.error(`The request to ${urlArg} is missing a viable protocol. Must be http or https`);
return;
}
// lets perform the actual request // lets perform the actual request
const requestToFire = requestModule.request(optionsArg, async (response) => { const requestToFire = requestModule.request(optionsArg, async (response) => {
if (responseStreamArg) { if (responseStreamArg) {