This commit is contained in:
Ferdi Koomen 2022-01-24 18:28:59 +01:00
parent 506d4d5c25
commit 173a3fba4c
3 changed files with 70 additions and 49 deletions

View File

@ -2,7 +2,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
if (options.formData) {
const formData = new FormData();
const append = (key: string, value: any) => {
const process = (key: string, value: any) => {
if (isString(value) || isBlob(value)) {
formData.append(key, value);
} else {
@ -14,9 +14,9 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
.filter(([_, value]) => isDefined(value))
.forEach(([key, value]) => {
if (Array.isArray(value)) {
value.forEach(v => append(key, v));
value.forEach(v => process(key, v));
} else {
append(key, value);
process(key, value);
}
});

View File

@ -1,22 +1,29 @@
function getQueryString(params: Record<string, any>): string {
const qs: string[] = [];
const searchParams = new URLSearchParams();
const append = (key: string, value: any) => {
qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
const process = (key: string, value: any) => {
if (isDefined(value)) {
if (Array.isArray(value)) {
value.forEach(v => {
process(key, v);
});
} else if (typeof value === 'object') {
Object.entries(value).forEach(([k, v]) => {
process(`${key}[${k}]`, v);
});
} else {
searchParams.append(key, value);
}
}
};
Object.entries(params)
.filter(([_, value]) => isDefined(value))
.forEach(([key, value]) => {
if (Array.isArray(value)) {
value.forEach(v => append(key, v));
} else {
append(key, value);
}
});
Object.entries(params).forEach(([key, value]) => {
process(key, value);
});
if (qs.length > 0) {
return `?${qs.join('&')}`;
const query = searchParams.toString();
if (query.length) {
return `?${query}`;
}
return '';

View File

@ -270,24 +270,31 @@ function base64(str: string): string {
}
function getQueryString(params: Record<string, any>): string {
const qs: string[] = [];
const searchParams = new URLSearchParams();
const append = (key: string, value: any) => {
qs.push(\`\${encodeURIComponent(key)}=\${encodeURIComponent(String(value))}\`);
const process = (key:string, value: any) => {
if (isDefined(value)) {
if (Array.isArray(value)) {
value.forEach(v => {
process(key, v);
});
} else if (typeof value === 'object') {
Object.entries(value).forEach(([k, v]) => {
process(\`\${key}[\${k}]\`, v);
});
} else {
searchParams.append(key, value);
}
}
};
Object.entries(params)
.filter(([_, value]) => isDefined(value))
.forEach(([key, value]) => {
if (Array.isArray(value)) {
value.forEach(v => append(key, v));
} else {
append(key, value);
}
});
Object.entries(params).forEach(([key, value]) => {
process(key, value);
});
if (qs.length > 0) {
return \`?\${qs.join('&')}\`;
const query = searchParams.toString();
if (query.length) {
return \`?\${query}\`;
}
return '';
@ -307,7 +314,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
if (options.formData) {
const formData = new FormData();
const append = (key: string, value: any) => {
const process = (key: string, value: any) => {
if (isString(value) || isBlob(value)) {
formData.append(key, value);
} else {
@ -321,7 +328,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
if (Array.isArray(value)) {
value.forEach(v => append(key, v));
} else {
append(key, value);
process(key, value);
}
});
@ -3112,24 +3119,31 @@ function base64(str: string): string {
}
function getQueryString(params: Record<string, any>): string {
const qs: string[] = [];
const searchParams = new URLSearchParams();
const append = (key: string, value: any) => {
qs.push(\`\${encodeURIComponent(key)}=\${encodeURIComponent(String(value))}\`);
const process = (key:string, value: any) => {
if (isDefined(value)) {
if (Array.isArray(value)) {
value.forEach(v => {
process(key, v);
});
} else if (typeof value === 'object') {
Object.entries(value).forEach(([k, v]) => {
process(\`\${key}[\${k}]\`, v);
});
} else {
searchParams.append(key, value);
}
}
};
Object.entries(params)
.filter(([_, value]) => isDefined(value))
.forEach(([key, value]) => {
if (Array.isArray(value)) {
value.forEach(v => append(key, v));
} else {
append(key, value);
}
});
Object.entries(params).forEach(([key, value]) => {
process(key, value);
});
if (qs.length > 0) {
return \`?\${qs.join('&')}\`;
const query = searchParams.toString();
if (query.length) {
return \`?\${query}\`;
}
return '';
@ -3149,7 +3163,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
if (options.formData) {
const formData = new FormData();
const append = (key: string, value: any) => {
const process = (key: string, value: any) => {
if (isString(value) || isBlob(value)) {
formData.append(key, value);
} else {
@ -3163,7 +3177,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
if (Array.isArray(value)) {
value.forEach(v => append(key, v));
} else {
append(key, value);
process(key, value);
}
});