Compare commits

...

2 Commits

Author SHA1 Message Date
ef25315d59 1.1.16 2019-06-12 15:16:28 +02:00
74b6bf230f fix(core): update 2019-06-12 15:16:27 +02:00
4 changed files with 23 additions and 7 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartrequest",
"version": "1.1.15",
"version": "1.1.16",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartrequest",
"version": "1.1.15",
"version": "1.1.16",
"private": false,
"description": "dropin replacement for request",
"main": "dist/index.js",

View File

@ -3,4 +3,5 @@ import * as https from 'https';
export interface ISmartRequestOptions extends https.RequestOptions {
requestBody?: any;
autoJsonParse?: boolean;
}

View File

@ -9,7 +9,8 @@ export interface IExtendedIncomingMessage extends IncomingMessage {
}
const buildUtf8Response = (
incomingMessageArg: IncomingMessage
incomingMessageArg: IncomingMessage,
autoJsonParse = true
): Promise<IExtendedIncomingMessage> => {
let done = plugins.smartpromise.defer<IExtendedIncomingMessage>();
// Continuously update stream with data
@ -19,9 +20,13 @@ const buildUtf8Response = (
});
incomingMessageArg.on('end', function() {
try {
(incomingMessageArg as IExtendedIncomingMessage).body = JSON.parse(body);
} catch (err) {
if (autoJsonParse) {
try {
(incomingMessageArg as IExtendedIncomingMessage).body = JSON.parse(body);
} catch (err) {
(incomingMessageArg as IExtendedIncomingMessage).body = body;
}
} else {
(incomingMessageArg as IExtendedIncomingMessage).body = body;
}
done.resolve(incomingMessageArg as IExtendedIncomingMessage);
@ -57,6 +62,16 @@ export let request = async (
): Promise<IExtendedIncomingMessage> => {
let done = plugins.smartpromise.defer<any>();
// merge options
const defaultOptions: interfaces.ISmartRequestOptions = {
autoJsonParse: true
}
optionsArg = {
...defaultOptions,
...optionsArg
}
// parse url
let parsedUrl: plugins.url.Url;
parsedUrl = plugins.url.parse(domainArg);
@ -114,7 +129,7 @@ export let request = async (
if (streamArg) {
done.resolve(response);
} else {
const builtResponse = await buildUtf8Response(response);
const builtResponse = await buildUtf8Response(response, optionsArg.autoJsonParse);
done.resolve(builtResponse);
}
});