mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-10-28 03:28:35 +08:00
fix(core): buffer responseType (#15083)
This commit is contained in:
@@ -48,4 +48,12 @@ describe('got', () => {
|
||||
expect(response.body).toBe('{"test":"rsshub"}');
|
||||
expect(response.data.test).toBe('rsshub');
|
||||
});
|
||||
|
||||
it('buffer-get', async () => {
|
||||
const response = await got.get('http://example.com', {
|
||||
responseType: 'buffer',
|
||||
});
|
||||
expect(response.body instanceof Buffer).toBe(true);
|
||||
expect(response.data instanceof Buffer).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
+20
-8
@@ -1,13 +1,6 @@
|
||||
import { destr } from 'destr';
|
||||
import ofetch from '@/utils/ofetch';
|
||||
|
||||
const gotofetch = ofetch.create({
|
||||
parseResponse: (responseText) => ({
|
||||
data: destr(responseText),
|
||||
body: responseText,
|
||||
}),
|
||||
});
|
||||
|
||||
const getFakeGot = (defaultOptions?: any) => {
|
||||
const fakeGot = (request, options?: any) => {
|
||||
if (!(typeof request === 'string' || request instanceof Request) && request.url) {
|
||||
@@ -49,7 +42,26 @@ const getFakeGot = (defaultOptions?: any) => {
|
||||
delete options.searchParams;
|
||||
}
|
||||
|
||||
return gotofetch(request, options);
|
||||
// Add support for buffer responseType, to be compatible with got
|
||||
options.parseResponse = (responseText) => ({
|
||||
data: destr(responseText),
|
||||
body: responseText,
|
||||
});
|
||||
|
||||
if (options?.responseType === 'buffer' || options?.responseType === 'arrayBuffer') {
|
||||
options.responseType = 'arrayBuffer';
|
||||
delete options.parseResponse;
|
||||
}
|
||||
|
||||
const response = ofetch(request, options);
|
||||
|
||||
if (options?.responseType === 'arrayBuffer') {
|
||||
return response.then((responseData) => ({
|
||||
data: Buffer.from(responseData),
|
||||
body: Buffer.from(responseData),
|
||||
}));
|
||||
}
|
||||
return response;
|
||||
};
|
||||
|
||||
fakeGot.get = (request, options) => fakeGot(request, { ...options, method: 'GET' });
|
||||
|
||||
Reference in New Issue
Block a user