Allow FormData as body argument

This commit is contained in:
Sjoerd Mulder 2021-12-21 14:24:00 +01:00
parent 1508588e6f
commit 9680e9c744
10 changed files with 26 additions and 10 deletions

View File

@ -33,7 +33,7 @@ async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
headers.append('Content-Type', options.body.type || 'application/octet-stream');
} else if (isString(options.body)) {
headers.append('Content-Type', 'text/plain');
} else {
} else if (!isFormData(options.body)) {
headers.append('Content-Type', 'application/json');
}
}

View File

@ -2,7 +2,7 @@ function getRequestBody(options: ApiRequestOptions): BodyInit | undefined {
if (options.body) {
if (options.mediaType?.includes('/json')) {
return JSON.stringify(options.body)
} else if (isString(options.body) || isBlob(options.body)) {
} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {
return options.body;
} else {
return JSON.stringify(options.body);

View File

@ -19,6 +19,9 @@ import { OpenAPI } from './OpenAPI';
{{>functions/isBlob}}
{{>functions/isFormData}}
{{>functions/base64}}

View File

@ -0,0 +1,3 @@
function isFormData(value: any): value is FormData {
return value instanceof FormData;
}

View File

@ -33,7 +33,7 @@ async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
headers.append('Content-Type', 'application/octet-stream');
} else if (isString(options.body)) {
headers.append('Content-Type', 'text/plain');
} else {
} else if (!isFormData(options.body)) {
headers.append('Content-Type', 'application/json');
}
}

View File

@ -2,7 +2,7 @@ function getRequestBody(options: ApiRequestOptions): BodyInit | undefined {
if (options.body) {
if (options.mediaType?.includes('/json')) {
return JSON.stringify(options.body)
} else if (isString(options.body) || isBlob(options.body)) {
} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {
return options.body as any;
} else {
return JSON.stringify(options.body);

View File

@ -33,7 +33,7 @@ async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
headers.append('Content-Type', options.body.type || 'application/octet-stream');
} else if (isString(options.body)) {
headers.append('Content-Type', 'text/plain');
} else {
} else if (!isFormData(options.body)) {
headers.append('Content-Type', 'application/json');
}
}

View File

@ -2,7 +2,7 @@ function getRequestBody(options: ApiRequestOptions): any {
if (options.body) {
if (options.mediaType?.includes('/json')) {
return JSON.stringify(options.body)
} else if (isString(options.body) || isBlob(options.body)) {
} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {
return options.body;
} else {
return JSON.stringify(options.body);

View File

@ -24,6 +24,7 @@ import functionGetQueryString from '../templates/core/functions/getQueryString.h
import functionGetUrl from '../templates/core/functions/getUrl.hbs';
import functionIsBlob from '../templates/core/functions/isBlob.hbs';
import functionIsDefined from '../templates/core/functions/isDefined.hbs';
import functionIsFormData from '../templates/core/functions/isFormData.hbs';
import functionIsString from '../templates/core/functions/isString.hbs';
import functionIsStringWithValue from '../templates/core/functions/isStringWithValue.hbs';
import functionIsSuccess from '../templates/core/functions/isSuccess.hbs';
@ -157,6 +158,7 @@ export function registerHandlebarTemplates(root: {
Handlebars.registerPartial('functions/getUrl', Handlebars.template(functionGetUrl));
Handlebars.registerPartial('functions/isBlob', Handlebars.template(functionIsBlob));
Handlebars.registerPartial('functions/isDefined', Handlebars.template(functionIsDefined));
Handlebars.registerPartial('functions/isFormData', Handlebars.template(functionIsFormData));
Handlebars.registerPartial('functions/isString', Handlebars.template(functionIsString));
Handlebars.registerPartial('functions/isStringWithValue', Handlebars.template(functionIsStringWithValue));
Handlebars.registerPartial('functions/isSuccess', Handlebars.template(functionIsSuccess));

View File

@ -233,6 +233,10 @@ function isBlob(value: any): value is Blob {
return value instanceof Blob;
}
function isFormData(value: any): value is FormData {
return value instanceof FormData;
}
function base64(str: string): string {
try {
return btoa(str);
@ -347,7 +351,7 @@ async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
headers.append('Content-Type', options.body.type || 'application/octet-stream');
} else if (isString(options.body)) {
headers.append('Content-Type', 'text/plain');
} else {
} else if (!isFormData(options.body)) {
headers.append('Content-Type', 'application/json');
}
}
@ -359,7 +363,7 @@ function getRequestBody(options: ApiRequestOptions): BodyInit | undefined {
if (options.body) {
if (options.mediaType?.includes('/json')) {
return JSON.stringify(options.body)
} else if (isString(options.body) || isBlob(options.body)) {
} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {
return options.body;
} else {
return JSON.stringify(options.body);
@ -2896,6 +2900,10 @@ function isBlob(value: any): value is Blob {
return value instanceof Blob;
}
function isFormData(value: any): value is FormData {
return value instanceof FormData;
}
function base64(str: string): string {
try {
return btoa(str);
@ -3010,7 +3018,7 @@ async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
headers.append('Content-Type', options.body.type || 'application/octet-stream');
} else if (isString(options.body)) {
headers.append('Content-Type', 'text/plain');
} else {
} else if (!isFormData(options.body)) {
headers.append('Content-Type', 'application/json');
}
}
@ -3022,7 +3030,7 @@ function getRequestBody(options: ApiRequestOptions): BodyInit | undefined {
if (options.body) {
if (options.mediaType?.includes('/json')) {
return JSON.stringify(options.body)
} else if (isString(options.body) || isBlob(options.body)) {
} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {
return options.body;
} else {
return JSON.stringify(options.body);