test: ofetch got

This commit is contained in:
DIYgod 2024-03-26 00:33:36 +08:00
parent 81bf135e96
commit d190d9d700
No known key found for this signature in database
9 changed files with 18 additions and 25 deletions

View File

@ -99,7 +99,7 @@ const parseArticle = (item) =>
res = await got(apiUrl, { headers });
} catch (error) {
// fallback
if (error.name && (error.name === 'HTTPError' || error.name === 'RequestError')) {
if (error.name && (error.name === 'HTTPError' || error.name === 'RequestError' || error.name === 'FetchError')) {
try {
res = await got(item.link, { headers });
} catch {
@ -214,7 +214,7 @@ const parseReactRendererPage = async (res, api, item) => {
return await parseStoryJson(res.data, item);
} catch (error) {
// fallback
if (error.name && (error.name === 'HTTPError' || error.name === 'RequestError')) {
if (error.name && (error.name === 'HTTPError' || error.name === 'RequestError' || error.name === 'FetchError')) {
return {
title: item.title,
link: item.link,

View File

@ -56,7 +56,7 @@ async function handler() {
item.description = content('#fontzoom').html();
return item;
} catch (error) {
if (error.name === 'HTTPError') {
if (error.name === 'HTTPError' || error.name === 'FetchError') {
item.description = error.message;
return item;
}

View File

@ -29,7 +29,7 @@ const parseItems = (list, tryGet) =>
});
data = response.data;
} catch (error) {
if (error instanceof got.HTTPError && error.response.statusCode === 404) {
if ((error.name === 'HTTPError' || error.name === 'FetchError') && error.response.statusCode === 404) {
logger.error(`Error parsing article ${item.link}: ${error.message}`);
return item;
}

View File

@ -72,7 +72,7 @@ const webFetch = (url) =>
try {
return webFetchCb(await got(url));
} catch (error) {
if (error.name === 'HTTPError' && error.response.statusCode === 404) {
if ((error.name === 'HTTPError' || error.name === 'FetchError') && error.response.statusCode === 404) {
return '404';
}
throw error;

View File

@ -13,7 +13,7 @@ export default async (ctx) => {
try {
response = await got(apiUrl);
} catch (error) {
if (error.name === 'HTTPError' && error.response.statusCode === 404) {
if ((error.name === 'HTTPError' || error.name === 'FetchError') && error.response.statusCode === 404) {
throw new Error('该公众号不存在,有关如何获取公众号 id详见 https://docs.rsshub.app/routes/new-media#wei-xin-gong-zhong-hao-feeddd-lai-yuan');
}
throw error;

View File

@ -32,7 +32,7 @@ async function loadContent(link) {
response = await got.get(link);
} catch (error) {
// 如果网络问题 直接出错
if (error.name && (error.name === 'HTTPError' || error.name === 'RequestError')) {
if (error.name && (error.name === 'HTTPError' || error.name === 'RequestError' || error.name === 'FetchError')) {
description = 'Page 404 Please Check!';
}
return { description };

View File

@ -34,7 +34,7 @@ describe('got', () => {
try {
await got.get('http://rsshub.test/testRerty');
} catch (error: any) {
expect(error.name).toBe('HTTPError');
expect(error.name).toBe('FetchError');
}
// retries
@ -52,11 +52,7 @@ describe('got', () => {
test: 1,
},
});
expect(response1.statusCode).toBe(200);
// @ts-expect-error custom property
expect(response1.status).toBe(200);
expect(response1.body).toBe('{"code": 0}');
// @ts-expect-error custom property
expect(response1.data.code).toBe(0);
});
@ -77,7 +73,7 @@ describe('got', () => {
await got.get('http://rsshub.test/timeout');
throw new Error('Timeout Invalid');
} catch (error: any) {
expect(error.name).toBe('RequestError');
expect(error.name).toBe('FetchError');
}
expect(loggerSpy).toHaveBeenCalledWith(expect.stringContaining('http://rsshub.test/timeout'));

View File

@ -164,7 +164,7 @@
"js-beautify": "1.15.1",
"lint-staged": "15.2.2",
"mockdate": "3.0.5",
"nock": "13.5.4",
"nock": "14.0.0-beta.5",
"prettier": "3.2.5",
"remark-parse": "11.0.0",
"supertest": "6.3.4",

View File

@ -344,8 +344,8 @@ devDependencies:
specifier: 3.0.5
version: 3.0.5
nock:
specifier: 13.5.4
version: 13.5.4
specifier: 14.0.0-beta.5
version: 14.0.0-beta.5
prettier:
specifier: 3.2.5
version: 3.2.5
@ -2072,7 +2072,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
eslint: 8.57.0
jschardet: 3.1.0
jschardet: 3.1.2
lodash: 4.17.21
utf8: 3.0.0
transitivePeerDependencies:
@ -5963,8 +5963,8 @@ packages:
resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
dev: false
/jschardet@3.1.0:
resolution: {integrity: sha512-MND0yjRsoQ/3iFXce7lqV/iBmqH9oWGUTlty36obRBZjhFDWCLKjXgfxY75wYfwlW7EFqw52tyziy/q4WsQmrA==}
/jschardet@3.1.2:
resolution: {integrity: sha512-mw3CBZGzW8nUBPYhFU2ztZ/kJ6NClQUQVpyzvFMfznZsoC///ZQ30J2RCUanNsr5yF22LqhgYr/lj807/ZleWA==}
engines: {node: '>=0.1.90'}
dev: true
@ -6886,15 +6886,12 @@ packages:
lower-case: 1.1.4
dev: false
/nock@13.5.4:
resolution: {integrity: sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==}
engines: {node: '>= 10.13'}
/nock@14.0.0-beta.5:
resolution: {integrity: sha512-u255tf4DYvyErTlPZA9uTfXghiZZy+NflUOFONPVKZ5tP0yaHwKig28zyFOLhu8y5YcCRC+V5vDk4HHileh2iw==}
engines: {node: '>= 18'}
dependencies:
debug: 4.3.4
json-stringify-safe: 5.0.1
propagate: 2.0.1
transitivePeerDependencies:
- supports-color
dev: true
/node-fetch-native@1.6.4: