fix(core): update

This commit is contained in:
Philipp Kunz 2019-06-12 15:16:27 +02:00
parent fe693e6383
commit 74b6bf230f
2 changed files with 21 additions and 5 deletions

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);
}
});