Skip to content

Commit bed269c

Browse files
committed
add elysia error handler
1 parent 6a71773 commit bed269c

File tree

1 file changed

+35
-5
lines changed

1 file changed

+35
-5
lines changed

src/http-exception-plugin.ts

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,40 @@ export const httpExceptionPlugin = () =>
2626
return error.toBody();
2727
}
2828

29-
if (code === 'NOT_FOUND') {
30-
const { code: httpCode, statusCode, message } = JSON.parse(HttpError.NOT_FOUND);
31-
set.headers['content-type'] = 'application/json; charset=utf-8';
32-
set.status = parseInt(httpCode, 10);
33-
return { statusCode, message };
29+
set.headers['content-type'] = 'application/json; charset=utf-8';
30+
31+
switch (code) {
32+
case 'INVALID_COOKIE_SIGNATURE': {
33+
const { code: httpCode, statusCode } = JSON.parse(HttpError.BAD_REQUEST);
34+
const message = 'Invalid cookie signature';
35+
set.status = parseInt(httpCode, 10);
36+
return { statusCode, message };
37+
}
38+
39+
case 'VALIDATION':
40+
case 'PARSE': {
41+
const { code: httpCode, statusCode, message } = JSON.parse(HttpError.BAD_REQUEST);
42+
set.status = parseInt(httpCode, 10);
43+
return { statusCode, message };
44+
}
45+
46+
case 'NOT_FOUND': {
47+
const { code: httpCode, statusCode, message } = JSON.parse(HttpError.NOT_FOUND);
48+
set.status = parseInt(httpCode, 10);
49+
return { statusCode, message };
50+
}
51+
52+
case 'INVALID_FILE_TYPE': {
53+
const { code: httpCode, statusCode } = JSON.parse(HttpError.UNSUPPORTED_MEDIA_TYPE);
54+
const message = 'Invalid file type';
55+
set.status = parseInt(httpCode, 10);
56+
return { statusCode, message };
57+
}
58+
59+
default: {
60+
const message = error instanceof Error ? error.message : 'Internal server error';
61+
set.status = 500;
62+
return { statusCode: 500, message };
63+
}
3464
}
3565
});

0 commit comments

Comments
 (0)