fix(HTTP Request Node): avoid error when response doesn't include content-type (#4365)

* 🐛 Fix bug when response doesn't include content type

*  Improve autodetect response format

*  Make content-type match more specific

*  Improve list of content-types to download
This commit is contained in:
Ricardo Espinoza
2022-10-20 11:42:55 -04:00
committed by GitHub
parent 7fcd821cad
commit 61b9909ac3
2 changed files with 33 additions and 3 deletions

View File

@@ -12,7 +12,11 @@ import {
import { OptionsWithUri } from 'request-promise-native';
import { getOAuth2AdditionalParameters, replaceNullValues } from '../GenericFunctions';
import {
binaryContentTypes,
getOAuth2AdditionalParameters,
replaceNullValues,
} from '../GenericFunctions';
export class HttpRequestV3 implements INodeType {
description: INodeTypeDescription;
@@ -1204,11 +1208,11 @@ export class HttpRequestV3 implements INodeType {
) as boolean;
if (autoDetectResponseFormat) {
const responseContentType = response.headers['content-type'];
const responseContentType = response.headers['content-type'] ?? '';
if (responseContentType.includes('application/json')) {
responseFormat = 'json';
response.body = JSON.parse(Buffer.from(response.body).toString());
} else if (['image', 'audio', 'video'].some((e) => responseContentType.includes(e))) {
} else if (binaryContentTypes.some((e) => responseContentType.includes(e))) {
responseFormat = 'file';
} else {
responseFormat = 'text';