Skip to content

Commit 9c61e6b

Browse files
committed
🐛 Fix choosing response data type
1 parent 5763e61 commit 9c61e6b

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

packages/@ackee/antonio-core/src/modules/request/mimeTypes/index.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ const defaultRequestMimeTypes = {
99
DataView: 'application/octet-stream',
1010
ReadableStream: 'application/octet-stream',
1111
URLSearchParams: 'application/x-www-form-urlencoded',
12-
FormData: 'multipart/form-data',
13-
any: '*/*',
1412
} as const;
1513

1614
type RequestBodyType = keyof typeof defaultRequestMimeTypes;
@@ -20,7 +18,7 @@ function getBodyType(body: RequestBody): RequestBodyType {
2018
return typeof body === 'string' ? 'string' : body[Symbol.toStringTag];
2119
}
2220

23-
export function getDefaultRequestMimeType(body: RequestBody): RequestMimeType {
21+
export function getDefaultRequestMimeType(body: RequestBody): RequestMimeType | undefined {
2422
const bodyType = getBodyType(body);
25-
return defaultRequestMimeTypes[bodyType] || defaultRequestMimeTypes.any;
23+
return defaultRequestMimeTypes[bodyType];
2624
}

packages/@ackee/antonio-core/src/modules/request/utils/request.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ function setContentTypeHeader(method: RequestMethod, config: DefaultRequestConfi
1414

1515
if (!headers.has(Header.CONTENT_TYPE) && method !== 'HEAD' && body) {
1616
const defaultMimeType = getDefaultRequestMimeType(body);
17-
headers.set(Header.CONTENT_TYPE, defaultMimeType);
17+
if (defaultMimeType) {
18+
headers.set(Header.CONTENT_TYPE, defaultMimeType);
19+
}
1820
}
1921

2022
return headers;

packages/@ackee/antonio-core/src/modules/response/response.ts

+13-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,18 @@ import { getResponseDataType } from './responseDataTypes';
1010
import { AntonioError } from './errors';
1111
import { parseResponse, hasEmptyContentLength } from './utils';
1212

13+
function chooseResponseDataType(config: DefaultRequestConfig, headers: Headers) {
14+
if (hasEmptyContentLength(headers)) {
15+
return null;
16+
}
17+
18+
if (config.responseDataType !== undefined) {
19+
return config.responseDataType;
20+
}
21+
22+
return getResponseDataType(headers.get(Header.CONTENT_TYPE));
23+
}
24+
1325
async function* applyResponseInterceptors(
1426
responseInterceptors: ResponseInterceptorsEntries,
1527
request: Request,
@@ -33,9 +45,7 @@ async function* applyResponseInterceptors(
3345
}
3446
}
3547

36-
const responseDataType = hasEmptyContentLength(response.headers)
37-
? null
38-
: config.responseDataType || getResponseDataType(response.headers.get(Header.CONTENT_TYPE));
48+
const responseDataType = chooseResponseDataType(config, response.headers);
3949
const data = await parseResponse(responseDataType, response);
4050

4151
if (!response.ok) {

0 commit comments

Comments
 (0)