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", "name": "@pushrocks/smartrequest",
"version": "1.1.15", "version": "1.1.16",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

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

View File

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

View File

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