feat: add more error handling
This commit is contained in:
@@ -29,8 +29,8 @@ describe('requests the "/episodes" route', () => {
|
||||
},
|
||||
);
|
||||
|
||||
expect(response.json()).resolves.toEqual({ success: false });
|
||||
expect(response.status).toBe(404);
|
||||
expect(response.json()).resolves.toEqual({ success: true, result: [] });
|
||||
expect(response.status).toBe(200);
|
||||
});
|
||||
|
||||
it("Anify is disabled, returns no episode list from Anify", async () => {
|
||||
@@ -42,8 +42,8 @@ describe('requests the "/episodes" route', () => {
|
||||
},
|
||||
);
|
||||
|
||||
expect(response.json()).resolves.toEqual({ success: false });
|
||||
expect(response.status).toBe(404);
|
||||
expect(response.json()).resolves.toEqual({ success: true, result: [] });
|
||||
expect(response.status).toBe(200);
|
||||
});
|
||||
|
||||
it("with list of episodes from Consumet", async () => {
|
||||
@@ -100,7 +100,7 @@ describe('requests the "/episodes" route', () => {
|
||||
it("with no episodes from all sources", async () => {
|
||||
const response = await app.request("/episodes/-1");
|
||||
|
||||
expect(response.json()).resolves.toEqual({ success: false });
|
||||
expect(response.status).toBe(404);
|
||||
expect(response.json()).resolves.toEqual({ success: true, result: [] });
|
||||
expect(response.status).toBe(200);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -33,13 +33,13 @@ const route = createRoute({
|
||||
},
|
||||
description: "Returns a list of episodes",
|
||||
},
|
||||
404: {
|
||||
500: {
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: ErrorResponseSchema,
|
||||
},
|
||||
},
|
||||
description: "Returns an empty list because episodes not found",
|
||||
description: "Error fetching episodes",
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -49,7 +49,7 @@ const app = new OpenAPIHono<Env>();
|
||||
app.openapi(route, async (c) => {
|
||||
const aniListId = Number(c.req.param("aniListId"));
|
||||
|
||||
const episodes = await fetchFromMultipleSources([
|
||||
const { result: episodes, errors } = await fetchFromMultipleSources([
|
||||
() => {
|
||||
const isAnifyEnabled = readEnvVariable<boolean>(c.env, "ENABLE_ANIFY");
|
||||
return getEpisodesFromAnify(isAnifyEnabled, aniListId);
|
||||
@@ -64,13 +64,13 @@ app.openapi(route, async (c) => {
|
||||
),
|
||||
]);
|
||||
|
||||
if (!episodes) {
|
||||
return c.json(ErrorResponse, { status: 404 });
|
||||
if (errors?.length > 0) {
|
||||
return c.json(ErrorResponse, { status: 500 });
|
||||
}
|
||||
|
||||
return c.json({
|
||||
success: true,
|
||||
result: episodes,
|
||||
result: episodes ?? [],
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user