Skip to content

Commit 4b2ae51

Browse files
committed
fix pick format
allow for file array in form data requests
1 parent 5817a95 commit 4b2ae51

File tree

4 files changed

+70
-4
lines changed

4 files changed

+70
-4
lines changed

templates/base/http-clients/axios-http-client.eta

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,23 @@ export class HttpClient<SecurityDataType = unknown> {
6767
}
6868

6969
private createFormData(input: Record<string, unknown>): FormData {
70+
return Object.keys(input || {}).reduce((formData, key) => {
71+
let property = input[key];
72+
let propertyContent: Iterable<any> = (property instanceof Array) ? property : [property]
73+
74+
for (const formItem of propertyContent) {
75+
formData.append(
76+
key,
77+
formItem instanceof Blob || formItem instanceof File
78+
? formItem
79+
: typeof formItem === "object" && formItem !== null
80+
? JSON.stringify(formItem)
81+
: `${formItem}`,
82+
);
83+
}
84+
85+
return formData;
86+
}, new FormData());
7087
return Object.keys(input || {}).reduce((formData, key) => {
7188
const property = input[key];
7289
formData.append(
@@ -96,7 +113,7 @@ export class HttpClient<SecurityDataType = unknown> {
96113
<% } %>
97114
const secureParams = ((typeof secure === 'boolean' ? secure : this.secure) && this.securityWorker && (await this.securityWorker(this.securityData))) || {};
98115
const requestParams = this.mergeRequestParams(params, secureParams);
99-
const responseFormat = (format && this.format) || void 0;
116+
const responseFormat = (format || this.format) || void 0;
100117

101118
if (type === ContentType.FormData && body && body !== null && typeof body === "object") {
102119
requestParams.headers.common = { Accept: "*/*" };

tests/spec/axios/schema.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1511,6 +1511,23 @@ export class HttpClient<SecurityDataType = unknown> {
15111511
}
15121512

15131513
private createFormData(input: Record<string, unknown>): FormData {
1514+
return Object.keys(input || {}).reduce((formData, key) => {
1515+
let property = input[key];
1516+
let propertyContent: Iterable<any> = property instanceof Array ? property : [property];
1517+
1518+
for (const formItem of propertyContent) {
1519+
formData.append(
1520+
key,
1521+
formItem instanceof Blob || formItem instanceof File
1522+
? formItem
1523+
: typeof formItem === "object" && formItem !== null
1524+
? JSON.stringify(formItem)
1525+
: `${formItem}`,
1526+
);
1527+
}
1528+
1529+
return formData;
1530+
}, new FormData());
15141531
return Object.keys(input || {}).reduce((formData, key) => {
15151532
const property = input[key];
15161533
formData.append(
@@ -1540,7 +1557,7 @@ export class HttpClient<SecurityDataType = unknown> {
15401557
(await this.securityWorker(this.securityData))) ||
15411558
{};
15421559
const requestParams = this.mergeRequestParams(params, secureParams);
1543-
const responseFormat = (format && this.format) || void 0;
1560+
const responseFormat = format || this.format || void 0;
15441561

15451562
if (type === ContentType.FormData && body && body !== null && typeof body === "object") {
15461563
requestParams.headers.common = { Accept: "*/*" };

tests/spec/axiosSingleHttpClient/schema.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1511,6 +1511,23 @@ export class HttpClient<SecurityDataType = unknown> {
15111511
}
15121512

15131513
private createFormData(input: Record<string, unknown>): FormData {
1514+
return Object.keys(input || {}).reduce((formData, key) => {
1515+
let property = input[key];
1516+
let propertyContent: Iterable<any> = property instanceof Array ? property : [property];
1517+
1518+
for (const formItem of propertyContent) {
1519+
formData.append(
1520+
key,
1521+
formItem instanceof Blob || formItem instanceof File
1522+
? formItem
1523+
: typeof formItem === "object" && formItem !== null
1524+
? JSON.stringify(formItem)
1525+
: `${formItem}`,
1526+
);
1527+
}
1528+
1529+
return formData;
1530+
}, new FormData());
15141531
return Object.keys(input || {}).reduce((formData, key) => {
15151532
const property = input[key];
15161533
formData.append(
@@ -1540,7 +1557,7 @@ export class HttpClient<SecurityDataType = unknown> {
15401557
(await this.securityWorker(this.securityData))) ||
15411558
{};
15421559
const requestParams = this.mergeRequestParams(params, secureParams);
1543-
const responseFormat = (format && this.format) || void 0;
1560+
const responseFormat = format || this.format || void 0;
15441561

15451562
if (type === ContentType.FormData && body && body !== null && typeof body === "object") {
15461563
requestParams.headers.common = { Accept: "*/*" };

tests/spec/jsAxios/schema.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class HttpClient {
2929
(await this.securityWorker(this.securityData))) ||
3030
{};
3131
const requestParams = this.mergeRequestParams(params, secureParams);
32-
const responseFormat = (format && this.format) || void 0;
32+
const responseFormat = format || this.format || void 0;
3333
if (type === ContentType.FormData && body && body !== null && typeof body === "object") {
3434
requestParams.headers.common = { Accept: "*/*" };
3535
requestParams.headers.post = {};
@@ -66,6 +66,21 @@ export class HttpClient {
6666
};
6767
}
6868
createFormData(input) {
69+
return Object.keys(input || {}).reduce((formData, key) => {
70+
let property = input[key];
71+
let propertyContent = property instanceof Array ? property : [property];
72+
for (const formItem of propertyContent) {
73+
formData.append(
74+
key,
75+
formItem instanceof Blob || formItem instanceof File
76+
? formItem
77+
: typeof formItem === "object" && formItem !== null
78+
? JSON.stringify(formItem)
79+
: `${formItem}`,
80+
);
81+
}
82+
return formData;
83+
}, new FormData());
6984
return Object.keys(input || {}).reduce((formData, key) => {
7085
const property = input[key];
7186
formData.append(

0 commit comments

Comments
 (0)