typescript-fetch: Add application/x-www-form-urlencoded content support (#3934)

* typescript-fetch: to be able to handle application/x-www-form-urlencoded content

* typescript-fetch: run typescript-fetch-petstore-all.sh

* typescript-fetch: add test's dist dir

* typescript-fetch: delete Specified Content-Type header
This commit is contained in:
tkrtmy 2019-09-23 19:17:04 +09:00 committed by Esteban Gehring
parent ee2e4395a9
commit 1a55020194
17 changed files with 392 additions and 70 deletions

1
.gitignore vendored
View File

@ -174,6 +174,7 @@ samples/client/petstore/python-tornado/.venv/
samples/client/petstore/typescript-angular2/npm/npm-debug.log samples/client/petstore/typescript-angular2/npm/npm-debug.log
samples/client/petstore/typescript-node/npm/npm-debug.log samples/client/petstore/typescript-node/npm/npm-debug.log
samples/client/petstore/typescript-angular/tsd-debug.log samples/client/petstore/typescript-angular/tsd-debug.log
samples/client/petstore/typescript-fetch/tests/**/dist/
# aspnetcore # aspnetcore
samples/server/petstore/aspnetcore/.vs/ samples/server/petstore/aspnetcore/.vs/

View File

@ -150,29 +150,50 @@ export class {{classname}} extends runtime.BaseAPI {
{{/isOAuth}} {{/isOAuth}}
{{/authMethods}} {{/authMethods}}
{{#hasFormParams}} {{#hasFormParams}}
const formData = new FormData(); const consumes: runtime.Consume[] = [
{{/hasFormParams}} {{#consumes}}
{ contentType: '{{{mediaType}}}' },
{{/consumes}}
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
{{#formParams}}
{{#isFile}}
// use FormData to transmit files using content-type "multipart/form-data"
useForm = canConsumeForm;
{{/isFile}}
{{/formParams}}
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
{{#formParams}} {{#formParams}}
{{#isListContainer}} {{#isListContainer}}
if (requestParameters.{{paramName}}) { if (requestParameters.{{paramName}}) {
{{#isCollectionFormatMulti}} {{#isCollectionFormatMulti}}
requestParameters.{{paramName}}.forEach((element) => { requestParameters.{{paramName}}.forEach((element) => {
formData.append('{{baseName}}', element as any); formParams.append('{{baseName}}', element as any);
}) })
{{/isCollectionFormatMulti}} {{/isCollectionFormatMulti}}
{{^isCollectionFormatMulti}} {{^isCollectionFormatMulti}}
formData.append('{{baseName}}', requestParameters.{{paramName}}.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"])); formParams.append('{{baseName}}', requestParameters.{{paramName}}.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"]));
{{/isCollectionFormatMulti}} {{/isCollectionFormatMulti}}
} }
{{/isListContainer}} {{/isListContainer}}
{{^isListContainer}} {{^isListContainer}}
if (requestParameters.{{paramName}} !== undefined) { if (requestParameters.{{paramName}} !== undefined) {
formData.append('{{baseName}}', requestParameters.{{paramName}} as any); formParams.append('{{baseName}}', requestParameters.{{paramName}} as any);
} }
{{/isListContainer}} {{/isListContainer}}
{{/formParams}} {{/formParams}}
{{/hasFormParams}}
const response = await this.request({ const response = await this.request({
path: `{{{path}}}`{{#pathParams}}.replace(`{${"{{baseName}}"}}`, encodeURIComponent(String(requestParameters.{{paramName}}))){{/pathParams}}, path: `{{{path}}}`{{#pathParams}}.replace(`{${"{{baseName}}"}}`, encodeURIComponent(String(requestParameters.{{paramName}}))){{/pathParams}},
method: '{{httpMethod}}', method: '{{httpMethod}}',
@ -194,7 +215,7 @@ export class {{classname}} extends runtime.BaseAPI {
{{/bodyParam}} {{/bodyParam}}
{{/hasBodyParam}} {{/hasBodyParam}}
{{#hasFormParams}} {{#hasFormParams}}
body: formData, body: formParams,
{{/hasFormParams}} {{/hasFormParams}}
}); });

View File

@ -184,7 +184,7 @@ export type Json = any;
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'; export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HTTPHeaders = { [key: string]: string }; export type HTTPHeaders = { [key: string]: string };
export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery }; export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery };
export type HTTPBody = Json | FormData; export type HTTPBody = Json | FormData | URLSearchParams;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface FetchParams { export interface FetchParams {
@ -231,6 +231,19 @@ export function mapValues(data: any, fn: (item: any) => any) {
); );
} }
export function canConsumeForm(consumes: Consume[]): boolean {
for (const consume of consumes) {
if ('multipart/form-data' === consume.contentType) {
return true;
}
}
return false;
}
export interface Consume {
contentType: string
}
export interface RequestContext { export interface RequestContext {
fetch: FetchAPI; fetch: FetchAPI;
url: string; url: string;

View File

@ -335,13 +335,26 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'application/x-www-form-urlencoded' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.name !== undefined) { if (requestParameters.name !== undefined) {
formData.append('name', requestParameters.name as any); formParams.append('name', requestParameters.name as any);
} }
if (requestParameters.status !== undefined) { if (requestParameters.status !== undefined) {
formData.append('status', requestParameters.status as any); formParams.append('status', requestParameters.status as any);
} }
const response = await this.request({ const response = await this.request({
@ -349,7 +362,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.VoidApiResponse(response); return new runtime.VoidApiResponse(response);
@ -383,13 +396,28 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'multipart/form-data' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
// use FormData to transmit files using content-type "multipart/form-data"
useForm = canConsumeForm;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.additionalMetadata !== undefined) { if (requestParameters.additionalMetadata !== undefined) {
formData.append('additionalMetadata', requestParameters.additionalMetadata as any); formParams.append('additionalMetadata', requestParameters.additionalMetadata as any);
} }
if (requestParameters.file !== undefined) { if (requestParameters.file !== undefined) {
formData.append('file', requestParameters.file as any); formParams.append('file', requestParameters.file as any);
} }
const response = await this.request({ const response = await this.request({
@ -397,7 +425,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue)); return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue));

View File

@ -195,7 +195,7 @@ export type Json = any;
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'; export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HTTPHeaders = { [key: string]: string }; export type HTTPHeaders = { [key: string]: string };
export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery }; export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery };
export type HTTPBody = Json | FormData; export type HTTPBody = Json | FormData | URLSearchParams;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface FetchParams { export interface FetchParams {
@ -242,6 +242,19 @@ export function mapValues(data: any, fn: (item: any) => any) {
); );
} }
export function canConsumeForm(consumes: Consume[]): boolean {
for (const consume of consumes) {
if ('multipart/form-data' === consume.contentType) {
return true;
}
}
return false;
}
export interface Consume {
contentType: string
}
export interface RequestContext { export interface RequestContext {
fetch: FetchAPI; fetch: FetchAPI;
url: string; url: string;

View File

@ -335,13 +335,26 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'application/x-www-form-urlencoded' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.name !== undefined) { if (requestParameters.name !== undefined) {
formData.append('name', requestParameters.name as any); formParams.append('name', requestParameters.name as any);
} }
if (requestParameters.status !== undefined) { if (requestParameters.status !== undefined) {
formData.append('status', requestParameters.status as any); formParams.append('status', requestParameters.status as any);
} }
const response = await this.request({ const response = await this.request({
@ -349,7 +362,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.VoidApiResponse(response); return new runtime.VoidApiResponse(response);
@ -383,13 +396,28 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'multipart/form-data' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
// use FormData to transmit files using content-type "multipart/form-data"
useForm = canConsumeForm;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.additionalMetadata !== undefined) { if (requestParameters.additionalMetadata !== undefined) {
formData.append('additionalMetadata', requestParameters.additionalMetadata as any); formParams.append('additionalMetadata', requestParameters.additionalMetadata as any);
} }
if (requestParameters.file !== undefined) { if (requestParameters.file !== undefined) {
formData.append('file', requestParameters.file as any); formParams.append('file', requestParameters.file as any);
} }
const response = await this.request({ const response = await this.request({
@ -397,7 +425,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue)); return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue));

View File

@ -195,7 +195,7 @@ export type Json = any;
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'; export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HTTPHeaders = { [key: string]: string }; export type HTTPHeaders = { [key: string]: string };
export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery }; export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery };
export type HTTPBody = Json | FormData; export type HTTPBody = Json | FormData | URLSearchParams;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface FetchParams { export interface FetchParams {
@ -242,6 +242,19 @@ export function mapValues(data: any, fn: (item: any) => any) {
); );
} }
export function canConsumeForm(consumes: Consume[]): boolean {
for (const consume of consumes) {
if ('multipart/form-data' === consume.contentType) {
return true;
}
}
return false;
}
export interface Consume {
contentType: string
}
export interface RequestContext { export interface RequestContext {
fetch: FetchAPI; fetch: FetchAPI;
url: string; url: string;

View File

@ -335,13 +335,26 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'application/x-www-form-urlencoded' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.name !== undefined) { if (requestParameters.name !== undefined) {
formData.append('name', requestParameters.name as any); formParams.append('name', requestParameters.name as any);
} }
if (requestParameters.status !== undefined) { if (requestParameters.status !== undefined) {
formData.append('status', requestParameters.status as any); formParams.append('status', requestParameters.status as any);
} }
const response = await this.request({ const response = await this.request({
@ -349,7 +362,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.VoidApiResponse(response); return new runtime.VoidApiResponse(response);
@ -383,13 +396,28 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'multipart/form-data' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
// use FormData to transmit files using content-type "multipart/form-data"
useForm = canConsumeForm;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.additionalMetadata !== undefined) { if (requestParameters.additionalMetadata !== undefined) {
formData.append('additionalMetadata', requestParameters.additionalMetadata as any); formParams.append('additionalMetadata', requestParameters.additionalMetadata as any);
} }
if (requestParameters.file !== undefined) { if (requestParameters.file !== undefined) {
formData.append('file', requestParameters.file as any); formParams.append('file', requestParameters.file as any);
} }
const response = await this.request({ const response = await this.request({
@ -397,7 +425,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue)); return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue));

View File

@ -195,7 +195,7 @@ export type Json = any;
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'; export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HTTPHeaders = { [key: string]: string }; export type HTTPHeaders = { [key: string]: string };
export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery }; export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery };
export type HTTPBody = Json | FormData; export type HTTPBody = Json | FormData | URLSearchParams;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface FetchParams { export interface FetchParams {
@ -242,6 +242,19 @@ export function mapValues(data: any, fn: (item: any) => any) {
); );
} }
export function canConsumeForm(consumes: Consume[]): boolean {
for (const consume of consumes) {
if ('multipart/form-data' === consume.contentType) {
return true;
}
}
return false;
}
export interface Consume {
contentType: string
}
export interface RequestContext { export interface RequestContext {
fetch: FetchAPI; fetch: FetchAPI;
url: string; url: string;

View File

@ -335,13 +335,26 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'application/x-www-form-urlencoded' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.name !== undefined) { if (requestParameters.name !== undefined) {
formData.append('name', requestParameters.name as any); formParams.append('name', requestParameters.name as any);
} }
if (requestParameters.status !== undefined) { if (requestParameters.status !== undefined) {
formData.append('status', requestParameters.status as any); formParams.append('status', requestParameters.status as any);
} }
const response = await this.request({ const response = await this.request({
@ -349,7 +362,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.VoidApiResponse(response); return new runtime.VoidApiResponse(response);
@ -383,13 +396,28 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'multipart/form-data' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
// use FormData to transmit files using content-type "multipart/form-data"
useForm = canConsumeForm;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.additionalMetadata !== undefined) { if (requestParameters.additionalMetadata !== undefined) {
formData.append('additionalMetadata', requestParameters.additionalMetadata as any); formParams.append('additionalMetadata', requestParameters.additionalMetadata as any);
} }
if (requestParameters.file !== undefined) { if (requestParameters.file !== undefined) {
formData.append('file', requestParameters.file as any); formParams.append('file', requestParameters.file as any);
} }
const response = await this.request({ const response = await this.request({
@ -397,7 +425,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue)); return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue));

View File

@ -195,7 +195,7 @@ export type Json = any;
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'; export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HTTPHeaders = { [key: string]: string }; export type HTTPHeaders = { [key: string]: string };
export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery }; export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery };
export type HTTPBody = Json | FormData; export type HTTPBody = Json | FormData | URLSearchParams;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface FetchParams { export interface FetchParams {
@ -242,6 +242,19 @@ export function mapValues(data: any, fn: (item: any) => any) {
); );
} }
export function canConsumeForm(consumes: Consume[]): boolean {
for (const consume of consumes) {
if ('multipart/form-data' === consume.contentType) {
return true;
}
}
return false;
}
export interface Consume {
contentType: string
}
export interface RequestContext { export interface RequestContext {
fetch: FetchAPI; fetch: FetchAPI;
url: string; url: string;

View File

@ -335,13 +335,26 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'application/x-www-form-urlencoded' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.name !== undefined) { if (requestParameters.name !== undefined) {
formData.append('name', requestParameters.name as any); formParams.append('name', requestParameters.name as any);
} }
if (requestParameters.status !== undefined) { if (requestParameters.status !== undefined) {
formData.append('status', requestParameters.status as any); formParams.append('status', requestParameters.status as any);
} }
const response = await this.request({ const response = await this.request({
@ -349,7 +362,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.VoidApiResponse(response); return new runtime.VoidApiResponse(response);
@ -383,13 +396,28 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'multipart/form-data' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
// use FormData to transmit files using content-type "multipart/form-data"
useForm = canConsumeForm;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.additionalMetadata !== undefined) { if (requestParameters.additionalMetadata !== undefined) {
formData.append('additionalMetadata', requestParameters.additionalMetadata as any); formParams.append('additionalMetadata', requestParameters.additionalMetadata as any);
} }
if (requestParameters.file !== undefined) { if (requestParameters.file !== undefined) {
formData.append('file', requestParameters.file as any); formParams.append('file', requestParameters.file as any);
} }
const response = await this.request({ const response = await this.request({
@ -397,7 +425,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue)); return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue));

View File

@ -195,7 +195,7 @@ export type Json = any;
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'; export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HTTPHeaders = { [key: string]: string }; export type HTTPHeaders = { [key: string]: string };
export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery }; export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery };
export type HTTPBody = Json | FormData; export type HTTPBody = Json | FormData | URLSearchParams;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface FetchParams { export interface FetchParams {
@ -242,6 +242,19 @@ export function mapValues(data: any, fn: (item: any) => any) {
); );
} }
export function canConsumeForm(consumes: Consume[]): boolean {
for (const consume of consumes) {
if ('multipart/form-data' === consume.contentType) {
return true;
}
}
return false;
}
export interface Consume {
contentType: string
}
export interface RequestContext { export interface RequestContext {
fetch: FetchAPI; fetch: FetchAPI;
url: string; url: string;

View File

@ -335,13 +335,26 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'application/x-www-form-urlencoded' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.name !== undefined) { if (requestParameters.name !== undefined) {
formData.append('name', requestParameters.name as any); formParams.append('name', requestParameters.name as any);
} }
if (requestParameters.status !== undefined) { if (requestParameters.status !== undefined) {
formData.append('status', requestParameters.status as any); formParams.append('status', requestParameters.status as any);
} }
const response = await this.request({ const response = await this.request({
@ -349,7 +362,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.VoidApiResponse(response); return new runtime.VoidApiResponse(response);
@ -383,13 +396,28 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'multipart/form-data' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
// use FormData to transmit files using content-type "multipart/form-data"
useForm = canConsumeForm;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.additionalMetadata !== undefined) { if (requestParameters.additionalMetadata !== undefined) {
formData.append('additionalMetadata', requestParameters.additionalMetadata as any); formParams.append('additionalMetadata', requestParameters.additionalMetadata as any);
} }
if (requestParameters.file !== undefined) { if (requestParameters.file !== undefined) {
formData.append('file', requestParameters.file as any); formParams.append('file', requestParameters.file as any);
} }
const response = await this.request({ const response = await this.request({
@ -397,7 +425,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue)); return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue));

View File

@ -195,7 +195,7 @@ export type Json = any;
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'; export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HTTPHeaders = { [key: string]: string }; export type HTTPHeaders = { [key: string]: string };
export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery }; export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery };
export type HTTPBody = Json | FormData; export type HTTPBody = Json | FormData | URLSearchParams;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface FetchParams { export interface FetchParams {
@ -242,6 +242,19 @@ export function mapValues(data: any, fn: (item: any) => any) {
); );
} }
export function canConsumeForm(consumes: Consume[]): boolean {
for (const consume of consumes) {
if ('multipart/form-data' === consume.contentType) {
return true;
}
}
return false;
}
export interface Consume {
contentType: string
}
export interface RequestContext { export interface RequestContext {
fetch: FetchAPI; fetch: FetchAPI;
url: string; url: string;

View File

@ -335,13 +335,26 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'application/x-www-form-urlencoded' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.name !== undefined) { if (requestParameters.name !== undefined) {
formData.append('name', requestParameters.name as any); formParams.append('name', requestParameters.name as any);
} }
if (requestParameters.status !== undefined) { if (requestParameters.status !== undefined) {
formData.append('status', requestParameters.status as any); formParams.append('status', requestParameters.status as any);
} }
const response = await this.request({ const response = await this.request({
@ -349,7 +362,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.VoidApiResponse(response); return new runtime.VoidApiResponse(response);
@ -383,13 +396,28 @@ export class PetApi extends runtime.BaseAPI {
} }
} }
const formData = new FormData(); const consumes: runtime.Consume[] = [
{ contentType: 'multipart/form-data' },
];
// @ts-ignore: canConsumeForm may be unused
const canConsumeForm = runtime.canConsumeForm(consumes);
let formParams: { append(param: string, value: any): any };
let useForm = false;
// use FormData to transmit files using content-type "multipart/form-data"
useForm = canConsumeForm;
if (useForm) {
formParams = new FormData();
} else {
formParams = new URLSearchParams();
}
if (requestParameters.additionalMetadata !== undefined) { if (requestParameters.additionalMetadata !== undefined) {
formData.append('additionalMetadata', requestParameters.additionalMetadata as any); formParams.append('additionalMetadata', requestParameters.additionalMetadata as any);
} }
if (requestParameters.file !== undefined) { if (requestParameters.file !== undefined) {
formData.append('file', requestParameters.file as any); formParams.append('file', requestParameters.file as any);
} }
const response = await this.request({ const response = await this.request({
@ -397,7 +425,7 @@ export class PetApi extends runtime.BaseAPI {
method: 'POST', method: 'POST',
headers: headerParameters, headers: headerParameters,
query: queryParameters, query: queryParameters,
body: formData, body: formParams,
}); });
return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue)); return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue));

View File

@ -195,7 +195,7 @@ export type Json = any;
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'; export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HTTPHeaders = { [key: string]: string }; export type HTTPHeaders = { [key: string]: string };
export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery }; export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | HTTPQuery };
export type HTTPBody = Json | FormData; export type HTTPBody = Json | FormData | URLSearchParams;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface FetchParams { export interface FetchParams {
@ -242,6 +242,19 @@ export function mapValues(data: any, fn: (item: any) => any) {
); );
} }
export function canConsumeForm(consumes: Consume[]): boolean {
for (const consume of consumes) {
if ('multipart/form-data' === consume.contentType) {
return true;
}
}
return false;
}
export interface Consume {
contentType: string
}
export interface RequestContext { export interface RequestContext {
fetch: FetchAPI; fetch: FetchAPI;
url: string; url: string;