Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
36472b7306 | |||
e86f14b8d8 | |||
2b9e7f6dd2 | |||
5e4afccf9c | |||
3de7a1a210 | |||
bd2a5eedff | |||
aa18357d75 | |||
9960aff219 |
38
package-lock.json
generated
38
package-lock.json
generated
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@pushrocks/smartrequest",
|
"name": "@pushrocks/smartrequest",
|
||||||
"version": "1.1.31",
|
"version": "1.1.35",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -407,6 +407,16 @@
|
|||||||
"integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==",
|
"integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"agentkeepalive": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://verdaccio.lossless.one/agentkeepalive/-/agentkeepalive-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-A5gSniD4xMCYtSD4ilUHpQRB9ZbNjtIPittKUv7bA0j0UCwbT3EJBUYLKPJ/dtmaXRYWI2mG4/O90xbi7oahNw==",
|
||||||
|
"requires": {
|
||||||
|
"debug": "^4.1.0",
|
||||||
|
"depd": "^1.1.2",
|
||||||
|
"humanize-ms": "^1.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ansi-256-colors": {
|
"ansi-256-colors": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz",
|
||||||
@ -658,6 +668,14 @@
|
|||||||
"which": "^1.2.9"
|
"which": "^1.2.9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"debug": {
|
||||||
|
"version": "4.1.1",
|
||||||
|
"resolved": "https://verdaccio.lossless.one/debug/-/debug-4.1.1.tgz",
|
||||||
|
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||||
|
"requires": {
|
||||||
|
"ms": "^2.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"decamelize": {
|
"decamelize": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
|
||||||
@ -695,6 +713,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||||
},
|
},
|
||||||
|
"depd": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://verdaccio.lossless.one/depd/-/depd-1.1.2.tgz",
|
||||||
|
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
|
||||||
|
},
|
||||||
"diff": {
|
"diff": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://verdaccio.lossless.one/diff/-/diff-4.0.1.tgz",
|
"resolved": "https://verdaccio.lossless.one/diff/-/diff-4.0.1.tgz",
|
||||||
@ -844,6 +867,14 @@
|
|||||||
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"humanize-ms": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://verdaccio.lossless.one/humanize-ms/-/humanize-ms-1.2.1.tgz",
|
||||||
|
"integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=",
|
||||||
|
"requires": {
|
||||||
|
"ms": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"inflight": {
|
"inflight": {
|
||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||||
@ -1045,6 +1076,11 @@
|
|||||||
"moment": ">= 2.9.0"
|
"moment": ">= 2.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ms": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://verdaccio.lossless.one/ms/-/ms-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||||
|
},
|
||||||
"nice-try": {
|
"nice-try": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@pushrocks/smartrequest",
|
"name": "@pushrocks/smartrequest",
|
||||||
"version": "1.1.31",
|
"version": "1.1.35",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "dropin replacement for request",
|
"description": "dropin replacement for request",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
@ -25,6 +25,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@pushrocks/smartpromise": "^3.0.5",
|
"@pushrocks/smartpromise": "^3.0.5",
|
||||||
"@types/form-data": "^2.5.0",
|
"@types/form-data": "^2.5.0",
|
||||||
|
"agentkeepalive": "^4.0.2",
|
||||||
"form-data": "^2.5.1"
|
"form-data": "^2.5.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -21,7 +21,7 @@ tap.test('should request a JSON document over https', async () => {
|
|||||||
.equal(1);
|
.equal(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should post a JSON document over http', async () => {
|
tap.skip.test('should post a JSON document over http', async () => {
|
||||||
await expect(smartrequest.postJson('http://md5.jsontest.com/?text=example_text'))
|
await expect(smartrequest.postJson('http://md5.jsontest.com/?text=example_text'))
|
||||||
.to.eventually.property('body')
|
.to.eventually.property('body')
|
||||||
.property('md5')
|
.property('md5')
|
||||||
|
@ -13,7 +13,7 @@ export interface IFormField {
|
|||||||
|
|
||||||
const appendFormField = async (formDataArg: plugins.formData, formDataField: IFormField) => {
|
const appendFormField = async (formDataArg: plugins.formData, formDataField: IFormField) => {
|
||||||
if (formDataField.type === 'filePath') {
|
if (formDataField.type === 'filePath') {
|
||||||
let fileData = plugins.fs.readFileSync(plugins.path.join(process.cwd(), formDataField.payload));
|
const fileData = plugins.fs.readFileSync(plugins.path.join(process.cwd(), formDataField.payload));
|
||||||
formDataArg.append('file', fileData, {
|
formDataArg.append('file', fileData, {
|
||||||
filename: 'upload.pdf',
|
filename: 'upload.pdf',
|
||||||
contentType: 'application/pdf'
|
contentType: 'application/pdf'
|
||||||
@ -30,14 +30,13 @@ export const postFormData = async (
|
|||||||
for (const formField of payloadArg) {
|
for (const formField of payloadArg) {
|
||||||
await appendFormField(form, formField);
|
await appendFormField(form, formField);
|
||||||
}
|
}
|
||||||
const requestOptions = Object.assign({}, optionsArg, {
|
const requestOptions = {...optionsArg,
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
...optionsArg.headers,
|
...optionsArg.headers,
|
||||||
...form.getHeaders()
|
...form.getHeaders()
|
||||||
},
|
},
|
||||||
requestBody: form
|
requestBody: form};
|
||||||
});
|
|
||||||
|
|
||||||
// lets fire the actual request for sending the formdata
|
// lets fire the actual request for sending the formdata
|
||||||
const response = await request(urlArg, requestOptions);
|
const response = await request(urlArg, requestOptions);
|
||||||
|
@ -8,3 +8,10 @@ import * as url from 'url';
|
|||||||
import * as smartpromise from '@pushrocks/smartpromise';
|
import * as smartpromise from '@pushrocks/smartpromise';
|
||||||
|
|
||||||
export { formData, http, https, fs, path, url, smartpromise };
|
export { formData, http, https, fs, path, url, smartpromise };
|
||||||
|
|
||||||
|
// third party scope
|
||||||
|
import * as agentkeepalive from 'agentkeepalive';
|
||||||
|
|
||||||
|
export {
|
||||||
|
agentkeepalive
|
||||||
|
};
|
||||||
|
@ -57,10 +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.http.Agent({
|
const httpAgent = new plugins.agentkeepalive.default();
|
||||||
keepAlive: true,
|
|
||||||
keepAliveMsecs: 600000
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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
|
||||||
@ -74,10 +71,7 @@ const httpAgentKeepAliveFalse = new plugins.http.Agent({
|
|||||||
/**
|
/**
|
||||||
* a custom https agent to make sure we can set custom keepAlive options for speedy subsequent calls
|
* a custom https agent to make sure we can set custom keepAlive options for speedy subsequent calls
|
||||||
*/
|
*/
|
||||||
const httpsAgent = new plugins.https.Agent({
|
const httpsAgent = new plugins.agentkeepalive.HttpsAgent();
|
||||||
keepAlive: true,
|
|
||||||
keepAliveMsecs: 600000
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* a custom https agent to make sure we can set custom keepAlive options for speedy subsequent calls
|
* a custom https agent to make sure we can set custom keepAlive options for speedy subsequent calls
|
||||||
@ -91,7 +85,8 @@ const httpsAgentKeepAliveFalse = new plugins.https.Agent({
|
|||||||
export let request = async (
|
export let request = async (
|
||||||
domainArg: string,
|
domainArg: string,
|
||||||
optionsArg: interfaces.ISmartRequestOptions = {},
|
optionsArg: interfaces.ISmartRequestOptions = {},
|
||||||
streamArg: boolean = false
|
responseStreamArg: boolean = false,
|
||||||
|
requestDataFunc: (req: plugins.http.ClientRequest) => void = null
|
||||||
): Promise<IExtendedIncomingMessage> => {
|
): Promise<IExtendedIncomingMessage> => {
|
||||||
const done = plugins.smartpromise.defer<any>();
|
const done = plugins.smartpromise.defer<any>();
|
||||||
|
|
||||||
@ -144,7 +139,7 @@ export let request = async (
|
|||||||
|
|
||||||
// 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 (streamArg) {
|
if (responseStreamArg) {
|
||||||
done.resolve(response);
|
done.resolve(response);
|
||||||
} else {
|
} else {
|
||||||
const builtResponse = await buildUtf8Response(response, optionsArg.autoJsonParse);
|
const builtResponse = await buildUtf8Response(response, optionsArg.autoJsonParse);
|
||||||
@ -165,6 +160,8 @@ export let request = async (
|
|||||||
requestToFire.write(optionsArg.requestBody);
|
requestToFire.write(optionsArg.requestBody);
|
||||||
requestToFire.end();
|
requestToFire.end();
|
||||||
}
|
}
|
||||||
|
} else if (requestDataFunc) {
|
||||||
|
requestDataFunc(requestToFire);
|
||||||
} else {
|
} else {
|
||||||
requestToFire.end();
|
requestToFire.end();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user